{"components":{"headers":{"CacheControl":{"description":"Current aliases and archives are revalidated; explicit immutable snapshots and weekly reports may be cached privately.","schema":{"type":"string"}},"ETag":{"description":"Strong validator calculated from the exact canonical response bytes.","schema":{"pattern":"^\"[a-f0-9]{64}\"$","type":"string"}},"NoSniff":{"description":"MIME-sniffing protection.","schema":{"const":"nosniff","type":"string"}}},"parameters":{"IfNoneMatch":{"in":"header","name":"If-None-Match","required":false,"schema":{"maxLength":80,"type":"string"}},"ProfileIdPath":{"in":"path","name":"profile_id","required":true,"schema":{"pattern":"^[a-z][a-z0-9_]{2,95}$","type":"string"}},"ProfileIdQuery":{"description":"Defaults to the server's single configured profile.","in":"query","name":"profile_id","required":false,"schema":{"pattern":"^[a-z][a-z0-9_]{2,95}$","type":"string"}},"SnapshotIdQuery":{"description":"Defaults to the current verified snapshot. Explicit IDs select immutable bundles.","in":"query","name":"snapshot_id","required":false,"schema":{"pattern":"^ero_[a-z0-9_]+_[0-9]{8}T[0-9]{6}Z_[a-f0-9]{12}$","type":"string"}}},"responses":{"BadRequest":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"A path, query, or conditional header is invalid"},"NotFound":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"The profile or immutable snapshot does not exist"},"NotModified":{"description":"The supplied strong ETag still identifies the selected response","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControl"},"ETag":{"$ref":"#/components/headers/ETag"}}},"Unavailable":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"No verified snapshot is currently available","headers":{"Retry-After":{"schema":{"minimum":1,"type":"integer"}}}},"WeeklyUnavailable":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"The saved weekly files cannot be read or fail integrity or format verification","headers":{"Retry-After":{"schema":{"minimum":1,"type":"integer"}}}}},"schemas":{"AssessmentResponse":{"additionalProperties":false,"properties":{"api_version":{"const":"v1","type":"string"},"notices":{"items":{"$ref":"#/components/schemas/Notice"},"minItems":1,"type":"array","uniqueItems":true},"overall_assessment":{"$ref":"./schemas/overall-assessment.schema.json"},"snapshot":{"$ref":"#/components/schemas/SnapshotReference"}},"required":["api_version","snapshot","overall_assessment"],"type":"object"},"Headline":{"additionalProperties":false,"properties":{"assessment_status":{"type":"string"},"confidence":{"type":"string"},"confirmed_level":{"maximum":5,"minimum":0,"type":["integer","null"]},"effective_level":{"maximum":5,"minimum":0,"type":["integer","null"]},"label":{"type":"string"},"possible_level":{"maximum":5,"minimum":0,"type":"integer"},"text":{"maxLength":240,"minLength":3,"type":"string"},"trajectory":{"type":"string"}},"required":["text","effective_level","confirmed_level","possible_level","label","assessment_status","trajectory","confidence"],"type":"object"},"Health":{"additionalProperties":false,"properties":{"api_version":{"const":"v1","type":"string"},"service":{"const":"ero-api","type":"string"},"status":{"const":"ok","type":"string"}},"required":["status","service","api_version"],"type":"object"},"Notice":{"additionalProperties":false,"properties":{"code":{"pattern":"^[A-Z][A-Z0-9_]{2,95}$","type":"string"},"text":{"minLength":3,"type":"string"},"url":{"format":"uri","type":"string"}},"required":["code","text","url"],"type":"object"},"Problem":{"additionalProperties":false,"properties":{"detail":{"type":"string"},"instance":{"type":"string"},"status":{"maximum":599,"minimum":400,"type":"integer"},"title":{"type":"string"},"type":{"format":"uri","type":"string"}},"required":["type","title","status","detail"],"type":"object"},"Readiness":{"additionalProperties":false,"properties":{"api_version":{"const":"v1","type":"string"},"service":{"const":"ero-api","type":"string"},"snapshot":{"$ref":"#/components/schemas/SnapshotReference"},"status":{"const":"ready","type":"string"}},"required":["status","service","api_version","snapshot"],"type":"object"},"ReportResponse":{"additionalProperties":false,"properties":{"api_version":{"const":"v1","type":"string"},"explanation":{"additionalProperties":true,"properties":{"assessment_confidence":{"type":"string"},"assessment_status":{"type":"string"},"clocks":{"items":{"type":"object"},"type":"array"},"confirmed_level":{"maximum":5,"minimum":0,"type":["integer","null"]},"content_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"coverage":{"type":"object"},"decisive_rule_ids":{"items":{"type":"string"},"type":"array"},"definition_set_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"definitions":{"additionalProperties":false,"description":"Active ECO I rules and links for the permitted complete local report; contains no retrieved observation history.","properties":{"bindings":{"items":{"$ref":"./schemas/assessment-binding.schema.json"},"type":"array"},"clocks":{"items":{"$ref":"./schemas/clock-definition.schema.json"},"type":"array"},"metrics":{"items":{"$ref":"./schemas/metric-definition.schema.json"},"type":"array"},"scenarios":{"items":{"$ref":"./schemas/scenario-definition.schema.json"},"type":"array"},"signals":{"items":{"$ref":"./schemas/signal-definition.schema.json"},"type":"array"},"situation":{"$ref":"./schemas/situation-definition.schema.json"}},"required":["metrics","signals","bindings","clocks","scenarios","situation"],"type":"object"},"effective_level":{"maximum":5,"minimum":0,"type":["integer","null"]},"groups":{"items":{"type":"object"},"type":"array"},"metrics":{"items":{"type":"object"},"type":"array"},"next_level_blockers":{"items":{"type":"string"},"type":"array"},"possible_level":{"maximum":5,"minimum":0,"type":"integer"},"scenarios":{"items":{"type":"object"},"type":"array"},"snapshot_id":{"type":"string"},"synthetic_input_present":{"description":"Explicit synthetic markers were detected during batch calculation. False does not establish live-source verification.","type":"boolean"},"unknown_clause_ids":{"items":{"type":"string"},"type":"array"}},"required":["snapshot_id","effective_level","confirmed_level","possible_level","assessment_status","assessment_confidence","decisive_rule_ids","next_level_blockers","unknown_clause_ids","coverage","clocks","groups","scenarios","metrics","content_sha256","definition_set_sha256"],"type":"object"},"headline":{"$ref":"#/components/schemas/Headline"},"limitations":{"items":{"pattern":"^[A-Z][A-Z0-9_]{2,95}$","type":"string"},"type":"array","uniqueItems":true},"notices":{"items":{"$ref":"#/components/schemas/Notice"},"minItems":1,"type":"array","uniqueItems":true},"overall_assessment":{"$ref":"./schemas/overall-assessment.schema.json"},"situation":{"$ref":"./schemas/situation-reading.schema.json"},"snapshot":{"$ref":"#/components/schemas/SnapshotReference"}},"required":["api_version","snapshot","headline","situation","explanation","limitations","notices"],"type":"object"},"SituationResponse":{"additionalProperties":false,"properties":{"api_version":{"const":"v1","type":"string"},"headline":{"$ref":"#/components/schemas/Headline"},"limitations":{"items":{"pattern":"^[A-Z][A-Z0-9_]{2,95}$","type":"string"},"type":"array","uniqueItems":true},"notices":{"items":{"$ref":"#/components/schemas/Notice"},"minItems":1,"type":"array","uniqueItems":true},"situation":{"$ref":"./schemas/situation-reading.schema.json"},"snapshot":{"$ref":"#/components/schemas/SnapshotReference"}},"required":["api_version","snapshot","headline","situation","limitations","notices"],"type":"object"},"SnapshotReference":{"additionalProperties":false,"properties":{"as_of":{"format":"date-time","type":"string"},"content_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"current":{"type":"boolean"},"generated_at":{"format":"date-time","type":"string"},"profile_id":{"type":"string"},"profile_version":{"type":"string"},"snapshot_id":{"type":"string"}},"required":["snapshot_id","profile_id","profile_version","as_of","generated_at","content_sha256","current"],"type":"object"},"WeeklyArchiveResponse":{"additionalProperties":false,"properties":{"api_version":{"const":"v1","type":"string"},"configured":{"type":"boolean"},"reports":{"items":{"$ref":"#/components/schemas/WeeklyReportSummary"},"maxItems":5200,"type":"array"}},"required":["api_version","configured","reports"],"type":"object"},"WeeklyOpinionParagraph":{"additionalProperties":false,"properties":{"angle":{"enum":["judgment","main_vulnerability","economy","supports","bubble_evidence","downside_scenario","warning_signs","recent_change","alternative_outcome","blind_spot"],"type":"string"},"evidence_ids":{"items":{"type":"string"},"maxItems":8,"minItems":1,"type":"array","uniqueItems":true},"kind":{"enum":["INTERPRETATION","SCENARIO"],"type":"string"},"text":{"maxLength":700,"minLength":20,"type":"string"}},"required":["angle","kind","text","evidence_ids"],"type":"object"},"WeeklyReport":{"oneOf":[{"$ref":"#/components/schemas/WeeklyReportLegacy"},{"$ref":"#/components/schemas/WeeklyReportOpinion"}]},"WeeklyReportLegacy":{"additionalProperties":false,"properties":{"assessment_status":{"type":"string"},"bubble_status":{"const":"NOT_ESTABLISHED","type":"string"},"crash_date":{"description":"No crash date or countdown is established.","type":"null"},"crash_probability":{"description":"No calibrated crash probability is established.","type":"null"},"cycle_phase":{"const":"NOT_FORMALLY_CLASSIFIED","type":"string"},"disclaimer":{"type":"string"},"facts":{"additionalProperties":{"type":"object"},"description":"Saved public evidence keyed by evidence identifier, retaining dates, units and qualifications where applicable.","type":"object"},"generated_at":{"format":"date-time","type":"string"},"limitations":{"type":"string"},"lines":{"items":{"$ref":"#/components/schemas/WeeklyReportLine"},"maxItems":10,"minItems":10,"type":"array"},"model":{"description":"Model used to select and organize approved findings.","type":"string"},"packet_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"prior_report_sha256":{"pattern":"^[a-f0-9]{64}$","type":["string","null"]},"report_date":{"format":"date","type":"string"},"report_kind":{"enum":["WEEKLY","INITIAL"],"type":"string"},"risk_state":{"type":"string"},"schema_version":{"const":"1.0.0","type":"string"},"snapshot":{"$ref":"#/components/schemas/WeeklySnapshotReference"},"usage":{"additionalProperties":false,"description":"Reported token counts for this completion; nullable details indicate unavailable provider counts.","properties":{"cached_tokens":{"minimum":0,"type":["integer","null"]},"completion_tokens":{"minimum":0,"type":"integer"},"prompt_tokens":{"minimum":0,"type":"integer"},"reasoning_tokens":{"minimum":0,"type":["integer","null"]},"total_tokens":{"minimum":0,"type":"integer"}},"required":["prompt_tokens","completion_tokens","total_tokens","cached_tokens","reasoning_tokens"],"type":"object"},"week_ending":{"description":"Friday ending the reporting week; null for the initial baseline.","format":"date","type":["string","null"]}},"required":["schema_version","report_kind","report_date","week_ending","generated_at","snapshot","risk_state","assessment_status","bubble_status","cycle_phase","crash_probability","crash_date","model","lines","facts","disclaimer","limitations","packet_sha256","prior_report_sha256","usage"],"type":"object"},"WeeklyReportLine":{"additionalProperties":false,"properties":{"evidence_ids":{"description":"Keys of the saved facts object supporting this finding.","items":{"type":"string"},"minItems":1,"type":"array"},"text":{"description":"Approved plain-text finding; never executable HTML or instructions.","type":"string"},"topic":{"type":"string"}},"required":["topic","text","evidence_ids"],"type":"object"},"WeeklyReportOpinion":{"additionalProperties":false,"properties":{"assessment_status":{"type":"string"},"bubble_status":{"const":"NOT_ESTABLISHED","type":"string"},"crash_date":{"description":"No crash date or countdown is established.","type":"null"},"crash_probability":{"description":"No calibrated crash probability is established.","type":"null"},"cycle_phase":{"const":"NOT_FORMALLY_CLASSIFIED","type":"string"},"disclaimer":{"type":"string"},"facts":{"additionalProperties":{"type":"object"},"description":"Saved public evidence keyed by evidence identifier, retaining dates, units and qualifications where applicable.","type":"object"},"generated_at":{"format":"date-time","type":"string"},"limitations":{"type":"string"},"lines":{"items":{"$ref":"#/components/schemas/WeeklyReportLine"},"maxItems":10,"minItems":10,"type":"array"},"model":{"description":"Model used for the fallible second opinion and checked finding selection.","type":"string"},"packet_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"prior_report_sha256":{"pattern":"^[a-f0-9]{64}$","type":["string","null"]},"report_date":{"format":"date","type":"string"},"report_id":{"pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}(?:-r(?:[2-9]|[1-9][0-9]|100))?$","type":"string"},"report_kind":{"enum":["WEEKLY","INITIAL","UPDATE"],"type":"string"},"revises_report_id":{"pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}(?:-r(?:[2-9]|[1-9][0-9]|100))?$","type":["string","null"]},"risk_state":{"type":"string"},"schema_version":{"const":"1.1.0","type":"string"},"second_opinion":{"$ref":"#/components/schemas/WeeklySecondOpinion"},"snapshot":{"$ref":"#/components/schemas/WeeklySnapshotReference"},"usage":{"additionalProperties":false,"description":"Reported token counts for this completion; nullable details indicate unavailable provider counts.","properties":{"cached_tokens":{"minimum":0,"type":["integer","null"]},"completion_tokens":{"minimum":0,"type":"integer"},"prompt_tokens":{"minimum":0,"type":"integer"},"reasoning_tokens":{"minimum":0,"type":["integer","null"]},"total_tokens":{"minimum":0,"type":"integer"}},"required":["prompt_tokens","completion_tokens","total_tokens","cached_tokens","reasoning_tokens"],"type":"object"},"week_ending":{"description":"Friday ending the reporting week; null for initial reports and updates.","format":"date","type":["string","null"]}},"required":["schema_version","report_kind","report_date","week_ending","generated_at","snapshot","risk_state","assessment_status","bubble_status","cycle_phase","crash_probability","crash_date","model","lines","facts","disclaimer","limitations","packet_sha256","prior_report_sha256","usage","second_opinion","report_id","revises_report_id"],"type":"object"},"WeeklyReportResponse":{"additionalProperties":false,"properties":{"api_version":{"const":"v1","type":"string"},"report":{"$ref":"#/components/schemas/WeeklyReport"}},"required":["api_version","report"],"type":"object"},"WeeklyReportSummary":{"additionalProperties":false,"properties":{"assessment_status":{"type":"string"},"generated_at":{"format":"date-time","type":"string"},"report_date":{"format":"date","type":"string"},"report_id":{"pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}(?:-r(?:[2-9]|[1-9][0-9]|100))?$","type":"string"},"report_kind":{"enum":["WEEKLY","INITIAL","UPDATE"],"type":"string"},"risk_state":{"description":"Preserved deterministic engine risk state; not an AI score.","type":"string"},"snapshot":{"$ref":"#/components/schemas/WeeklySnapshotReference"},"week_ending":{"description":"Friday ending the reporting week; null for the initial baseline.","format":"date","type":["string","null"]}},"required":["report_id","report_kind","report_date","week_ending","generated_at","snapshot","risk_state","assessment_status"],"type":"object"},"WeeklySecondOpinion":{"additionalProperties":false,"description":"Fallible AI interpretation, not a verified forecast. Numeric insertions and cited fact references are checked; economic inference is not established by those checks.","properties":{"headline":{"maxLength":110,"minLength":12,"type":"string"},"paragraphs":{"items":{"$ref":"#/components/schemas/WeeklyOpinionParagraph"},"maxItems":10,"minItems":10,"type":"array"}},"required":["headline","paragraphs"],"type":"object"},"WeeklySnapshotReference":{"additionalProperties":false,"properties":{"as_of":{"format":"date-time","type":"string"},"content_sha256":{"pattern":"^[a-f0-9]{64}$","type":"string"},"generated_at":{"format":"date-time","type":"string"},"profile_id":{"type":"string"},"profile_version":{"type":"string"},"snapshot_id":{"type":"string"}},"required":["snapshot_id","profile_id","profile_version","as_of","generated_at","content_sha256"],"type":"object"}}},"info":{"description":"Stable v1 read-only API over verified immutable ECO I snapshot bundles. API\nrequests never contact upstream providers, write analytical state, or run\ncalculations. The default local mode is a same-host, single-operator surface.\nDo not forward or tunnel the complete local-private report. Explicit shareable\nmode builds a separate report using only public_api-permitted input lineages;\npublic_chart permission is independently required for charts. It omits the\noverall assessment when any required sharing permission is absent. The remote API\nprojection can run behind a controlled authenticated or explicitly public HTTPS edge; its\npublic redistribution surface remains limited to explicit source grants.\nBoth modes bind only to loopback or a Unix socket. This contract does not\nconfigure an edge or authorize a publicly bound application listener.\nTHIS IS NOT FINANCIAL ADVICE. ECO I is experimental information and research;\ndata and analysis may be inaccurate, incomplete or delayed. Verify independently.\nThe full disclaimer and applicable-law limitations are at /disclaimer.\n","title":"ECO I Read API","version":"1.0.0"},"openapi":"3.1.0","paths":{"/api/v1/artifacts/{sha256}":{"get":{"description":"Returns exact stored bytes from reviewed public-domain sources: Treasury CSV\nand Board SLOOS ZIP (1 MiB maximum), and OFR FSI CSV (2 MiB maximum). The selected immutable projection must\nprove every source and series owning the artifact permits extraction;\nshared restricted artifacts and all other sources are denied. Whole files\ninclude published columns or survey series outside the selected indicator.\nThese current-revised source files are not historical point-in-time vintages.\nPin snapshot_id from the observation or provenance query for reproducibility.\nOlder projections without complete artifact ownership metadata return 503.\nBoth 200 and 304 verify the current stored bytes against their SHA-256.\n","operationId":"getOriginalArtifact","parameters":[{"in":"path","name":"sha256","required":true,"schema":{"pattern":"^[a-f0-9]{64}$","type":"string"}},{"$ref":"#/components/parameters/ProfileIdQuery"},{"$ref":"#/components/parameters/SnapshotIdQuery"},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"content":{"application/json":{"schema":{"format":"binary","type":"string"}},"application/zip":{"schema":{"format":"binary","type":"string"}},"text/csv":{"schema":{"format":"binary","type":"string"}}},"description":"Exact original source CSV, ZIP, or JSON, served as an attachment","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControl"},"Content-Disposition":{"schema":{"type":"string"}},"ETag":{"$ref":"#/components/headers/ETag"},"X-Content-Type-Options":{"$ref":"#/components/headers/NoSniff"},"X-ERO-Retrieved-At":{"schema":{"type":"string"}},"X-ERO-Snapshot-ID":{"schema":{"type":"string"}},"X-ERO-Source-Notice":{"schema":{"type":"string"}}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Whole-artifact extraction permission is absent"},"404":{"$ref":"#/components/responses/NotFound"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Snapshot, complete ownership proof, or verified original bytes are unavailable","headers":{"Retry-After":{"schema":{"minimum":1,"type":"integer"}}}}},"summary":"Download a verified original public source file used by one snapshot","tags":["Data"]}},"/api/v1/assessment":{"get":{"description":"Returns the snapshot's deterministic overall assessment, including its evidence, uncertainty, and methodological limits. This is not a crash probability or predicted crash date. Historical snapshots created before this assessment was introduced return 404. Shareable services return 403 when any input in the declared assessment cohort lacks public_api sharing permission. Snapshot verification and rights checks precede conditional responses. Requests never calculate or reconstruct an assessment.","operationId":"getOverallAssessment","parameters":[{"$ref":"#/components/parameters/ProfileIdQuery"},{"$ref":"#/components/parameters/SnapshotIdQuery"},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssessmentResponse"}}},"description":"Verified stored overall assessment","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControl"},"ETag":{"$ref":"#/components/headers/ETag"},"X-Content-Type-Options":{"$ref":"#/components/headers/NoSniff"}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"The declared assessment input cohort lacks sharing permission"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"The profile or snapshot does not exist, or the historical snapshot predates the overall assessment"},"503":{"$ref":"#/components/responses/Unavailable"}},"summary":"Read the stored public-input risk diagnosis from one verified snapshot","tags":["Assessment"]}},"/api/v1/data/{resource}":{"get":{"description":"Reads the immutable local_private_api projection attached to one snapshot.\nValues are selected vintages known at snapshot as_of. Reconstructed metric\nhistory is not a point-in-time backtest. Original reviewed Treasury CSV\nbytes have a separate artifact route. Denied collection members are named explicitly; requesting a\ndenied entity returns 403. Pin the returned snapshot_id for subsequent\ncursor pages. History date filters use inclusive economic period-end dates.\nhistory_ranges describes the complete available projection; history_selection\ndescribes the requested range and returned page, including legacy truncation.\nNew complete-history projections retain all selected rows within a 32 MiB\nartifact ceiling; responses remain bounded to 500 rows. A cursor from another\nprojection, entity, resource, date range, or page size is invalid, including\nwhen the current snapshot changes.\n","operationId":"getAnalyticalData","parameters":[{"in":"path","name":"resource","required":true,"schema":{"enum":["series","observations","metrics","metric_history","signals","groups","clocks","scenarios","provenance","data_health"],"type":"string"}},{"$ref":"#/components/parameters/ProfileIdQuery"},{"$ref":"#/components/parameters/SnapshotIdQuery"},{"$ref":"#/components/parameters/IfNoneMatch"},{"in":"query","name":"entity_id","schema":{"pattern":"^[a-z][a-z0-9_]{2,95}$","type":"string"}},{"in":"query","name":"limit","schema":{"default":100,"maximum":500,"minimum":1,"type":"integer"}},{"in":"query","name":"cursor","schema":{"maxLength":512,"type":"string"}},{"description":"Inclusive first economic period-end date; observations and metric_history only.","in":"query","name":"period_from","schema":{"format":"date","type":"string"}},{"description":"Inclusive last economic period-end date; observations and metric_history only.","in":"query","name":"period_to","schema":{"format":"date","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"./schemas/data-page.schema.json"}}},"description":"Canonical page from the selected rights-filtered projection","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControl"},"ETag":{"$ref":"#/components/headers/ETag"},"X-Content-Type-Options":{"$ref":"#/components/headers/NoSniff"}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"At least one required input lacks extraction permission"},"404":{"$ref":"#/components/responses/NotFound"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Snapshot or read projection unavailable, including older bundles without a projection","headers":{"Retry-After":{"schema":{"minimum":1,"type":"integer"}}}}},"summary":"Inspect permitted observations, processed readings, and bounded history","tags":["Data"]}},"/api/v1/evaluation":{"get":{"description":"Current-revised retrospective studies with frozen specifications, dated inputs, exclusions and results. This is separate from a snapshot assessment and does not establish predictive validation of the unified policy.","operationId":"readHistoricalEvaluation","responses":{"200":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"api_version":{"const":"v1"},"evaluation":{"type":"object"}},"required":["api_version","evaluation"],"type":"object"}}},"description":"Verified historical evaluation and public input observations"},"304":{"description":"Unchanged evaluation for the supplied strong ETag"},"503":{"description":"Evaluation artifact unavailable or failed integrity verification"}},"summary":"Read the reproducible historical candidate diagnostic"}},"/api/v1/report":{"get":{"description":"The default local service returns its complete verified private report. A service explicitly configured in shareable mode returns only readings permitted by its validated public_api input decisions. Its overall situation and headline are null when complete sharing permission is absent; omitted inputs never create a replacement assessment. Charts additionally require public_chart permission. Legacy bundles without a verified read projection are unavailable in shareable mode. The optional stored overall_assessment uses its separately declared input cohort; shareable reports expose it only when every cohort input permits public_api use. Historical local reports without this assessment omit the field.","operationId":"getReport","parameters":[{"$ref":"#/components/parameters/ProfileIdQuery"},{"$ref":"#/components/parameters/SnapshotIdQuery"},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ReportResponse"},{"$ref":"./schemas/shared-report.schema.json"}]}}},"description":"Verified deterministic JSON report","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControl"},"ETag":{"$ref":"#/components/headers/ETag"},"X-Content-Type-Options":{"$ref":"#/components/headers/NoSniff"}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"$ref":"#/components/responses/NotFound"},"503":{"$ref":"#/components/responses/Unavailable"}},"summary":"Read a deterministic detailed explanation of one verified snapshot","tags":["Report"]}},"/api/v1/situations/{profile_id}":{"get":{"description":"Shareable services deny this route when any complete-assessment sharing dependency is disallowed.","operationId":"getSituation","parameters":[{"$ref":"#/components/parameters/ProfileIdPath"},{"$ref":"#/components/parameters/SnapshotIdQuery"},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SituationResponse"}}},"description":"Verified unified situation projection","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControl"},"ETag":{"$ref":"#/components/headers/ETag"},"X-Content-Type-Options":{"$ref":"#/components/headers/NoSniff"}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Complete assessment sharing permission is absent"},"404":{"$ref":"#/components/responses/NotFound"},"503":{"$ref":"#/components/responses/Unavailable"}},"summary":"Read the unified Macro-Financial Situation Level and its decomposition","tags":["Situation"]}},"/api/v1/weekly-reports":{"get":{"description":"Reads only completed public reports. An unconfigured or empty installation\nreturns an empty list; configured states whether a public report directory\nis configured, not whether report generation succeeded. No query parameters\nare accepted. Requests never generate a report or contact a model.\nExperimental information only; this is not financial advice.\n","operationId":"listWeeklyReports","parameters":[{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WeeklyArchiveResponse"}}},"description":"Saved report summaries; revalidate when checking for a new week","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControl"},"ETag":{"$ref":"#/components/headers/ETag"},"X-Content-Type-Options":{"$ref":"#/components/headers/NoSniff"}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"503":{"$ref":"#/components/responses/WeeklyUnavailable"}},"summary":"List saved weekly reports, newest first","tags":["Weekly reports"]}},"/api/v1/weekly-reports/{report_id}":{"get":{"description":"Selects an immutable report by ID: YYYY-MM-DD for a regular weekly or initial\nreport, or YYYY-MM-DD-rN for a separately authorized update. Version 1.1.0\nadds an AI second opinion: a headline and ten short evidenced interpretations\nand conditional scenarios, alongside the original ten checked fact notes.\nInference is fallible and does not replace the engine risk assessment.\nOld report IDs retain their original bodies. No query parameters are accepted.\nA missing report returns 404;\nthe request never generates or repairs a report. Saved text remains dated\nand is not continuously updated. This is not financial advice.\n","operationId":"getWeeklyReport","parameters":[{"description":"Report date, optionally followed by -r2 through -r100 for an update. Dates use America/New_York.","in":"path","name":"report_id","required":true,"schema":{"pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}(?:-r(?:[2-9]|[1-9][0-9]|100))?$","type":"string"}},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WeeklyReportResponse"}}},"description":"Verified immutable public report for the selected week","headers":{"Cache-Control":{"$ref":"#/components/headers/CacheControl"},"ETag":{"$ref":"#/components/headers/ETag"},"X-Content-Type-Options":{"$ref":"#/components/headers/NoSniff"}}},"304":{"$ref":"#/components/responses/NotModified"},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"No public report has been published for the selected week"},"503":{"$ref":"#/components/responses/WeeklyUnavailable"}},"summary":"Read one saved weekly report and its cited public evidence","tags":["Weekly reports"]}},"/healthz":{"get":{"description":"The optional sharing probe is an edge configuration check, not authentication. A local-mode backend rejects it before reading evidence.","operationId":"getHealth","parameters":[{"in":"query","name":"require_shareable","schema":{"enum":["1"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Health"}}},"description":"Process is alive"},"400":{"$ref":"#/components/responses/BadRequest"},"503":{"$ref":"#/components/responses/Unavailable"}},"summary":"Confirm that the API process is alive","tags":["System"]}},"/readyz":{"get":{"operationId":"getReadiness","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Readiness"}}},"description":"A verified current snapshot can be served"},"503":{"$ref":"#/components/responses/Unavailable"}},"summary":"Confirm that the current pointer resolves to a verified snapshot bundle","tags":["System"]}}},"security":[],"servers":[{"description":"Default local-private loopback listener","url":"http://127.0.0.1:8080"}],"tags":[{"name":"System"},{"name":"Situation"},{"name":"Assessment"},{"name":"Report"},{"name":"Data"},{"name":"Weekly reports"}]}
