Changelog
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 type | Affects 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
000society codes on shares before validation. - Parser output omits blank/
000society 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 combinedown/collterritory rows, strip invalidownon 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, publisherownonly forE, uniquesubmitterWorkNumberper 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 (
PWRrecords). - Pipeline description aligned with the reference implementation:
buildWorkModel→projectCanonicalFromModel→schemaV1.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"(fromSWR/OWR/SPU/OPU) is not scoped to TIS codes. It is stored in aterritories[]entry withterritory.include: []andterritory.exclude: [].shareTypes[].type: "coll"(fromSWT/OWT/SPT/OPT) is scoped to TIS include/exclude on the same or separateterritories[]entries.- Sub-publishers (
SE,AM,PA) do not receive ownership shares in JSON — only original publishers (E) emitown. Sub-publishers may havecollterritories only. - Integrators must not assume
ownandcollshare the sameterritory.includearray, or that sub-publishers mirrorSPUownership percentages.
v1.00 r0 — Initial Release (current format)
First public specification draft for CWR-JSON v1.0.
Architecture
- Two-phase mapper:
buildWorkModel→projectCanonicalFromModel PublisherRegistryfor publisher chain and PWR resolution- Territory helpers:
upsertOwnTerritory,upsertCollectionTerritory
Format
- JSON encoding of CWR 2.x work-registration records (primary target: CWR 2.2 Revision 3 EDI)
- JSON Schema: cwr-json-schema-v1.0.schema.json (draft-07)
- Lookup table: cwr_lookup_data_types_v1.0_r0.json
- Optional root
$schemafor interchange (not emitted by Playground today)
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 inrepresentedBy[]; unlinkedEpublishers may appear at top levelparties[].territories[]:shareTypesown/collrecordings[]with ISRC dedupe andreleases[].identifiers(ean,catalogNumber)- GEMA
ARI(035/GW) →roleSplitM/roleSplitTonCAwriters NWN/NOW/NPN→nameDomestic/nameScript- CWR 2.2 Rev3
PWRrelinquishment on publisher participants
HDR → header (populated fields)
senderIdentifier, senderName, creationDate, creationTime, version (CWR EDI version, e.g. "2.1"), softwarePackage