{"$schema":"https://json-schema.org/draft/2020-12/schema","oneOf":[{"type":"object","properties":{"schemaVersion":{"type":"string","const":"der-adoption-ledger-v1"},"methodVersion":{"type":"string","const":"der-adoption-reconciliation-v1"},"editionVersion":{"type":"string","minLength":1},"generatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"sourceUpdatedAt":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"sourceLabel":{"type":"string","minLength":1},"sourceUrls":{"type":"object","properties":{"aemoDownloads":{"type":"string","format":"uri"},"aemoGuidelines":{"type":"string","format":"uri"},"aemoLegal":{"type":"string","format":"uri"},"cerData":{"type":"string","format":"uri"},"cerCopyright":{"type":"string","format":"uri"}},"required":["aemoDownloads","aemoGuidelines","aemoLegal","cerData","cerCopyright"],"additionalProperties":false},"sourceReceipts":{"minItems":2,"type":"array","items":{"type":"object","properties":{"role":{"type":"string","enum":["aemo-derr","cer-solar-installations","cer-solar-capacity","cer-battery-installations","cer-battery-capacity"]},"receiptId":{"type":"string","minLength":1},"fileName":{"type":"string","minLength":1},"retrievalUrl":{"type":"string","format":"uri"},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"retrievedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"reportingDate":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"sourceRevision":{"type":"string","minLength":1}},"required":["role","receiptId","fileName","retrievalUrl","sha256","retrievedAt","reportingDate","sourceRevision"],"additionalProperties":false}},"reuseReviews":{"type":"object","properties":{"aemo":{"type":"object","properties":{"status":{"type":"string","const":"approved"},"reviewedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"scope":{"type":"string","const":"attributed-derived-postcode-observations-and-reconciliation"}},"required":["status","reviewedAt","scope"],"additionalProperties":false},"cer":{"type":"object","properties":{"status":{"type":"string","const":"approved"},"reviewedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"scope":{"type":"string","const":"attributed-derived-postcode-observations-and-reconciliation"}},"required":["status","reviewedAt","scope"],"additionalProperties":false}},"required":["aemo","cer"],"additionalProperties":false},"freshnessPolicy":{"type":"object","properties":{"aemoDerrMaxAgeDays":{"type":"number","const":120},"cerPostcodeMaxAgeDays":{"type":"number","const":62},"editionRule":{"type":"string","const":"stale-if-either-source-exceeds-threshold"}},"required":["aemoDerrMaxAgeDays","cerPostcodeMaxAgeDays","editionRule"],"additionalProperties":false},"sourceFreshness":{"type":"object","properties":{"aemo":{"type":"object","properties":{"reportingDate":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"ageDays":{"type":"integer","minimum":0,"maximum":120},"maxAgeDays":{"type":"number","const":120},"status":{"type":"string","const":"current"}},"required":["reportingDate","ageDays","maxAgeDays","status"],"additionalProperties":false},"cer":{"type":"object","properties":{"reportingDate":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"ageDays":{"type":"integer","minimum":0,"maximum":62},"maxAgeDays":{"type":"number","const":62},"status":{"type":"string","const":"current"}},"required":["reportingDate","ageDays","maxAgeDays","status"],"additionalProperties":false}},"required":["aemo","cer"],"additionalProperties":false},"status":{"type":"string","const":"available"},"summary":{"type":"object","properties":{"observationCount":{"type":"integer","minimum":2,"maximum":9007199254740991},"postcodeObservationCount":{"type":"integer","minimum":2,"maximum":9007199254740991},"privacySuppressedObservationCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"compatiblePairCount":{"type":"integer","minimum":1,"maximum":9007199254740991}},"required":["observationCount","postcodeObservationCount","privacySuppressedObservationCount","compatiblePairCount"],"additionalProperties":false},"coverage":{"type":"object","properties":{"coverageBasis":{"type":"string","const":"source-defined-observation-coverage"},"nationalCompletenessClaimed":{"type":"boolean","const":false},"statesRepresented":{"minItems":1,"type":"array","items":{"type":"string","enum":["ACT","NSW","NT","QLD","SA","TAS","VIC","WA"]}},"statesNotRepresented":{"type":"array","items":{"type":"string","enum":["ACT","NSW","NT","QLD","SA","TAS","VIC","WA"]}},"validPostcodeCount":{"type":"integer","minimum":1,"maximum":9007199254740991},"technologies":{"minItems":1,"type":"array","items":{"type":"string","enum":["solar-pv","battery"]}},"sourceSeries":{"minItems":2,"maxItems":2,"type":"array","items":{"type":"string","enum":["aemo-derr-submitted-stock","cer-sres-certificate-approved"]}},"receiptRoles":{"minItems":2,"type":"array","items":{"type":"string","enum":["aemo-derr","cer-solar-installations","cer-solar-capacity","cer-battery-installations","cer-battery-capacity"]}}},"required":["coverageBasis","nationalCompletenessClaimed","statesRepresented","statesNotRepresented","validPostcodeCount","technologies","sourceSeries","receiptRoles"],"additionalProperties":false},"observations":{"minItems":2,"type":"array","items":{"type":"object","properties":{"observationId":{"type":"string","minLength":1},"sourceSeries":{"type":"string","enum":["aemo-derr-submitted-stock","cer-sres-certificate-approved"]},"publisher":{"type":"string","enum":["aemo","cer"]},"technology":{"type":"string","enum":["solar-pv","battery"]},"geography":{"type":"object","properties":{"type":{"type":"string","enum":["postcode","state-suppressed-aggregate"]},"code":{"type":"string","minLength":1},"state":{"anyOf":[{"type":"string","enum":["ACT","NSW","NT","QLD","SA","TAS","VIC","WA"]},{"type":"null"}]},"privacySuppressed":{"type":"boolean"}},"required":["type","code","state","privacySuppressed"],"additionalProperties":false},"effectiveDate":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"periodStart":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}]},"measureKind":{"type":"string","enum":["submitted-stock","certificate-approved-monthly-additions","certificate-approved-cumulative"]},"metric":{"type":"string","enum":["installation-records","power-capacity","usable-storage-capacity"]},"unit":{"type":"string","enum":["count","kW","kVA","kWh","kVAh"]},"value":{"type":"number","minimum":0},"measurementBasis":{"type":"string","minLength":1},"revision":{"type":"object","properties":{"sourceReleaseDate":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"revisionLabel":{"type":"string","minLength":1},"provisional":{"type":"boolean"},"mayBackfill":{"type":"boolean"},"policy":{"type":"string","minLength":1}},"required":["sourceReleaseDate","revisionLabel","provisional","mayBackfill","policy"],"additionalProperties":false},"sourceReceiptId":{"type":"string","minLength":1},"limitations":{"minItems":1,"type":"array","items":{"type":"string","minLength":1}}},"required":["observationId","sourceSeries","publisher","technology","geography","effectiveDate","periodStart","measureKind","metric","unit","value","measurementBasis","revision","sourceReceiptId","limitations"],"additionalProperties":false}},"reconciliations":{"minItems":1,"type":"array","items":{"type":"object","properties":{"reconciliationId":{"type":"string","minLength":1},"aemoObservationId":{"type":"string","minLength":1},"cerObservationId":{"type":"string","minLength":1},"geography":{"type":"object","properties":{"type":{"type":"string","enum":["postcode","state-suppressed-aggregate"]},"code":{"type":"string","minLength":1},"state":{"anyOf":[{"type":"string","enum":["ACT","NSW","NT","QLD","SA","TAS","VIC","WA"]},{"type":"null"}]},"privacySuppressed":{"type":"boolean"}},"required":["type","code","state","privacySuppressed"],"additionalProperties":false},"effectiveDate":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"technology":{"type":"string","enum":["solar-pv","battery"]},"metric":{"type":"string","enum":["installation-records","power-capacity","usable-storage-capacity"]},"unit":{"type":"string","enum":["count","kW","kVA","kWh","kVAh"]},"differenceAemoMinusCer":{"type":"number"},"ratioAemoToCer":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"interpretation":{"type":"string","const":"coverage-difference-only"},"caveat":{"type":"string","minLength":1}},"required":["reconciliationId","aemoObservationId","cerObservationId","geography","effectiveDate","technology","metric","unit","differenceAemoMinusCer","ratioAemoToCer","interpretation","caveat"],"additionalProperties":false}}},"required":["schemaVersion","methodVersion","editionVersion","generatedAt","sourceUpdatedAt","sourceLabel","sourceUrls","sourceReceipts","reuseReviews","freshnessPolicy","sourceFreshness","status","summary","coverage","observations","reconciliations"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"string","const":"der-adoption-ledger-v1"},"methodVersion":{"type":"string","const":"der-adoption-reconciliation-v1"},"editionVersion":{"type":"string","minLength":1},"generatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"sourceUpdatedAt":{"type":"null"},"sourceLabel":{"type":"string","minLength":1},"sourceUrls":{"type":"object","properties":{"aemoDownloads":{"type":"string","format":"uri"},"aemoGuidelines":{"type":"string","format":"uri"},"aemoLegal":{"type":"string","format":"uri"},"cerData":{"type":"string","format":"uri"},"cerCopyright":{"type":"string","format":"uri"}},"required":["aemoDownloads","aemoGuidelines","aemoLegal","cerData","cerCopyright"],"additionalProperties":false},"sourceReceipts":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string","enum":["aemo-derr","cer-solar-installations","cer-solar-capacity","cer-battery-installations","cer-battery-capacity"]},"receiptId":{"type":"string","minLength":1},"fileName":{"type":"string","minLength":1},"retrievalUrl":{"type":"string","format":"uri"},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"retrievedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"reportingDate":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"sourceRevision":{"type":"string","minLength":1}},"required":["role","receiptId","fileName","retrievalUrl","sha256","retrievedAt","reportingDate","sourceRevision"],"additionalProperties":false}},"reuseReviews":{"type":"object","properties":{"aemo":{"type":"object","properties":{"status":{"type":"string","enum":["required","approved"]},"reviewedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"scope":{"type":"string","const":"attributed-derived-postcode-observations-and-reconciliation"}},"required":["status","reviewedAt","scope"],"additionalProperties":false},"cer":{"type":"object","properties":{"status":{"type":"string","enum":["required","approved"]},"reviewedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]},"scope":{"type":"string","const":"attributed-derived-postcode-observations-and-reconciliation"}},"required":["status","reviewedAt","scope"],"additionalProperties":false}},"required":["aemo","cer"],"additionalProperties":false},"freshnessPolicy":{"type":"object","properties":{"aemoDerrMaxAgeDays":{"type":"number","const":120},"cerPostcodeMaxAgeDays":{"type":"number","const":62},"editionRule":{"type":"string","const":"stale-if-either-source-exceeds-threshold"}},"required":["aemoDerrMaxAgeDays","cerPostcodeMaxAgeDays","editionRule"],"additionalProperties":false},"sourceFreshness":{"type":"object","properties":{"aemo":{"type":"object","properties":{"reportingDate":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}]},"ageDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"maxAgeDays":{"type":"number","const":120},"status":{"type":"string","enum":["unknown","current","stale"]}},"required":["reportingDate","ageDays","maxAgeDays","status"],"additionalProperties":false},"cer":{"type":"object","properties":{"reportingDate":{"anyOf":[{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},{"type":"null"}]},"ageDays":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"maxAgeDays":{"type":"number","const":62},"status":{"type":"string","enum":["unknown","current","stale"]}},"required":["reportingDate","ageDays","maxAgeDays","status"],"additionalProperties":false}},"required":["aemo","cer"],"additionalProperties":false},"status":{"type":"string","const":"unavailable"},"reason":{"type":"string","enum":["source-not-integrated","edition-version-required","source-observation-invalid","source-receipts-required","reuse-review-required","source-edition-stale","joint-edition-required","no-compatible-reconciliation","unreferenced-source-receipt"]},"message":{"type":"string","minLength":1}},"required":["schemaVersion","methodVersion","editionVersion","generatedAt","sourceUpdatedAt","sourceLabel","sourceUrls","sourceReceipts","reuseReviews","freshnessPolicy","sourceFreshness","status","reason","message"],"additionalProperties":false}],"$id":"https://solaranalytica.com/der-adoption-ledger/schema.json","title":"Solar Analytica Australian DER Adoption and Reconciliation Ledger","description":"A receipt-backed ledger over source-defined Australian coverage that keeps AEMO submitted DER Register stock separate from CER certificate-approved additions and derives comparisons only for compatible state, postcode, effective-date, technology, metric and unit records.","$comment":"No national truth count or composite score is produced. Privacy-suppressed state aggregates never enter reconciliation; CER certificate lag and battery history discontinuity remain explicit."}