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
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