{"$schema":"https://json-schema.org/draft/2020-12/schema","$id":"https://solaranalytica.com/constraint-consequence-ledger/schema.json","title":"Solar Analytica Constraint-to-Consequence Ledger","oneOf":[{"type":"object","additionalProperties":false,"required":["schemaVersion","methodVersion","editionVersion","generatedAt","sourceUpdatedAt","sourceLabel","sourceUrls","sourceReceipts","reuseReview","methodology","status","events"],"properties":{"schemaVersion":{"const":"constraint-consequence-ledger-v1"},"methodVersion":{"const":"constraint-consequence-ledger-v1"},"editionVersion":{"type":"string","minLength":1},"generatedAt":{"type":"string","format":"date-time"},"sourceUpdatedAt":{"type":"string","format":"date-time"},"sourceLabel":{"const":"Australian Energy Market Operator (AEMO)"},"sourceUrls":{"type":"object","additionalProperties":false,"required":["congestionInformation","statisticalReports","constraintFaq","mmsDataModel","nemwebCurrent"],"properties":{"congestionInformation":{"type":"string","format":"uri"},"statisticalReports":{"type":"string","format":"uri"},"constraintFaq":{"type":"string","format":"uri"},"mmsDataModel":{"type":"string","format":"uri"},"nemwebCurrent":{"type":"string","format":"uri"}}},"sourceReceipts":{"type":"array","minItems":1,"uniqueItems":true,"items":{"type":"object","additionalProperties":false,"required":["role","receiptId","fileName","retrievalUrl","sha256","retrievedAt","contentLengthBytes"],"properties":{"role":{"enum":["dispatch-constraint","generic-constraint","dispatch-interconnector","interconnector-orientation","dispatch-price","dispatch-load","published-consequence"]},"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"},"contentLengthBytes":{"type":"integer","minimum":1}}}},"reuseReview":{"type":"object","additionalProperties":false,"required":["status","reviewedAt","scope"],"properties":{"status":{"const":"approved"},"reviewedAt":{"type":"string","format":"date-time"},"scope":{"const":"aemo-attributed-derived-constraint-evidence"}}},"methodology":{"type":"object","additionalProperties":false,"required":["marginalValueTolerance","marginalValueBasis","curtailmentTargetToleranceMw","equationBalanceFormula","priceSeparationFormula","curtailmentRule"],"properties":{"marginalValueTolerance":{"const":1e-9},"marginalValueBasis":{"const":"Objective-cost change for a 1 MW RHS change (AUD/MW); source sign is preserved."},"curtailmentTargetToleranceMw":{"const":0.1},"equationBalanceFormula":{"const":"rhs_mw - lhs_mw"},"priceSeparationFormula":{"const":"to_region_rrp_aud_per_mwh - from_region_rrp_aud_per_mwh"},"curtailmentRule":{"type":"string","minLength":1}}},"status":{"const":"available"},"events":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"required":["eventId","intervalEndUtc","intervalEndMarketTime","intervalMinutes","marketTimeZone","marketTimeBasis","constraint","interconnector","regionalPriceSeparation","affectedTerms","consequenceLinks","sourceReceiptIds"],"properties":{"eventId":{"type":"string"},"intervalEndUtc":{"type":"string","format":"date-time"},"intervalEndMarketTime":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\+10:00$"},"intervalMinutes":{"const":5},"marketTimeZone":{"const":"Australia/Brisbane"},"marketTimeBasis":{"const":"NEM market time (AEST, UTC+10)"},"constraint":{"type":"object","additionalProperties":false,"required":["constraintId","constraintSetIds","equationOperator","rhsMw","lhsMw","rhsMinusLhsMw","equationBalanceEvidenceClass","equationBalanceFormula","marginalValueAudPerMw","violationDegreeMw","bindingStatus","bindingEvidenceClass","dispatchConstraintReceiptId","definitionReceiptId","sourceReceiptIds"],"properties":{"constraintId":{"type":"string","minLength":1},"constraintSetIds":{"type":"array","items":{"type":"string","minLength":1},"uniqueItems":true,"minItems":1},"equationOperator":{"enum":["<=",">=","="]},"rhsMw":{"type":"number"},"lhsMw":{"type":"number"},"rhsMinusLhsMw":{"type":"number"},"equationBalanceEvidenceClass":{"const":"mechanically-established"},"equationBalanceFormula":{"const":"rhs_mw - lhs_mw"},"marginalValueAudPerMw":{"type":"number"},"violationDegreeMw":{"type":["number","null"]},"bindingStatus":{"const":"binding"},"bindingEvidenceClass":{"const":"mechanically-established"},"dispatchConstraintReceiptId":{"type":"string","minLength":1},"definitionReceiptId":{"type":"string","minLength":1},"sourceReceiptIds":{"type":"array","items":{"type":"string","minLength":1},"uniqueItems":true,"minItems":1}}},"interconnector":{"type":"object","additionalProperties":false,"required":["interconnectorId","fromRegionId","toRegionId","flowMw","flowDirection","importLimitMw","exportLimitMw","activeLimitMw","distanceToActiveLimitMw","evidenceClass","dispatchReceiptId","orientationReceiptId","sourceReceiptIds"],"properties":{"interconnectorId":{"type":"string","minLength":1},"fromRegionId":{"type":"string","minLength":1},"toRegionId":{"type":"string","minLength":1},"flowMw":{"type":"number"},"flowDirection":{"enum":["import","export","zero"]},"importLimitMw":{"type":"number","minimum":0},"exportLimitMw":{"type":"number","minimum":0},"activeLimitMw":{"type":["number","null"]},"distanceToActiveLimitMw":{"type":["number","null"]},"evidenceClass":{"enum":["mechanically-established","source-published","analytical-association","unavailable"]},"dispatchReceiptId":{"type":"string","minLength":1},"orientationReceiptId":{"type":"string","minLength":1},"sourceReceiptIds":{"type":"array","items":{"type":"string","minLength":1},"uniqueItems":true,"minItems":1}}},"regionalPriceSeparation":{"type":"object","additionalProperties":false,"required":["fromRegionId","toRegionId","fromRrpAudPerMwh","toRrpAudPerMwh","separationAudPerMwh","formula","evidenceClass","sourceReceiptIds"],"properties":{"fromRegionId":{"type":"string","minLength":1},"toRegionId":{"type":"string","minLength":1},"fromRrpAudPerMwh":{"type":"number"},"toRrpAudPerMwh":{"type":"number"},"separationAudPerMwh":{"type":"number"},"formula":{"const":"to_region_rrp_aud_per_mwh - from_region_rrp_aud_per_mwh"},"evidenceClass":{"const":"mechanically-established"},"sourceReceiptIds":{"type":"array","items":{"type":"string","minLength":1},"uniqueItems":true,"minItems":1}}},"affectedTerms":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"required":["termId","entityId","entityType","coefficient","lhsContributionMw","dispatchTargetMw","availabilityMw","semiDispatchCapMw","evidenceClass","coefficientReceiptId","dispatchReceiptId","sourceReceiptIds"],"properties":{"termId":{"type":"string","minLength":1},"entityId":{"type":"string","minLength":1},"entityType":{"enum":["generator","interconnector","region","load"]},"coefficient":{"type":"number","not":{"const":0}},"lhsContributionMw":{"type":["number","null"]},"dispatchTargetMw":{"type":["number","null"],"minimum":0},"availabilityMw":{"type":["number","null"],"minimum":0},"semiDispatchCapMw":{"type":["number","null"],"minimum":0},"evidenceClass":{"const":"source-published"},"coefficientReceiptId":{"type":"string","minLength":1},"dispatchReceiptId":{"type":["string","null"],"minLength":1},"sourceReceiptIds":{"type":"array","items":{"type":"string","minLength":1},"uniqueItems":true,"minItems":1}}}},"consequenceLinks":{"type":"array","minItems":1,"items":{"type":"object","additionalProperties":false,"allOf":[{"if":{"properties":{"evidenceClass":{"const":"source-published"}},"required":["evidenceClass"]},"then":{"oneOf":[{"properties":{"value":{"type":"number"},"unit":{"type":"string","minLength":1}}},{"properties":{"value":{"type":"null"},"unit":{"type":"null"}}}]}}],"required":["linkId","consequenceType","evidenceClass","causalClaim","statement","value","unit","formula","affectedTermIds","sourceReceiptIds"],"properties":{"linkId":{"type":"string","minLength":1},"consequenceType":{"type":"string","minLength":1},"evidenceClass":{"enum":["mechanically-established","source-published","analytical-association","unavailable"]},"causalClaim":{"type":"boolean"},"statement":{"type":"string","minLength":1},"value":{"type":["number","null"]},"unit":{"type":["string","null"],"minLength":1},"formula":{"type":["string","null"],"minLength":1},"affectedTermIds":{"type":"array","items":{"type":"string","minLength":1},"uniqueItems":true},"sourceReceiptIds":{"type":"array","items":{"type":"string","minLength":1},"uniqueItems":true}}}},"sourceReceiptIds":{"type":"array","items":{"type":"string","minLength":1},"uniqueItems":true,"minItems":1}}}}}},{"type":"object","additionalProperties":false,"required":["schemaVersion","methodVersion","editionVersion","generatedAt","sourceUpdatedAt","sourceLabel","sourceUrls","sourceReceipts","reuseReview","methodology","status","reason","message","adapterStatus"],"properties":{"schemaVersion":{"const":"constraint-consequence-ledger-v1"},"methodVersion":{"const":"constraint-consequence-ledger-v1"},"editionVersion":{"type":"string","minLength":1},"generatedAt":{"type":"null"},"sourceUpdatedAt":{"type":"null"},"sourceLabel":{"const":"Australian Energy Market Operator (AEMO)"},"sourceUrls":{"type":"object","additionalProperties":false,"required":["congestionInformation","statisticalReports","constraintFaq","mmsDataModel","nemwebCurrent"],"properties":{"congestionInformation":{"type":"string","format":"uri"},"statisticalReports":{"type":"string","format":"uri"},"constraintFaq":{"type":"string","format":"uri"},"mmsDataModel":{"type":"string","format":"uri"},"nemwebCurrent":{"type":"string","format":"uri"}}},"sourceReceipts":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["role","receiptId","fileName","retrievalUrl","sha256","retrievedAt","contentLengthBytes"],"properties":{"role":{"enum":["dispatch-constraint","generic-constraint","dispatch-interconnector","interconnector-orientation","dispatch-price","dispatch-load","published-consequence"]},"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"},"contentLengthBytes":{"type":"integer","minimum":1}}},"uniqueItems":true},"reuseReview":{"type":"object","additionalProperties":false,"required":["status","reviewedAt","scope"],"properties":{"status":{"enum":["required","approved"]},"reviewedAt":{"type":["string","null"],"format":"date-time"},"scope":{"const":"aemo-attributed-derived-constraint-evidence"}}},"methodology":{"type":"object","additionalProperties":false,"required":["marginalValueTolerance","marginalValueBasis","curtailmentTargetToleranceMw","equationBalanceFormula","priceSeparationFormula","curtailmentRule"],"properties":{"marginalValueTolerance":{"const":1e-9},"marginalValueBasis":{"const":"Objective-cost change for a 1 MW RHS change (AUD/MW); source sign is preserved."},"curtailmentTargetToleranceMw":{"const":0.1},"equationBalanceFormula":{"const":"rhs_mw - lhs_mw"},"priceSeparationFormula":{"const":"to_region_rrp_aud_per_mwh - from_region_rrp_aud_per_mwh"},"curtailmentRule":{"type":"string","minLength":1}}},"status":{"const":"unavailable"},"reason":{"type":"string"},"message":{"type":"string"},"adapterStatus":{"type":"object","additionalProperties":false,"required":["status","requiredTables","nextAction"],"properties":{"status":{"const":"ready"},"requiredTables":{"type":"array","minItems":1,"items":{"type":"string","minLength":1}},"nextAction":{"type":"string","minLength":1}}}}}]}