Changelog

Versioning and changes

What version 1 is. The files of the stream's reference whose names carry v1 (the protocol feed_stream.v1.json, the frames feed_frame.v1.json and their JSON Schemas); every path under https://api.quanor.com/v1 (and the same paths under /api/v1); a subscribe's "v": 1; the /v1/webhooks deliveries' bodies (their v), until that route is removed; a webhook endpoint's messages (webhook_message.v1.json, its JSON Schema and their v); and each event type's JSON Schemas (served at https://api.quanor.com/api/docs/events and listed by /v1/event-types), versioned type by type.

Additive: made within version 1 at any time, and listed in the changelog:

A client written for version 1 ignores a field, a type or a kind it does not know; reads a value it does not know as unknown, never as an error; reconnects with backoff on a close code it does not know; and relies on no request being refused.

Event types are versioned one by one. Each type has a schema version (its version in /v1/event-types, the v<n> of its schemas' files). Within a type's version, a new optional field in its data, a new value of an open field and a new type in a family an endpoint names by its wildcard are additive; removing or retyping a field of its data, or changing what one means, makes the type's next version. An endpoint is sent each type at the version it holds (event_type_versions: the version current when the type was named) until you move it — by a writable event_type_versions on PATCH /v1/webhook-endpoints/{webhook_endpoint_id}, built with the first type that has a second version — and both versions are sent for at least 90 days from the next version's announcement. payload, track, state, reason and every other value that names a kind are open: read one you do not know as unknown.

Breaking: made only with notice, or in a new version. Each of these can break a client that relies on what the API does today:

Content is not the contract. Which announcements, items and parts there are, what an analysis says, which of the values the reference names a field takes, and how fast a change reaches a listener follow the data and how Quanor analyses it, and change without notice.

Notice. A breaking change is announced to the holders of the keys in use, and in the changelog, with the date it takes effect and, where the old and the new can be served side by side, an overlap, stated in the announcement, during which both work. Over HTTP, what is to be removed is answered with Deprecation and Sunset headers from the announcement until it is removed. The stream has no headers after its upgrade: its notice is the announcement and its changelog entry, dated before the change takes effect.

Named exceptions. A change needed for security, for a legal or regulatory reason — inside information, who may see a company (its audience) — or by the terms of a data licence takes effect at once. It is listed in the changelog when it is made, and announced after.

Generated clients. The stream's JSON Schemas list the values version 1 names and admit others, and admit a frame or message type they do not name. A client generated from an earlier copy is not updated by that: generate from the served schemas, and keep the generated code reading a value it does not know as unknown. The OpenAPI document lists two values the API sends as closed enums — a webhook delivery's event and analysis_type — which a client generated from it reads the same way: a value it does not list is unknown. A webhook endpoint's events are an open union: each type's event, and UnknownEvent for a type the document does not list, with no discriminator to close it, so a client generated from it reads a type added later as an UnknownEvent, which it skips, and never refuses the message.

Changelog

What changed in version 1 from the feed's release on 2026-10-12, newest first, by the UTC date it took effect, and whether it was additive, breaking or a named exception (Versioning and changes). Fixes that made the API keep what its reference already said are listed from 2026-10-20 on.