Skip to content

Available now

Forward compatibility ​

SOM's compatibility policy lets a 1.x producer add optional payload fields and enum values, and requires consumers to tolerate them. The bus is strict on the envelope and generous on the payload:

  • A message that says som_version: "1.0.0" claims to conform to 1.0, and is held to the 1.0 schema in full.
  • A message from a newer 1.x producer (for example 1.1.0) may carry payload fields and enum values that 1.0 doesn't know. The bus accepts it and lists them under tolerated, with the same rule ids a 1.0.0 message would be refused with: <family>.additionalProperties and <family>.enum.
  • The envelope is never relaxed, whatever the version.
  • A message from before 1.0 is refused (som_version.pre_1_0), and so is one from 2.0 or later (som_version.unsupported_major).
  • A message_type with no 1.0 schema is accepted with the envelope checked and the payload passed through (payload.unvalidated).

Consumers must ignore message types and extensions they don't recognise, and must not branch on som_version.

SOM is an open standard maintained by the SOM working group. This service is not endorsed by it.