--- $schema: "https://json-schema.org/draft/2020-12/schema" $id: "https://example.com/schemas/gecko-trace.schema.json" $title: Gecko Trace-Events Specification $comment: > A definition file describing traces collected by Gecko. type: object description: Top-level container object. required: [events] additionalProperties: false properties: events: type: object description: Map of event identifiers => event definition objects. minProperties: 1 propertyNames: type: string pattern: "^[a-z][a-z0-9._]*$" description: Lower-snake-case dotted event identifier additionalProperties: false patternProperties: "^[a-z][a-z0-9._]*$": { $ref: "#/$defs/event" } $defs: event: type: object required: [description] properties: display_name: type: string description: > Display name that appears in Telemetry. If omitted the enclosing map key is used. description: type: string minLength: 1 description: Human-readable description of the event. inherits_from: type: array items: type: string pattern: "^[a-z][a-z0-9._]*$" minItems: 1 uniqueItems: true description: Other events this one extends. attributes: type: object minProperties: 1 description: Event-specific attribute declarations. propertyNames: type: string pattern: "^[a-z][a-z0-9._]*$" additionalProperties: false patternProperties: "^[a-z][a-z0-9._]*$": { $ref: "#/$defs/attribute" } additionalProperties: false attribute: type: object required: [type, description] properties: type: description: > Allowed value type(s) for this attribute (scalar or array of scalars). oneOf: # single primitive - $ref: "#/$defs/attributeValue" # array of ONE primitive - const: array items: type: object properties: type: $ref: "#/$defs/attributeValue" required: [type] additionalProperties: false description: type: string minLength: 1 description: Human-readable description of the attribute. additionalProperties: false if: properties: type: { const: array } then: required: [items] else: properties: items: false attributeValue: $anchor: attributeValue type: string enum: ["boolean", "integer", "string"]