SocialCrawl

Schema compatibility

How SocialCrawl classifies additive changes, value corrections, format corrections, and breaking changes to a versioned unified response object

Every canonical object is a versioned contract. dev.socialcrawl.post.v1, dev.socialcrawl.author.v1, and the other unified response schemas change in exactly three ways. A fourth kind of change is never applied to a published version.

ClassWhat changesHow you hear about it
AdditiveA new optional field appearsChangelog entry
Value correctionAn existing field carries a corrected value, same name, same typeChangelog entry
Format correctionAn existing field's format or type changesEmail, at least 7 days ahead
BreakingNever applied to a published version, it ships as a new schema idNew schema id

The full field list for each object is browsable under Unified schema. Check there first when you need to know whether the field you depend on is a published .v1 leaf or an ext.* addition. That distinction is what the classes below turn on.

Additive changes

A new field is always optional: either nullable and optional, or namespaced under ext.*. Old clients are unaffected because the field may be absent. This is the default, and it covers all enrichment.

Value corrections

The value filling an existing field changes because it was wrong: a misplaced leaf, a wrong source path, or a stale mapping. The contract does not change, same field and same type. A value correction makes existing parsers work better with no code change, so it ships with a changelog entry and no direct notice.

Format and type corrections

An existing field's format or type changes. The timestamp dialect migration is the one case in the current schema program.

A format change can break a parser that assumed the old format. Affected customers get an email notice at least 7 days before it ships, showing both the old format and the new one.

What is never done to a published version

Removing a field, renaming a field, changing a field's type, and making an optional field required are never done to a published .vN. The replacement path is always the same:

  • Keep the old field, marked deprecated.
  • Add the new field alongside it.
  • Mint a new schema id such as dev.socialcrawl.post.v2.

An automated compatibility check blocks any release that removes, retypes, or newly requires a published field.

Which changes count as breaking

BreakingNot breaking
Removing a fieldAdding an optional field
Renaming a fieldAdding a value to an open enum
Changing a field's typeLoosening a constraint
Tightening a constraint, such as optional to requiredAdding a new object
Narrowing an enum

Next steps

On this page