pings.yaml
file¶
Documentation for the pings.yaml
file has moved to custom pings in the Glean user documentation.
JSON Schema¶
There is a formal schema for validating pings.yaml
files, included in its
entirety below:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
---
$schema: http://json-schema.org/draft-07/schema#
title: Pings
description: |
Schema for the pings.yaml files for Mozilla's Glean telemetry SDK.
The top-level of the `pings.yaml` file has a key defining the name of each
ping. The values contain metadata about that ping. Ping names must be
kebab-case per https://docs.telemetry.mozilla.org/cookbooks/new_ping.html
$id: moz://mozilla.org/schemas/glean/pings/2-0-0
definitions:
dotted_snake_case:
type: string
pattern: "^[a-z_][a-z0-9_]{0,29}(\\.[a-z_][a-z0-9_]{0,29})*$"
maxLength: 40
# Prior to version 2.0.0 of the schema, special ping names with underscores
# were also supported.
kebab_case:
type: string
pattern: "^[a-z][a-z0-9-]{0,29}$"
type: object
propertyNames:
allOf:
- anyOf:
- $ref: "#/definitions/kebab_case"
- enum: ['$schema', 'no_lint']
- not:
enum: ['all-pings']
properties:
$schema:
type: string
format: url
no_lint:
title: Lint checks to skip globally
description: |
This parameter lists any lint checks to skip for this whole file.
type: array
items:
type: string
additionalProperties:
type: object
properties:
description:
title: Description
description: |
**Required.**
A textual description of the purpose of this ping and what it contains.
Descriptions may contain [markdown
syntax](https://www.markdownguide.org/basic-syntax/).
type: string
metadata:
title: Metadata
description: |
Additional metadata about this ping. Currently limited to a list of
tags.
type: object
properties:
tags:
title: Tags
description: Which tags are specified for this ping.
type: array
items:
type: string
maxLength: 80
precise_timestamps:
title: Precise Timestamps
description: |
When `true` Glean uses millisecond-precise timestamps for
the ping's start/end time (the default).
When `false` Glean uses minute-precise timestamps for
the ping's start/end time.
type: boolean
include_info_sections:
title: Include Info Sections
description: |
When `true`, assemble and include the `client_info` and `ping_info`
sections in the ping on submission.
When `false`, omit the `client_info` and `ping_info` sections when
assembling the ping on submission.
Defaults to `true`.
Interaction with `include_client_id`: `include_client_id` only takes
effect when `metadata.include_info_sections` is `true`.
type: boolean
follows_collection_enabled:
title: Follows Collection Enabled
description: |
Whether this ping follows the built-in collection enabled flag.
Setting this to `false` always sets `enabled=false` too.
type: boolean
ping_schedule:
title: Ping Schedule
description: |
An optional array of ping names. When one of the listed pings is
sent, then this ping will also be sent. A ping cannot list its own
name in `ping_schedule`.
type: array
items:
type: string
maxLength: 30
default: {}
include_client_id:
title: Include client id
description: |
**Required.**
When `true`, include the `client_id` value in the ping.
Interaction with `metadata.include_info_sections`: `include_client_id`
only takes effect when `metadata.include_info_sections` is `true`.
type: boolean
uploader_capabilities:
title: Uploader Capabilities
description: |
**Optional.**
An optional list of capability strings that the ping uploader must be
capable of supporting in order to upload this ping.
These are supplied exactly as defined (including order) to the uploader
every time upload is attempted for this ping.
The uploader must only attempt upload if it satisfies the supplied
capabilities. If not, it must refuse to upload the ping.
type: [array, "null"]
items:
type: string
send_if_empty:
title: Send if empty
description: |
When `false` a ping is sent only if it contains data (the default).
When `true` a ping is sent even if it contains no data.
type: boolean
notification_emails:
title: Notification emails
description: |
**Required.**
A list of email addresses to notify for important events with the
ping or when people with context or ownership for the ping need to
be contacted.
type: array
minItems: 1
items:
type: string
format: email
bugs:
title: Related bugs
description: |
**Required.**
A list of bugs (e.g. Bugzilla and Github) that are relevant to this
ping, e.g., tracking its original implementation or later changes to
it.
It must be a URI to a bug page in a tracker.
Prior to version 2.0.0 of the schema, bugs could also be integers.
type: array
minItems: 1
items:
type: string
format: uri
data_reviews:
title: Review references
description: |
**Required.**
A list of URIs to any data collection reviews relevant to the ping.
type: array
items:
type: string
format: uri
reasons:
title: The reasons this ping can be sent.
description: |
A list of reasons that the ping might be triggered. Sent in the ping's
`ping_info.reason` field.
Specified as a mapping from reason codes (which are short strings), to
a textual description of the reason.
type: object
propertyNames:
type: string
maxLength: 30
additionalProperties:
type: string
enabled:
title: Whether or not this ping is enabled
description: |
**Optional.**
When `true`, the ping will be sent as usual.
When `false`, the ping will not be sent, but the data will continue to
be collected and will be cleared when the ping is submitted.
Defaults to `true` if omitted.
type: boolean
no_lint:
title: Lint checks to skip
description: |
This parameter lists any lint checks to skip for this metric only.
type: array
items:
type: string
required:
- description
- include_client_id
- bugs
- notification_emails
- data_reviews
additionalProperties: false