HomeEE · Integrations › API contracts & versioning

API contracts & versioning

Purpose: Keep AEM stable as both an API consumer and an API provider while upstreams and consumers evolve.

Who this page is for

AudienceWhy it matters to you
Backend engineersBoth sides of every contract
Tech leadsChange coordination

AEM as consumer

AEM as provider

Your exported JSON (JSON delivery) and CF APIs are contracts consumed by apps you don't control:

RuleMechanism
Additive-only evolutionModel/exporter review gate; new fields optional
Breaking changes = new versionSelector-versioned (.model.v2.json) or parallel model; old version sunset with notice
Published samples per versionChecked-in JSON fixtures — they double as regression tests
Know your consumersConsumer register (who calls what) — you cannot deprecate what you cannot enumerate
Stability signalsRelease notes flag JSON-shape changes (versioning)

The coordination artefact

For each contract: a one-page spec (fields, types, nullability, examples, version, owner, consumers) in version control. OpenAPI where the consumer count justifies it; a disciplined markdown table where it doesn't. The artefact's existence matters more than its format — it is what turns "the app broke" into a 10-minute diff.

Quick navigation