{"openapi":"3.1.0","info":{"title":"Public Schedule of Reductions (SOR) Calculation API","version":"1.0.1","description":"Public, free, portfolio-grade implementation of the Direct Loan SOR (Schedule of Reductions) calculation engine. Source code, fixtures, and parity tests are open. See /api-docs for usage guidance.","license":{"name":"MIT"}},"servers":[{"url":"https://sor.myproduct.life","description":"Production"}],"paths":{"/api/public/v1/health":{"get":{"summary":"Service health and version metadata","operationId":"getHealth","responses":{"200":{"description":"Service is healthy","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"},"example":{"status":"ok","engineVersion":"1.0.1","policyYear":"2026-27","policySnapshotDate":"2026-05-04","sourceCommit":"local-dev","supportedAwardYears":{"2025-26":"supported","2026-27":"supported-preliminary"},"requestId":"demo-sor-001"}}}}}}},"/api/public/v1/scenarios":{"get":{"summary":"Canonical parity scenarios","operationId":"listScenarios","responses":{"200":{"description":"Scenario list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScenariosResponse"},"example":{"engineVersion":"1.0.1","policyYear":"2026-27","count":13,"scenarios":[{"id":"fixture-v19-001","description":"Dependent G1, Need $5,500, two terms 6/9 credits, 24 AY FT - canonical SOR=63% case (v18-A).","sourceRefs":["psr-001","psr-002"],"sourceStatus":"confirmed","assertionLevel":"strict","asOfDate":"2026-05-04","input":{"viewMode":"plan","calType":1,"programLevel":"undergraduate","summerPosition":"none","ayType":"SAY","loanPeriodScope":"annualMultiTerm","numStandardTerms":2,"includeSummer1":false,"includeSummer2":false,"includeWinter1":false,"includeWinter2":false,"ayFtCredits":24,"gradeLevel":"g1","dependency":"dependent","parentPlusDenied":false,"overrideLimits":false,"annualNeed":5500,"subStatutory":3500,"unsubStatutory":2000,"distributionModel":"equal","applySubUnsubShift":true,"applyDoubleReduction":false,"countLthtInAyPct":true,"terms":{"term1":{"key":"term1","label":"Fall","enabled":true,"ftCredits":12,"enrolledCredits":6,"disbursed":false,"actualCredits":0,"paidSub":null,"paidUnsub":null,"refundSub":null,"refundUnsub":null,"coaCapSub":0,"coaCapUnsub":0,"paidGradPlus":null,"refundGradPlus":null,"coaCapGradPlus":0},"winter1":{"key":"winter1","label":"Winter 1","enabled":false,"ftCredits":12,"enrolledCredits":0,"disbursed":false,"actualCredits":0,"paidSub":null,"paidUnsub":null,"refundSub":null,"refundUnsub":null,"coaCapSub":0,"coaCapUnsub":0,"paidGradPlus":null,"refundGradPlus":null,"coaCapGradPlus":0},"term2":{"key":"term2","label":"Spring","enabled":true,"ftCredits":12,"enrolledCredits":9,"disbursed":false,"actualCredits":0,"paidSub":null,"paidUnsub":null,"refundSub":null,"refundUnsub":null,"coaCapSub":0,"coaCapUnsub":0,"paidGradPlus":null,"refundGradPlus":null,"coaCapGradPlus":0},"winter2":{"key":"winter2","label":"Winter 2","enabled":false,"ftCredits":12,"enrolledCredits":0,"disbursed":false,"actualCredits":0,"paidSub":null,"paidUnsub":null,"refundSub":null,"refundUnsub":null,"coaCapSub":0,"coaCapUnsub":0,"paidGradPlus":null,"refundGradPlus":null,"coaCapGradPlus":0},"term3":{"key":"term3","label":"Term 3","enabled":true,"ftCredits":12,"enrolledCredits":12,"disbursed":false,"actualCredits":0,"paidSub":null,"paidUnsub":null,"refundSub":null,"refundUnsub":null,"coaCapSub":0,"coaCapUnsub":0,"paidGradPlus":null,"refundGradPlus":null,"coaCapGradPlus":0},"term4":{"key":"term4","label":"Term 4","enabled":false,"ftCredits":12,"enrolledCredits":0,"disbursed":false,"actualCredits":0,"paidSub":null,"paidUnsub":null,"refundSub":null,"refundUnsub":null,"coaCapSub":0,"coaCapUnsub":0,"paidGradPlus":null,"refundGradPlus":null,"coaCapGradPlus":0},"summer1":{"key":"summer1","label":"Summer 1","enabled":false,"ftCredits":12,"enrolledCredits":0,"disbursed":false,"actualCredits":0,"paidSub":null,"paidUnsub":null,"refundSub":null,"refundUnsub":null,"coaCapSub":0,"coaCapUnsub":0,"paidGradPlus":null,"refundGradPlus":null,"coaCapGradPlus":0},"summer2":{"key":"summer2","label":"Summer 2","enabled":false,"ftCredits":12,"enrolledCredits":0,"disbursed":false,"actualCredits":0,"paidSub":null,"paidUnsub":null,"refundSub":null,"refundUnsub":null,"coaCapSub":0,"coaCapUnsub":0,"paidGradPlus":null,"refundGradPlus":null,"coaCapGradPlus":0}},"awardYear":"2026-27","loanLimitException":false,"coa":10000,"otherAid":0,"requestedGradPlus":0},"expected":{"totalFinalSub":2205,"totalFinalUnsub":1260,"reducedSub":2205,"reducedUnsub":1260,"sorApplicable":true,"effectiveCombinedLimit":5500,"subBaseline":3500,"unsubBaseline":2000}}],"requestId":"demo-sor-001"}}}}}}},"/api/public/v1/calculate":{"post":{"summary":"Run an SOR calculation","operationId":"calculateSor","parameters":[{"name":"X-Request-Id","in":"header","required":false,"description":"Optional client supplied correlation ID. Alphanumeric, underscore, and dash only. Up to 64 characters.","schema":{"type":"string","example":"demo-sor-001"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalculateInput"},"example":{"viewMode":"plan","calType":1,"programLevel":"undergraduate","summerPosition":"none","ayType":"SAY","loanPeriodScope":"annualMultiTerm","numStandardTerms":2,"includeSummer1":false,"includeSummer2":false,"includeWinter1":false,"includeWinter2":false,"ayFtCredits":24,"gradeLevel":"g1","dependency":"dependent","parentPlusDenied":false,"overrideLimits":false,"annualNeed":5500,"subStatutory":3500,"unsubStatutory":2000,"distributionModel":"equal","applySubUnsubShift":true,"applyDoubleReduction":false,"countLthtInAyPct":true,"terms":{"term1":{"key":"term1","label":"Fall","enabled":true,"ftCredits":12,"enrolledCredits":6,"disbursed":false,"actualCredits":0,"paidSub":null,"paidUnsub":null,"refundSub":null,"refundUnsub":null,"coaCapSub":0,"coaCapUnsub":0,"paidGradPlus":null,"refundGradPlus":null,"coaCapGradPlus":0},"winter1":{"key":"winter1","label":"Winter 1","enabled":false,"ftCredits":12,"enrolledCredits":0,"disbursed":false,"actualCredits":0,"paidSub":null,"paidUnsub":null,"refundSub":null,"refundUnsub":null,"coaCapSub":0,"coaCapUnsub":0,"paidGradPlus":null,"refundGradPlus":null,"coaCapGradPlus":0},"term2":{"key":"term2","label":"Spring","enabled":true,"ftCredits":12,"enrolledCredits":9,"disbursed":false,"actualCredits":0,"paidSub":null,"paidUnsub":null,"refundSub":null,"refundUnsub":null,"coaCapSub":0,"coaCapUnsub":0,"paidGradPlus":null,"refundGradPlus":null,"coaCapGradPlus":0},"winter2":{"key":"winter2","label":"Winter 2","enabled":false,"ftCredits":12,"enrolledCredits":0,"disbursed":false,"actualCredits":0,"paidSub":null,"paidUnsub":null,"refundSub":null,"refundUnsub":null,"coaCapSub":0,"coaCapUnsub":0,"paidGradPlus":null,"refundGradPlus":null,"coaCapGradPlus":0},"term3":{"key":"term3","label":"Term 3","enabled":true,"ftCredits":12,"enrolledCredits":12,"disbursed":false,"actualCredits":0,"paidSub":null,"paidUnsub":null,"refundSub":null,"refundUnsub":null,"coaCapSub":0,"coaCapUnsub":0,"paidGradPlus":null,"refundGradPlus":null,"coaCapGradPlus":0},"term4":{"key":"term4","label":"Term 4","enabled":false,"ftCredits":12,"enrolledCredits":0,"disbursed":false,"actualCredits":0,"paidSub":null,"paidUnsub":null,"refundSub":null,"refundUnsub":null,"coaCapSub":0,"coaCapUnsub":0,"paidGradPlus":null,"refundGradPlus":null,"coaCapGradPlus":0},"summer1":{"key":"summer1","label":"Summer 1","enabled":false,"ftCredits":12,"enrolledCredits":0,"disbursed":false,"actualCredits":0,"paidSub":null,"paidUnsub":null,"refundSub":null,"refundUnsub":null,"coaCapSub":0,"coaCapUnsub":0,"paidGradPlus":null,"refundGradPlus":null,"coaCapGradPlus":0},"summer2":{"key":"summer2","label":"Summer 2","enabled":false,"ftCredits":12,"enrolledCredits":0,"disbursed":false,"actualCredits":0,"paidSub":null,"paidUnsub":null,"refundSub":null,"refundUnsub":null,"coaCapSub":0,"coaCapUnsub":0,"paidGradPlus":null,"refundGradPlus":null,"coaCapGradPlus":0}},"awardYear":"2026-27","loanLimitException":false,"coa":10000,"otherAid":0,"requestedGradPlus":0},"examples":{"firstPublishedScenario":{"summary":"Dependent G1, Need $5,500, two terms 6/9 credits, 24 AY FT - canonical SOR=63% case (v18-A).","value":{"viewMode":"plan","calType":1,"programLevel":"undergraduate","summerPosition":"none","ayType":"SAY","loanPeriodScope":"annualMultiTerm","numStandardTerms":2,"includeSummer1":false,"includeSummer2":false,"includeWinter1":false,"includeWinter2":false,"ayFtCredits":24,"gradeLevel":"g1","dependency":"dependent","parentPlusDenied":false,"overrideLimits":false,"annualNeed":5500,"subStatutory":3500,"unsubStatutory":2000,"distributionModel":"equal","applySubUnsubShift":true,"applyDoubleReduction":false,"countLthtInAyPct":true,"terms":{"term1":{"key":"term1","label":"Fall","enabled":true,"ftCredits":12,"enrolledCredits":6,"disbursed":false,"actualCredits":0,"paidSub":null,"paidUnsub":null,"refundSub":null,"refundUnsub":null,"coaCapSub":0,"coaCapUnsub":0,"paidGradPlus":null,"refundGradPlus":null,"coaCapGradPlus":0},"winter1":{"key":"winter1","label":"Winter 1","enabled":false,"ftCredits":12,"enrolledCredits":0,"disbursed":false,"actualCredits":0,"paidSub":null,"paidUnsub":null,"refundSub":null,"refundUnsub":null,"coaCapSub":0,"coaCapUnsub":0,"paidGradPlus":null,"refundGradPlus":null,"coaCapGradPlus":0},"term2":{"key":"term2","label":"Spring","enabled":true,"ftCredits":12,"enrolledCredits":9,"disbursed":false,"actualCredits":0,"paidSub":null,"paidUnsub":null,"refundSub":null,"refundUnsub":null,"coaCapSub":0,"coaCapUnsub":0,"paidGradPlus":null,"refundGradPlus":null,"coaCapGradPlus":0},"winter2":{"key":"winter2","label":"Winter 2","enabled":false,"ftCredits":12,"enrolledCredits":0,"disbursed":false,"actualCredits":0,"paidSub":null,"paidUnsub":null,"refundSub":null,"refundUnsub":null,"coaCapSub":0,"coaCapUnsub":0,"paidGradPlus":null,"refundGradPlus":null,"coaCapGradPlus":0},"term3":{"key":"term3","label":"Term 3","enabled":true,"ftCredits":12,"enrolledCredits":12,"disbursed":false,"actualCredits":0,"paidSub":null,"paidUnsub":null,"refundSub":null,"refundUnsub":null,"coaCapSub":0,"coaCapUnsub":0,"paidGradPlus":null,"refundGradPlus":null,"coaCapGradPlus":0},"term4":{"key":"term4","label":"Term 4","enabled":false,"ftCredits":12,"enrolledCredits":0,"disbursed":false,"actualCredits":0,"paidSub":null,"paidUnsub":null,"refundSub":null,"refundUnsub":null,"coaCapSub":0,"coaCapUnsub":0,"paidGradPlus":null,"refundGradPlus":null,"coaCapGradPlus":0},"summer1":{"key":"summer1","label":"Summer 1","enabled":false,"ftCredits":12,"enrolledCredits":0,"disbursed":false,"actualCredits":0,"paidSub":null,"paidUnsub":null,"refundSub":null,"refundUnsub":null,"coaCapSub":0,"coaCapUnsub":0,"paidGradPlus":null,"refundGradPlus":null,"coaCapGradPlus":0},"summer2":{"key":"summer2","label":"Summer 2","enabled":false,"ftCredits":12,"enrolledCredits":0,"disbursed":false,"actualCredits":0,"paidSub":null,"paidUnsub":null,"refundSub":null,"refundUnsub":null,"coaCapSub":0,"coaCapUnsub":0,"paidGradPlus":null,"refundGradPlus":null,"coaCapGradPlus":0}},"awardYear":"2026-27","loanLimitException":false,"coa":10000,"otherAid":0,"requestedGradPlus":0}}}}}},"responses":{"200":{"description":"Calculation results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalculateResponse"},"example":{"data":{"totalFinalSub":2205,"totalFinalUnsub":1260,"reducedSub":2205,"reducedUnsub":1260,"sorPctRounded":0.63,"sorApplicable":true,"effectiveCombinedLimit":5500,"subBaseline":3500,"unsubBaseline":2000,"termResults":[{"key":"term1","label":"Fall","enabled":true,"eligible":true,"status":"eligible","finalSub":1102,"finalUnsub":630,"finalGradPlus":0},{"key":"term2","label":"Spring","enabled":true,"eligible":true,"status":"eligible","finalSub":1103,"finalUnsub":630,"finalGradPlus":0}]},"meta":{"engineVersion":"1.0.1","policyYear":"2026-27","policySnapshotDate":"2026-05-04","sourceCommit":"local-dev","policyStatus":"supported-preliminary","sourceSet":["direct-loan-sor-v1"],"citations":[],"computedAt":"2026-04-26T00:00:00.000Z","requestId":"demo-sor-001"}}}}},"400":{"description":"Invalid input (malformed JSON or unreadable body)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":{"code":"invalid_input","message":"Request body is not valid JSON.","requestId":"demo-sor-001"}}}}},"405":{"description":"Method not allowed (only POST and OPTIONS are supported)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":{"code":"method_not_allowed","message":"Method not allowed. Allowed: POST, OPTIONS.","requestId":"demo-sor-001"}}}}},"406":{"description":"Not acceptable (only application/json responses)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":{"code":"not_acceptable","message":"Only application/json responses are supported.","requestId":"demo-sor-001"}}}}},"413":{"description":"Payload too large (request body exceeds 1 MB)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":{"code":"payload_too_large","message":"Request body exceeds 1000000 bytes.","details":{"maxBytes":1000000},"requestId":"demo-sor-001"}}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":{"code":"unsupported_media_type","message":"Content-Type must be application/json.","requestId":"demo-sor-001"}}}}},"422":{"description":"Schema validation failed (well-formed JSON, but violates the input contract)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":{"code":"schema_validation_failed","message":"Input failed schema validation.","details":[{"path":["viewMode"],"message":"Required"}],"requestId":"demo-sor-001"}}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":{"code":"rate_limited","message":"Rate limit exceeded. Try again shortly.","details":{"retryAfterSec":2},"requestId":"demo-sor-001"}}}}},"500":{"description":"Internal engine error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":{"code":"internal_error","message":"Calculation engine threw an unexpected error.","requestId":"demo-sor-001"}}}}}}},"get":{"summary":"Not allowed. Calculate accepts POST only.","operationId":"calculateSorWrongMethod","responses":{"405":{"description":"Method not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"},"example":{"error":{"code":"method_not_allowed","message":"Method not allowed. Allowed: POST, OPTIONS.","requestId":"demo-sor-001"}}}}}}}}},"components":{"schemas":{"HealthResponse":{"type":"object","required":["status","engineVersion","policyYear","policySnapshotDate","sourceCommit","supportedAwardYears","requestId"],"additionalProperties":false,"properties":{"status":{"type":"string","enum":["ok"]},"engineVersion":{"type":"string","example":"1.0.1"},"policyYear":{"type":"string","example":"2026-27"},"policySnapshotDate":{"type":"string","example":"2026-05-04"},"sourceCommit":{"type":"string","example":"local-dev"},"supportedAwardYears":{"type":"object","additionalProperties":{"type":"string"},"example":{"2025-26":"supported","2026-27":"supported-preliminary"}},"requestId":{"type":"string","example":"demo-sor-001"}}},"ScenarioFixture":{"type":"object","required":["id","description","sourceRefs","sourceStatus","assertionLevel","asOfDate","input","expected"],"additionalProperties":false,"properties":{"id":{"type":"string","example":"fixture-v19-001"},"description":{"type":"string","example":"Dependent G1, Need $5,500, two terms 6/9 credits, 24 AY FT - canonical SOR=63% case (v18-A)."},"sourceRefs":{"type":"array","items":{"type":"string"},"example":["psr-001","psr-002"]},"sourceStatus":{"type":"string","enum":["confirmed","preliminary"]},"assertionLevel":{"type":"string","enum":["strict","directional"]},"asOfDate":{"type":"string","format":"date"},"input":{"$ref":"#/components/schemas/CalculateInput"},"expected":{"type":"object","description":"Stable field-level assertions for this fixture.","additionalProperties":true}}},"ScenariosResponse":{"type":"object","required":["engineVersion","policyYear","count","scenarios","requestId"],"additionalProperties":false,"properties":{"engineVersion":{"type":"string","example":"1.0.1"},"policyYear":{"type":"string","example":"2026-27"},"count":{"type":"integer","minimum":0,"example":13},"scenarios":{"type":"array","items":{"$ref":"#/components/schemas/ScenarioFixture"}},"requestId":{"type":"string","example":"demo-sor-001"}}},"CalculateInput":{"type":"object","additionalProperties":false,"description":"Mirrors SORInputs. Numeric fields use strict validation (no silent 0 coercion). term.paidSub / paidUnsub: null means blank (no anchor), 0 means explicit zero anchor. The engine does not calculate NSLDS aggregate limits, lifetime maximum eligibility, Parent PLUS remaining eligibility, or consolidation allocation. The example below is the first published scenario from /api/public/v1/scenarios.","example":{"viewMode":"plan","calType":1,"programLevel":"undergraduate","summerPosition":"none","ayType":"SAY","loanPeriodScope":"annualMultiTerm","numStandardTerms":2,"includeSummer1":false,"includeSummer2":false,"includeWinter1":false,"includeWinter2":false,"ayFtCredits":24,"gradeLevel":"g1","dependency":"dependent","parentPlusDenied":false,"overrideLimits":false,"annualNeed":5500,"subStatutory":3500,"unsubStatutory":2000,"distributionModel":"equal","applySubUnsubShift":true,"applyDoubleReduction":false,"countLthtInAyPct":true,"terms":{"term1":{"key":"term1","label":"Fall","enabled":true,"ftCredits":12,"enrolledCredits":6,"disbursed":false,"actualCredits":0,"paidSub":null,"paidUnsub":null,"refundSub":null,"refundUnsub":null,"coaCapSub":0,"coaCapUnsub":0,"paidGradPlus":null,"refundGradPlus":null,"coaCapGradPlus":0},"winter1":{"key":"winter1","label":"Winter 1","enabled":false,"ftCredits":12,"enrolledCredits":0,"disbursed":false,"actualCredits":0,"paidSub":null,"paidUnsub":null,"refundSub":null,"refundUnsub":null,"coaCapSub":0,"coaCapUnsub":0,"paidGradPlus":null,"refundGradPlus":null,"coaCapGradPlus":0},"term2":{"key":"term2","label":"Spring","enabled":true,"ftCredits":12,"enrolledCredits":9,"disbursed":false,"actualCredits":0,"paidSub":null,"paidUnsub":null,"refundSub":null,"refundUnsub":null,"coaCapSub":0,"coaCapUnsub":0,"paidGradPlus":null,"refundGradPlus":null,"coaCapGradPlus":0},"winter2":{"key":"winter2","label":"Winter 2","enabled":false,"ftCredits":12,"enrolledCredits":0,"disbursed":false,"actualCredits":0,"paidSub":null,"paidUnsub":null,"refundSub":null,"refundUnsub":null,"coaCapSub":0,"coaCapUnsub":0,"paidGradPlus":null,"refundGradPlus":null,"coaCapGradPlus":0},"term3":{"key":"term3","label":"Term 3","enabled":true,"ftCredits":12,"enrolledCredits":12,"disbursed":false,"actualCredits":0,"paidSub":null,"paidUnsub":null,"refundSub":null,"refundUnsub":null,"coaCapSub":0,"coaCapUnsub":0,"paidGradPlus":null,"refundGradPlus":null,"coaCapGradPlus":0},"term4":{"key":"term4","label":"Term 4","enabled":false,"ftCredits":12,"enrolledCredits":0,"disbursed":false,"actualCredits":0,"paidSub":null,"paidUnsub":null,"refundSub":null,"refundUnsub":null,"coaCapSub":0,"coaCapUnsub":0,"paidGradPlus":null,"refundGradPlus":null,"coaCapGradPlus":0},"summer1":{"key":"summer1","label":"Summer 1","enabled":false,"ftCredits":12,"enrolledCredits":0,"disbursed":false,"actualCredits":0,"paidSub":null,"paidUnsub":null,"refundSub":null,"refundUnsub":null,"coaCapSub":0,"coaCapUnsub":0,"paidGradPlus":null,"refundGradPlus":null,"coaCapGradPlus":0},"summer2":{"key":"summer2","label":"Summer 2","enabled":false,"ftCredits":12,"enrolledCredits":0,"disbursed":false,"actualCredits":0,"paidSub":null,"paidUnsub":null,"refundSub":null,"refundUnsub":null,"coaCapSub":0,"coaCapUnsub":0,"paidGradPlus":null,"refundGradPlus":null,"coaCapGradPlus":0}},"awardYear":"2026-27","loanLimitException":false,"coa":10000,"otherAid":0,"requestedGradPlus":0}},"TermResultStable":{"type":"object","required":["key","label","enabled","eligible","status","finalSub","finalUnsub","finalGradPlus"],"additionalProperties":true,"properties":{"key":{"type":"string","example":"term1"},"label":{"type":"string","example":"Fall"},"enabled":{"type":"boolean","example":true},"eligible":{"type":"boolean","example":true},"status":{"type":"string","enum":["eligible","below_half_time","off"],"example":"eligible"},"finalSub":{"type":"number","example":1102},"finalUnsub":{"type":"number","example":630},"finalGradPlus":{"type":"number","example":0}}},"SORResultsStable":{"type":"object","required":["totalFinalSub","totalFinalUnsub","reducedSub","reducedUnsub","sorPctRounded","sorApplicable","termResults"],"additionalProperties":true,"description":"Stable public calculation fields. The API may return additional engine diagnostics.","properties":{"totalFinalSub":{"type":"number","example":2205},"totalFinalUnsub":{"type":"number","example":1260},"reducedSub":{"type":"number","example":2205},"reducedUnsub":{"type":"number","example":1260},"sorPctRounded":{"type":"number","example":0.63},"sorApplicable":{"type":"boolean","example":true},"effectiveCombinedLimit":{"type":"number","example":5500},"subBaseline":{"type":"number","example":3500},"unsubBaseline":{"type":"number","example":2000},"termResults":{"type":"array","items":{"$ref":"#/components/schemas/TermResultStable"}}}},"CalculateMeta":{"type":"object","required":["engineVersion","policyYear","policySnapshotDate","sourceCommit","policyStatus","sourceSet","citations","computedAt","requestId"],"additionalProperties":false,"properties":{"engineVersion":{"type":"string","example":"1.0.1"},"policyYear":{"type":"string","example":"2026-27"},"policySnapshotDate":{"type":"string","example":"2026-05-04"},"sourceCommit":{"type":"string","example":"local-dev"},"policyStatus":{"type":"string","enum":["confirmed","supported-preliminary"]},"sourceSet":{"type":"array","items":{"type":"string"},"example":["direct-loan-sor-v1"]},"citations":{"type":"array","items":{"type":"string"}},"computedAt":{"type":"string","format":"date-time"},"requestId":{"type":"string","example":"demo-sor-001"}}},"CalculateResponse":{"type":"object","required":["data","meta"],"additionalProperties":false,"properties":{"data":{"$ref":"#/components/schemas/SORResultsStable"},"meta":{"$ref":"#/components/schemas/CalculateMeta"}}},"ErrorResponse":{"type":"object","required":["error"],"additionalProperties":false,"properties":{"error":{"type":"object","required":["code","message"],"additionalProperties":false,"properties":{"code":{"type":"string","enum":["invalid_input","schema_validation_failed","payload_too_large","method_not_allowed","unsupported_media_type","not_acceptable","rate_limited","internal_error","not_found"],"example":"schema_validation_failed"},"message":{"type":"string","example":"Input failed schema validation."},"details":{"description":"Optional machine-readable error details. Shape depends on the error code."},"requestId":{"type":"string","example":"demo-sor-001"}}}}}}},"x-policy-year":"2026-27","x-request-id-header":"Every response includes an X-Request-Id header and echoes it in the JSON envelope. Clients may pass their own X-Request-Id (alphanumeric, underscore, dash; up to 64 chars).","x-contract-testing":"The repository includes a contract script and Postman/Newman collection that replay the documented OpenAPI example against /api/public/v1/calculate."}