Schema stability (read first)

CWR-JSON format version 1.00 / revision 0 remains the current interchange schema. Field names, object shapes, and JSON Schema (cwr-json-schema-v1.0.schema.json) are frozen unless this changelog records an explicit format bump.

Change typeAffects your integration?
Format (new works[] fields, renamed properties, new required fields)Yes — plan migration; we will announce here in advance
Documentation (terminology, pipeline description, examples)No — same JSON output
Validation (stricter JSON Schema, lookup tables, semantic rules)Maybe — same field shapes; hand-edited JSON may fail where it previously passed

Integrators (including downstream export pipelines) should treat this page as the source of truth for format and validation changes. Contact the SPF committee for advance notice of any planned format revision.


2026-06-17 — Society code normalization (no format bump)

No change to CWR-JSON v1.00 r0 field shapes.

Validation 1.1.2 (patch)

  • Optional normalization strips empty and 000 society codes on shares before validation.
  • Parser output omits blank/000 society fields (matches CWR EDI semantics).

2026-06-15 — Validation 1.1.2 (no format bump)

No change to CWR-JSON v1.00 r0 field shapes.

Validation 1.1.2

  • Lookup revision r1: CISAC society, character set, language, revocation, and anomalous-work enums in published lookup + JSON Schema.
  • JSON Schema validates shares[].society, header.characterSet, revocation.reason, flags.anomalousReason.
  • EDI validators on npm package (validateCwrEdi, etc.) for raw CWR text before parse — see package README.

2026-06-03 — Validation UX & normalization (no format bump)

No change to CWR-JSON v1.00 r0 field shapes. Validation ergonomics and optional pre-validation cleanup.

Validation 1.1.1

  • Optional normalization before validation: compact ISWC → T-NNNNNNNNN-C, split combined own/coll territory rows, strip invalid own on sub-publishers.
  • Validation results may include warnings for auto-fixed items; strict checks on raw exports can skip normalization.
  • Clearer error output: rule codes and deduplicated messages instead of repeated [if] / [maxItems] noise.
  • TIS lookup sourced from CISAC TIS export (see TIS Territory Codes and the published lookup table).

2026-06-03 — Validation 1.1.0 (no format bump)

No change to CWR-JSON v1.00 r0 field shapes. Stricter JSON Schema and semantic validation only.

Validation 1.1.0

  • Published lookup table (cwr_lookup_data_types_v1.0_r0.json): role codes, title types, identifier sources, full TIS table (CISAC groups + ISO 3166-1 numeric).
  • JSON Schema (cwr-json-schema-v1.0.schema.json) injects lookup enums and field patterns.
  • Semantic rules in strict mode: TIS include/exclude overlap, sub-publisher no own, publisher own only for E, unique submitterWorkNumber per file.
  • Advisory validation mode unchanged (warnings without failing).
  • See Schema Validation and TIS Territory Codes.

2026-06-03 — Documentation errata (no format bump)

No change to CWR-JSON v1.0 output. Specification and validation documentation only.

  • Removed incorrect “CWR 3.x” wording throughout the spec. There is no separate CWR 3.x EDI format; features such as publisher relinquishment come from CWR 2.2 Revision 3 (PWR records).
  • Pipeline description aligned with the reference implementation: buildWorkModelprojectCanonicalFromModelschemaV1.convert() (see Introduction).
  • Schema Validation updated: published schema and lookup URLs, structural vs semantic validation rules.

Ownership vs collection territory placement (see Territories & Shares)

  • shareTypes[].type: "own" (from SWR / OWR / SPU / OPU) is not scoped to TIS codes. It is stored in a territories[] entry with territory.include: [] and territory.exclude: [].
  • shareTypes[].type: "coll" (from SWT / OWT / SPT / OPT) is scoped to TIS include/exclude on the same or separate territories[] entries.
  • Sub-publishers (SE, AM, PA) do not receive ownership shares in JSON — only original publishers (E) emit own. Sub-publishers may have coll territories only.
  • Integrators must not assume own and coll share the same territory.include array, or that sub-publishers mirror SPU ownership percentages.

v1.00 r0 — Initial Release (current format)

First public specification draft for CWR-JSON v1.0.

Architecture

  • Two-phase mapper: buildWorkModelprojectCanonicalFromModel
  • PublisherRegistry for publisher chain and PWR resolution
  • Territory helpers: upsertOwnTerritory, upsertCollectionTerritory

Format

Supported CWR record types (→ JSON)
HDR NWR REV ALT NAT NWN NOW NPN SPU OPU SWR OWR PWR SWT OWT SPT OPT REC ARI MSG

Data model

  • parties: writers at top level; publishers in representedBy[]; unlinked E publishers may appear at top level
  • parties[].territories[]: shareTypes own / coll
  • recordings[] with ISRC dedupe and releases[].identifiers (ean, catalogNumber)
  • GEMA ARI (035/GW) → roleSplitM / roleSplitT on CA writers
  • NWN / NOW / NPNnameDomestic / nameScript
  • CWR 2.2 Rev3 PWR relinquishment on publisher participants

HDR → header (populated fields)
senderIdentifier, senderName, creationDate, creationTime, version (CWR EDI version, e.g. "2.1"), softwarePackage