{"openapi":"3.1.0","info":{"title":"GET /api/v1/cfo-projection/scenarios/{scenario_id}/projection","version":"1.0.0","description":"Compute projection"},"servers":[{"url":"https://api.ondayzero.com","description":"Production"}],"paths":{"/api/v1/cfo-projection/scenarios/{scenario_id}/projection":{"get":{"tags":["cfo-projection"],"summary":"Compute projection","description":"Compute a full N-month projected income statement from scenario drivers.","operationId":"compute_projection_api_v1_cfo_projection_scenarios__scenario_id__projection_get","parameters":[{"name":"scenario_id","in":"path","required":true,"schema":{"type":"string","title":"Scenario Id"}},{"name":"authorization","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authorization"}},{"name":"x-business-id","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Business-Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectionResponse"}}}},"401":{"description":"Unauthorized - Authentication required","content":{"application/json":{"example":{"detail":"Not authenticated"}}}},"403":{"description":"Forbidden - Insufficient permissions","content":{"application/json":{"example":{"detail":"Not enough permissions"}}}},"404":{"description":"Not Found - Resource does not exist","content":{"application/json":{"example":{"detail":"Resource not found"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ProjectionLineItem":{"properties":{"ledger_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ledger Id"},"name":{"type":"string","title":"Name"},"data":{"items":{"type":"integer"},"type":"array","title":"Data","description":"Projected amounts in cents, per month"},"total":{"type":"integer","title":"Total","description":"Sum across all months","default":0}},"type":"object","required":["name","data"],"title":"ProjectionLineItem","description":"A single account's projected monthly amounts."},"ProjectionOtherLineItem":{"properties":{"ledger_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ledger Id"},"name":{"type":"string","title":"Name"},"data":{"items":{"type":"integer"},"type":"array","title":"Data","description":"Projected amounts in cents, per month"},"total":{"type":"integer","title":"Total","description":"Sum across all months","default":0},"neg":{"type":"boolean","title":"Neg","description":"True if expense (negative in net calc)","default":false}},"type":"object","required":["name","data"],"title":"ProjectionOtherLineItem","description":"A single Other Income/Expense item projected from trailing actuals."},"ProjectionResponse":{"properties":{"scenario_id":{"type":"string","title":"Scenario Id"},"months":{"items":{"type":"string"},"type":"array","title":"Months","description":"Projected month labels"},"revenue":{"$ref":"#/components/schemas/ProjectionSection"},"cogs":{"$ref":"#/components/schemas/ProjectionSection"},"gross_profit":{"items":{"type":"integer"},"type":"array","title":"Gross Profit"},"opex":{"$ref":"#/components/schemas/ProjectionSection"},"operating_income":{"items":{"type":"integer"},"type":"array","title":"Operating Income"},"other_income":{"items":{"$ref":"#/components/schemas/ProjectionOtherLineItem"},"type":"array","title":"Other Income"},"other_expense":{"items":{"$ref":"#/components/schemas/ProjectionOtherLineItem"},"type":"array","title":"Other Expense"},"other_net":{"items":{"type":"integer"},"type":"array","title":"Other Net"},"pre_tax_income":{"items":{"type":"integer"},"type":"array","title":"Pre Tax Income"},"tax":{"items":{"type":"integer"},"type":"array","title":"Tax"},"net_income":{"items":{"type":"integer"},"type":"array","title":"Net Income"},"gross_margin_pct":{"items":{"type":"number"},"type":"array","title":"Gross Margin Pct"},"operating_margin_pct":{"items":{"type":"number"},"type":"array","title":"Operating Margin Pct"},"net_margin_pct":{"items":{"type":"number"},"type":"array","title":"Net Margin Pct"}},"type":"object","required":["scenario_id","months","revenue","cogs","gross_profit","opex","operating_income","other_net","pre_tax_income","tax","net_income","gross_margin_pct","operating_margin_pct","net_margin_pct"],"title":"ProjectionResponse","description":"Full computed N-month projection derived from a scenario's drivers."},"ProjectionSection":{"properties":{"label":{"type":"string","title":"Label"},"items":{"items":{"$ref":"#/components/schemas/ProjectionLineItem"},"type":"array","title":"Items"},"total":{"items":{"type":"integer"},"type":"array","title":"Total","description":"Section total per month in cents"},"grand_total":{"type":"integer","title":"Grand Total","default":0}},"type":"object","required":["label","items","total"],"title":"ProjectionSection","description":"A section of the projected income statement."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API Token","description":"API token authentication. Format: `Bearer dz_...`"}}},"security":[{"BearerAuth":[]}]}