Writing a schema for telemetry¶
All Schemas should be a valid JSON schema and can be written in valid YAML or JSON.
At a minimum, valid Jupyter Telemetry Event schema requires have the following keys:
$id
: a URI to identify (and possibly locate) the schema.version
: schema version.title
: name of the schemadescription
: documentation for the schemaproperties
: attributes of the event being emitted.Each property should have the following attributes:
title
: name of the propertydescription
: documentation for this property.categories
: list of types of data being collected
required
: list of required properties.
Here is a minimal example of a valid JSON schema for an event.
$id: event.jupyter.org/example-event
version: 1
title: My Event
description: |
All events must have a name property
type: object
properties:
thing:
title: Thing
categories:
- category.jupyter.org/unrestricted
description: A random thing.
user:
title: User name
categories:
- category.jupyter.org/user-identifier
description: Name of user who initiated event
required:
- thing
- user
Property Categories¶
Each property can be labelled with categories
field. This makes it easier to filter properties based on a category. We recommend that schema authors use valid URIs for these labels, e.g. something like category.jupyter.org/unrestricted
.
Below is a list of common category labels that Jupyter Telemetry recommends using:
category.jupyter.org/unrestricted
category.jupyter.org/user-identifier
category.jupyter.org/user-identifiable-information
category.jupyter.org/action-timestamp