Additive changes ship anytime
We add — without a version bump — new endpoints, new optional request fields, new response fields, new enum values, and new webhook event types. Integrations MUST be tolerant of these:- Ignore unknown response fields rather than failing.
- Do not assume the response shape is exhaustive.
- Treat unknown webhook
X-VisIQ-Event-Typevalues as no-ops.
Breaking changes get a new version
A breaking change — removing or renaming a field, changing a type or a default, tightening validation, or changing an endpoint’s semantics — ships under a new dated version. The previous version continues to function for a 12-month deprecation window from the announcement, after which it is retired. During a deprecation window:- Both versions are served; the version header reflects the one in effect.
- Deprecated fields/endpoints are documented as such with the sunset date.
- We notify partner accounts ahead of retirement.
Stability guarantees
- Money is always integer cents.
- Key formats are stable: provisioning keys are
vqp_…; minted sub-tenant harness keys arevq_prod_…. X-VisIQ-Event-Idis a stable idempotency handle — always dedupe on it.- The webhook signature scheme (
t=<ts>,v1=<hmac-sha256(t + "." + body)>) is a versioned contract; any change ships as a new signature version, never a silent swap.