Versioning¶
The webhook payload is versioned in lockstep with the Metrics Catalog.
Version field¶
Every payload carries schema_version in the envelope. The current
version is v1.
Compatibility guarantees within a major version¶
Within a single major version (e.g. all v1.x):
- No breaking changes — fields are not renamed, removed, or re-typed.
- Additive only — new metrics and new groups may be introduced. Consumers must ignore unknown fields.
- Nullability is stable — a field documented as non-nullable in v1.0 will remain non-nullable for the rest of v1.x.
Breaking changes (v1 → v2)¶
A new major version means at least one of:
- A field was renamed, removed, or re-typed.
- A field's nullability tightened.
- The envelope shape changed.
When a major bump is planned:
- The new version is announced in the changelog at least 30 days before the cutover.
- During the transition window, both
v1andv2deliveries are available — subscribers opt in tov2per subscription. - After the window,
v1deliveries stop. Existingv1subscriptions are auto-migrated tov2only if no fields they depend on changed meaning; otherwise they are paused and surfaced for manual migration.
Pinning¶
Subscriptions can pin to a specific schema version on creation:
json
{ "schema_version": "v1", "...": "..." }
Omitting the field opts you in to the latest stable version.