{"openapi":"3.1.0","info":{"title":"Next-Generation Early Warning System","version":"3.0"},"paths":{"/dashboard/operator":{"get":{"summary":"Operator Dashboard","operationId":"operator_dashboard_dashboard_operator_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/dashboard/sa-audit":{"get":{"summary":"Dashboard Sa Audit","description":"Planning/IC SA interaction audit log (decision-support accountability).","operationId":"dashboard_sa_audit_dashboard_sa_audit_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/api/eoc-desk/status":{"get":{"summary":"Api Eoc Desk Status","description":"Evaluation desk identity status (session / lock / timeouts).","operationId":"api_eoc_desk_status_api_eoc_desk_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/eoc-desk/register":{"post":{"summary":"Api Eoc Desk Register","description":"Register evaluation desk user (first, last, 4-digit PIN) and sign in.","operationId":"api_eoc_desk_register_api_eoc_desk_register_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/eoc-desk/check-in":{"post":{"summary":"Api Eoc Desk Login","description":"Evaluation desk sign-in (registered user + PIN + job). check-in alias retained.","operationId":"api_eoc_desk_login_api_eoc_desk_check_in_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/eoc-desk/login":{"post":{"summary":"Api Eoc Desk Login","description":"Evaluation desk sign-in (registered user + PIN + job). check-in alias retained.","operationId":"api_eoc_desk_login_api_eoc_desk_login_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/eoc-desk/unlock":{"post":{"summary":"Api Eoc Desk Unlock","description":"PIN-only unlock after 15-minute screen lock.","operationId":"api_eoc_desk_unlock_api_eoc_desk_unlock_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/eoc-desk/logout":{"post":{"summary":"Api Eoc Desk Logout","description":"Explicit sign-out; logs time-out for evaluation accountability.","operationId":"api_eoc_desk_logout_api_eoc_desk_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/eoc-desk/change-job":{"post":{"summary":"Api Eoc Desk Change Job","description":"Change desk job while signed in; tracked in evaluation log.","operationId":"api_eoc_desk_change_job_api_eoc_desk_change_job_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/eoc-desk/activity":{"post":{"summary":"Api Eoc Desk Activity","description":"Log page view / heartbeat; advances idle timer while session is active.","operationId":"api_eoc_desk_activity_api_eoc_desk_activity_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/eoc-desk/tracking-log":{"get":{"summary":"Api Eoc Desk Tracking Log","description":"JSON user tracking log (check-ins + activity). Soft-open for evaluation hosts.","operationId":"api_eoc_desk_tracking_log_api_eoc_desk_tracking_log_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Api Eoc Desk Tracking Log Api Eoc Desk Tracking Log Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dashboard/user-tracking":{"get":{"summary":"Dashboard User Tracking","description":"User tracking log — EOC desk check-ins and page activity (evaluation host).","operationId":"dashboard_user_tracking_dashboard_user_tracking_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/dashboard/sys-admin":{"get":{"summary":"Dashboard Sys Admin","description":"Sys Admin console — full tool inventory + platform gates for that job.\n\nNot an ICS command desk. Requires ``system_admin`` capability (sys_admin job).\nSoft mode shows a banner when unauthorized; enforce returns 403.","operationId":"dashboard_sys_admin_dashboard_sys_admin_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/dashboard/tools/sys-admin":{"get":{"summary":"Dashboard Tools Sys Admin Alias","description":"Alias under job tools paths → Sys Admin console.","operationId":"dashboard_tools_sys_admin_alias_dashboard_tools_sys_admin_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/dashboard/tools/hand-sketch":{"get":{"summary":"Dashboard Hand Sketch","description":"HAND sketch tool — lab/demoted illustration only (not readiness, not briefings).","operationId":"dashboard_hand_sketch_dashboard_tools_hand_sketch_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/api/local-impacts":{"get":{"summary":"Api Local Impacts Catalog","description":"Local operational impact catalog (decision-support; does not change readiness).","operationId":"api_local_impacts_catalog_api_local_impacts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/local-impacts/evaluate":{"get":{"summary":"Api Local Impacts Evaluate","description":"Evaluate local impact rules against stage map.\n\nQuery ``stages`` as ``site_id:ft,site_id:ft`` (e.g. ``01524500:9,01525500:10``).\nDoes **not** change flood readiness. Decision-support only.","operationId":"api_local_impacts_evaluate_api_local_impacts_evaluate_get","parameters":[{"name":"stages","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stages"}},{"name":"log_fires","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Log Fires"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/hand-sketch/meta":{"get":{"summary":"Api Hand Sketch Meta","description":"JSON meta for HAND sketch map (bounds, gauges, bookmarks). Lab product only.","operationId":"api_hand_sketch_meta_api_hand_sketch_meta_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/hand-sketch/inundation.webp":{"get":{"summary":"Api Hand Sketch Inundation","description":"WebP (alpha) overlay of illustrative wet cells for stage_ft (HAND threshold).\n\nLegacy ``.png`` path kept so older clients still work; payload is WebP either way.\nLab product only — not readiness.","operationId":"api_hand_sketch_inundation_api_hand_sketch_inundation_webp_get","parameters":[{"name":"stage_ft","in":"query","required":false,"schema":{"type":"number","default":9.0,"title":"Stage Ft"}},{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"01524500","title":"Location Id"}},{"name":"reference_stage_ft","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Reference Stage Ft"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/hand-sketch/inundation.png":{"get":{"summary":"Api Hand Sketch Inundation","description":"WebP (alpha) overlay of illustrative wet cells for stage_ft (HAND threshold).\n\nLegacy ``.png`` path kept so older clients still work; payload is WebP either way.\nLab product only — not readiness.","operationId":"api_hand_sketch_inundation_api_hand_sketch_inundation_png_get","parameters":[{"name":"stage_ft","in":"query","required":false,"schema":{"type":"number","default":9.0,"title":"Stage Ft"}},{"name":"location_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"01524500","title":"Location Id"}},{"name":"reference_stage_ft","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Reference Stage Ft"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dashboard/tools":{"get":{"summary":"Dashboard Tools Hub","description":"Job-specific tool hub — read models only; flood readiness stays on Flood COP.","operationId":"dashboard_tools_hub_dashboard_tools_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/dashboard/tools/{role_slug}":{"get":{"summary":"Dashboard Tools Role","description":"ICS-role tool page (IC / Ops / Planning / Field, etc.).","operationId":"dashboard_tools_role_dashboard_tools__role_slug__get","parameters":[{"name":"role_slug","in":"path","required":true,"schema":{"type":"string","title":"Role Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dashboard/tools/{role_slug}/report/{report_id}":{"get":{"summary":"Dashboard Tools Report","description":"Printable role report over shared COP fields.","operationId":"dashboard_tools_report_dashboard_tools__role_slug__report__report_id__get","parameters":[{"name":"role_slug","in":"path","required":true,"schema":{"type":"string","title":"Role Slug"}},{"name":"report_id","in":"path","required":true,"schema":{"type":"string","title":"Report Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dashboard/worksheets/{worksheet_id}":{"get":{"summary":"Dashboard Tools Worksheet","description":"In-app printable worksheet from docs/role_worksheets (path avoids role_slug clash).","operationId":"dashboard_tools_worksheet_dashboard_worksheets__worksheet_id__get","parameters":[{"name":"worksheet_id","in":"path","required":true,"schema":{"type":"string","title":"Worksheet Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dashboard/ics-forms":{"get":{"summary":"Ics Forms Index","description":"List available ICS-style form drafts (opens each in a popup-friendly page).","operationId":"ics_forms_index_dashboard_ics_forms_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/dashboard/ics-forms/{form_id}":{"get":{"summary":"Ics Form Popup","description":"Editable HTML ICS-style form prefilled from Flood COP (fallback / SITREP).","operationId":"ics_form_popup_dashboard_ics_forms__form_id__get","parameters":[{"name":"form_id","in":"path","required":true,"schema":{"type":"string","title":"Form Id"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dashboard/ics-forms/{form_id}/pdf":{"get":{"summary":"Ics Form Filled Pdf","description":"Official FEMA fillable PDF prefilled from COP (still editable in the viewer).","operationId":"ics_form_filled_pdf_dashboard_ics_forms__form_id__pdf_get","parameters":[{"name":"form_id","in":"path","required":true,"schema":{"type":"string","title":"Form Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Ics Form Filled Pdf With Map","description":"Same as GET, but accepts the operator's current COP map view (ICS 201 Map/Sketch).\n\nBody JSON::\n    {\n      \"map_view\": { \"south\", \"west\", \"north\", \"east\", \"zoom\", \"markers\": [...] },\n      \"map_image_data_url\": \"data:image/png;base64,...\",  // optional\n      \"download\": false\n    }","operationId":"ics_form_filled_pdf_with_map_dashboard_ics_forms__form_id__pdf_post","parameters":[{"name":"form_id","in":"path","required":true,"schema":{"type":"string","title":"Form Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ics-forms":{"post":{"summary":"Ics Forms Save","description":"Save an ICS form draft to local SQLite.","operationId":"ics_forms_save_api_ics_forms_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"get":{"summary":"Ics Forms List","description":"List recent ICS form drafts.","operationId":"ics_forms_list_api_ics_forms_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"site_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Site Id"}},{"name":"form_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Form Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/ics-forms/latest":{"get":{"summary":"Ics Forms Latest","description":"Latest draft for site + form.","operationId":"ics_forms_latest_api_ics_forms_latest_get","parameters":[{"name":"site_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Site Id"}},{"name":"form_id","in":"query","required":false,"schema":{"type":"string","default":"","title":"Form Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/dashboard":{"get":{"summary":"Dashboard Index","operationId":"dashboard_index_dashboard_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/dashboard/legacy":{"get":{"summary":"Legacy Dashboard Deprecation","description":"U-06: Deprecated combined COP entry — hub and vertical dashboards are canonical.","operationId":"legacy_dashboard_deprecation_dashboard_legacy_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/dashboard/flood/preview/isolated-gauge-suspect":{"get":{"summary":"Flood Dashboard Isolated Gauge Suspect Preview","description":"Visual demo: upstream gauge very high + rising, downstream normal + stable (H-06).","operationId":"flood_dashboard_isolated_gauge_suspect_preview_dashboard_flood_preview_isolated_gauge_suspect_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/dashboard/flood/preview/aug-2024-outlook":{"get":{"summary":"Flood Dashboard Aug 2024 Outlook Preview","description":"Visual demo: August 2024 crest replay through display-only flood outlook + map overlay.","operationId":"flood_dashboard_aug_2024_outlook_preview_dashboard_flood_preview_aug_2024_outlook_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/dashboard/flood/freshness.json":{"get":{"summary":"Flood Dashboard Freshness Json","description":"Lightweight age payload for the COP sticky timer (client re-sync).","operationId":"flood_dashboard_freshness_json_dashboard_flood_freshness_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/dashboard/flood":{"get":{"summary":"Flood Dashboard","description":"Flood COP HTML with short in-process TTL to collapse multi-user stampedes.\n\nBypass: ``?refresh=1`` or ``?nocache=1``. Header ``X-EWS-Flood-Cache: HIT|MISS|BYPASS``.","operationId":"flood_dashboard_dashboard_flood_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/api/practice/status":{"get":{"summary":"Practice Status Api","operationId":"practice_status_api_api_practice_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/practice/scenarios":{"get":{"summary":"Practice Scenarios Api","operationId":"practice_scenarios_api_api_practice_scenarios_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/practice/start":{"post":{"summary":"Practice Start Api","operationId":"practice_start_api_api_practice_start_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/practice/pause":{"post":{"summary":"Practice Pause Api","operationId":"practice_pause_api_api_practice_pause_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/practice/resume":{"post":{"summary":"Practice Resume Api","operationId":"practice_resume_api_api_practice_resume_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/practice/stop":{"post":{"summary":"Practice Stop Api","operationId":"practice_stop_api_api_practice_stop_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/practice/step":{"post":{"summary":"Practice Step Api","operationId":"practice_step_api_api_practice_step_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/flood-outlook":{"get":{"summary":"Flood Outlook Api","operationId":"flood_outlook_api_api_flood_outlook_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/forecast-impact":{"get":{"summary":"Forecast Impact Api","description":"Live-friendly JSON mirror of the Forecast Impact panel (information-only / test).","operationId":"forecast_impact_api_api_forecast_impact_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/dashboard/water":{"get":{"summary":"Water Dashboard","operationId":"water_dashboard_dashboard_water_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/dashboard/weather":{"get":{"summary":"Weather Dashboard","operationId":"weather_dashboard_dashboard_weather_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/api/weather/high-watch":{"get":{"summary":"Weather High Watch Status","operationId":"weather_high_watch_status_api_weather_high_watch_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/debug/duplicate-effort":{"get":{"summary":"Debug Duplicate Effort","description":"Recent per-request heavy-call traces (no secrets). Decision-support diagnostics.\n\nRound 12 SG-40: when ``EWS_OPERATOR_WRITE_TOKEN`` is set (typical public tunnel),\nrequire the same operator write header as other gated diagnostics. Empty token\nkeeps local pilot open.","operationId":"debug_duplicate_effort_debug_duplicate_effort_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"x-ews-operator-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ews-Operator-Token"}},{"name":"x-ews-write-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ews-Write-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Debug Duplicate Effort Debug Duplicate Effort Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthStatus"}}}}}}},"/debug/flood-warmer":{"get":{"summary":"Debug Flood Warmer","description":"Flood HTML keep-warm status (decision-support ops; no secrets).","operationId":"debug_flood_warmer_debug_flood_warmer_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Debug Flood Warmer Debug Flood Warmer Get"}}}}}}},"/debug/process-singleton":{"get":{"summary":"Debug Process Singleton","description":"Process lock + uvicorn inventory (detect accidental dual API processes).","operationId":"debug_process_singleton_debug_process_singleton_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Debug Process Singleton Debug Process Singleton Get"}}}}}}},"/sources":{"get":{"summary":"List Sources","operationId":"list_sources_sources_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/SourceRegistration"},"type":"array","title":"Response List Sources Sources Get"}}}}}}},"/signals":{"post":{"summary":"Ingest Signal","operationId":"ingest_signal_signals_post","parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}},{"name":"x-signature","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Signature"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestEnvelope"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/assessments":{"get":{"summary":"List Assessments","operationId":"list_assessments_assessments_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RiskAssessment"},"title":"Response List Assessments Assessments Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/alerts":{"get":{"summary":"List Alerts","operationId":"list_alerts_alerts_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Alert"},"title":"Response List Alerts Alerts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/audit":{"get":{"summary":"List Audit","operationId":"list_audit_audit_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AuditEvent"},"title":"Response List Audit Audit Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/operator/alert-acknowledge":{"post":{"summary":"Acknowledge Operator Alert","operationId":"acknowledge_operator_alert_operator_alert_acknowledge_post","parameters":[{"name":"x-ews-operator-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ews-Operator-Token"}},{"name":"x-ews-write-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ews-Write-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperatorAlertAcknowledgeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Acknowledge Operator Alert Operator Alert Acknowledge Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/operator/alert-audio/stop":{"post":{"summary":"Stop Operator Alert Audio","operationId":"stop_operator_alert_audio_operator_alert_audio_stop_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Stop Operator Alert Audio Operator Alert Audio Stop Post"}}}}}}},"/operator/alert-audio/start":{"post":{"summary":"Start Operator Alert Audio","operationId":"start_operator_alert_audio_operator_alert_audio_start_post","parameters":[{"name":"dashboard_mode","in":"query","required":false,"schema":{"type":"string","default":"flood_only","title":"Dashboard Mode"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Start Operator Alert Audio Operator Alert Audio Start Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/assist/health":{"get":{"summary":"Assist Health","description":"SA Assistant status (no secrets). Works when disabled for UI offline state.","operationId":"assist_health_assist_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Assist Health Assist Health Get"}}}}}}},"/assist/audit":{"get":{"summary":"Assist Audit List","description":"List durable SA chat audit rows (Planning / IC / admin).\n\nAccess: when EWS_OPERATOR_WRITE_TOKEN is set, require matching header.\nWhen token is empty (local pilot), allow with job role capability soft check.","operationId":"assist_audit_list_assist_audit_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}},{"name":"x-ews-operator-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ews-Operator-Token"}},{"name":"x-ews-write-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ews-Write-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Assist Audit List Assist Audit Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/assist":{"post":{"summary":"Assist Chat","description":"Grounded SA Assistant chat. Provider selected via EWS_AI_PROVIDER (xai|ollama).","operationId":"assist_chat_assist_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Assist Chat Assist Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/monitoring/drift":{"get":{"summary":"Get Drift","operationId":"get_drift_monitoring_drift_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Drift Monitoring Drift Get"}}}}}}},"/monitoring/tuning":{"get":{"summary":"Get Tuning Recommendations","operationId":"get_tuning_recommendations_monitoring_tuning_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/TuningRecommendation"},"type":"array","title":"Response Get Tuning Recommendations Monitoring Tuning Get"}}}}}}},"/scheduler/status":{"get":{"summary":"Scheduler Status","operationId":"scheduler_status_scheduler_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Scheduler Status Scheduler Status Get"}}}}}}},"/scheduler/start":{"post":{"summary":"Scheduler Start","operationId":"scheduler_start_scheduler_start_post","parameters":[{"name":"mode","in":"query","required":false,"schema":{"type":"string","default":"normal","title":"Mode"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Scheduler Start Scheduler Start Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/scheduler/start-recommended":{"post":{"summary":"Scheduler Start Recommended","operationId":"scheduler_start_recommended_scheduler_start_recommended_post","parameters":[{"name":"mode","in":"query","required":false,"schema":{"type":"string","default":"normal","title":"Mode"}},{"name":"usgs_interval_seconds","in":"query","required":false,"schema":{"type":"integer","default":300,"title":"Usgs Interval Seconds"}},{"name":"noaa_interval_seconds","in":"query","required":false,"schema":{"type":"integer","default":300,"title":"Noaa Interval Seconds"}},{"name":"nws_forecast_interval_seconds","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Nws Forecast Interval Seconds"}},{"name":"nwps_interval_seconds","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Nwps Interval Seconds"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Scheduler Start Recommended Scheduler Start Recommended Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/scheduler/run-once":{"post":{"summary":"Scheduler Run Once","operationId":"scheduler_run_once_scheduler_run_once_post","parameters":[{"name":"usgs_interval_seconds","in":"query","required":false,"schema":{"type":"integer","default":300,"title":"Usgs Interval Seconds"}},{"name":"noaa_interval_seconds","in":"query","required":false,"schema":{"type":"integer","default":300,"title":"Noaa Interval Seconds"}},{"name":"nws_forecast_interval_seconds","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Nws Forecast Interval Seconds"}},{"name":"nwps_interval_seconds","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Nwps Interval Seconds"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Scheduler Run Once Scheduler Run Once Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/scheduler/stop":{"post":{"summary":"Scheduler Stop","operationId":"scheduler_stop_scheduler_stop_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Scheduler Stop Scheduler Stop Post"}}}}}}},"/scheduler/sync-weather-high-watch":{"post":{"summary":"Scheduler Sync Weather High Watch","operationId":"scheduler_sync_weather_high_watch_scheduler_sync_weather_high_watch_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Scheduler Sync Weather High Watch Scheduler Sync Weather High Watch Post"}}}}}}},"/operator/alert-status":{"get":{"summary":"Operator Alert Status","operationId":"operator_alert_status_operator_alert_status_get","parameters":[{"name":"dashboard_mode","in":"query","required":false,"schema":{"type":"string","default":"flood_only","title":"Dashboard Mode"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Operator Alert Status Operator Alert Status Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/operator/presence/heartbeat":{"post":{"summary":"Operator Presence Heartbeat","operationId":"operator_presence_heartbeat_operator_presence_heartbeat_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperatorPresenceHeartbeatRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Operator Presence Heartbeat Operator Presence Heartbeat Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/operator/presence/leave":{"post":{"summary":"Operator Presence Leave","operationId":"operator_presence_leave_operator_presence_leave_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperatorPresenceLeaveRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Operator Presence Leave Operator Presence Leave Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/operator/presence":{"get":{"summary":"Operator Presence Status","operationId":"operator_presence_status_operator_presence_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"string","default":"operator","title":"Page"}},{"name":"x-ews-presence-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ews-Presence-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Operator Presence Status Operator Presence Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/assets/presence/client-config":{"get":{"summary":"Asset Presence Client Config","description":"Bootstrap for Operator PWA and the shared Android GPS keep-alive app.\n\nNo secrets. Same response on every site process (site_id differs by package).","operationId":"asset_presence_client_config_assets_presence_client_config_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Asset Presence Client Config Assets Presence Client Config Get"}}}}}}},"/assets/presence/heartbeat":{"post":{"summary":"Asset Presence Heartbeat","operationId":"asset_presence_heartbeat_assets_presence_heartbeat_post","parameters":[{"name":"x-ews-operator-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ews-Operator-Token"}},{"name":"x-ews-write-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ews-Write-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetPresenceHeartbeatRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Asset Presence Heartbeat Assets Presence Heartbeat Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/assets/presence/leave":{"post":{"summary":"Asset Presence Leave","operationId":"asset_presence_leave_assets_presence_leave_post","parameters":[{"name":"x-ews-operator-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ews-Operator-Token"}},{"name":"x-ews-write-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ews-Write-Token"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssetPresenceLeaveRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Asset Presence Leave Assets Presence Leave Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/assets/presence":{"get":{"summary":"Asset Presence Status","operationId":"asset_presence_status_assets_presence_get","parameters":[{"name":"asset_type","in":"query","required":false,"schema":{"type":"string","default":"personnel","title":"Asset Type"}},{"name":"x-ews-asset-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ews-Asset-Token"}},{"name":"x-ews-presence-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ews-Presence-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Asset Presence Status Assets Presence Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/assets/presence/history":{"get":{"summary":"Asset Presence History Api","operationId":"asset_presence_history_api_assets_presence_history_get","parameters":[{"name":"session_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":200,"title":"Limit"}},{"name":"x-ews-asset-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ews-Asset-Token"}},{"name":"x-ews-presence-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ews-Presence-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Asset Presence History Api Assets Presence History Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/event-checklist":{"post":{"summary":"Event Checklist Submit","description":"Save event-watch checklist responses to local SQLite (simple eval store).","operationId":"event_checklist_submit_api_event_checklist_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventChecklistSubmit"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Event Checklist Submit Api Event Checklist Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"Event Checklist List","description":"List recent checklist submissions (local SQLite).","operationId":"event_checklist_list_api_event_checklist_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"site_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Site Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Event Checklist List Api Event Checklist Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/operator/ics-notify/status":{"get":{"summary":"Ics Notify Status","operationId":"ics_notify_status_operator_ics_notify_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Ics Notify Status Operator Ics Notify Status Get"}}}}}}},"/operator/ics-notify/route":{"post":{"summary":"Route Ics Notifications","operationId":"route_ics_notifications_operator_ics_notify_route_post","parameters":[{"name":"dashboard_mode","in":"query","required":false,"schema":{"type":"string","default":"flood_only","title":"Dashboard Mode"}},{"name":"force","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Force"}},{"name":"x-ews-operator-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ews-Operator-Token"}},{"name":"x-ews-write-token","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Ews-Write-Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Route Ics Notifications Operator Ics Notify Route Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/demo/flood/isolated-gauge-suspect":{"post":{"summary":"Demo Isolated Gauge Suspect","operationId":"demo_isolated_gauge_suspect_demo_flood_isolated_gauge_suspect_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Demo Isolated Gauge Suspect Demo Flood Isolated Gauge Suspect Post"}}}}}}},"/demo/flood/canisteo-reach":{"post":{"summary":"Demo Canisteo Reach Alert","operationId":"demo_canisteo_reach_alert_demo_flood_canisteo_reach_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Demo Canisteo Reach Alert Demo Flood Canisteo Reach Post"}}}}}}},"/demo/flood":{"post":{"summary":"Demo Flood","operationId":"demo_flood_demo_flood_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Demo Flood Demo Flood Post"}}}}}}},"/demo/unrest":{"post":{"summary":"Demo Unrest","operationId":"demo_unrest_demo_unrest_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Demo Unrest Demo Unrest Post"}}}}}}},"/demo/weather":{"post":{"summary":"Demo Weather","operationId":"demo_weather_demo_weather_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Demo Weather Demo Weather Post"}}}}}}}},"components":{"schemas":{"Alert":{"properties":{"alert_id":{"type":"string","title":"Alert Id"},"region":{"type":"string","title":"Region"},"title":{"type":"string","title":"Title"},"summary":{"type":"string","title":"Summary"},"severity":{"$ref":"#/components/schemas/Severity"},"category":{"$ref":"#/components/schemas/RiskCategory"},"disposition":{"$ref":"#/components/schemas/IncidentDisposition"},"risk_score":{"type":"number","title":"Risk Score"},"confidence":{"type":"number","title":"Confidence"},"actions":{"items":{"$ref":"#/components/schemas/DecisionAction"},"type":"array","title":"Actions"},"assessment_id":{"type":"string","title":"Assessment Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["region","title","summary","severity","category","disposition","risk_score","confidence","actions","assessment_id"],"title":"Alert"},"AssetPresenceHeartbeatRequest":{"properties":{"session_id":{"type":"string","title":"Session Id"},"asset_type":{"type":"string","title":"Asset Type","default":"personnel"},"role_key":{"type":"string","title":"Role Key","default":"field"},"display_name":{"type":"string","title":"Display Name","default":""},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"},"accuracy_m":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Accuracy M"},"source":{"type":"string","title":"Source","default":"operator_pwa"}},"type":"object","required":["session_id","latitude","longitude"],"title":"AssetPresenceHeartbeatRequest"},"AssetPresenceLeaveRequest":{"properties":{"session_id":{"type":"string","title":"Session Id"}},"type":"object","required":["session_id"],"title":"AssetPresenceLeaveRequest"},"AuditEvent":{"properties":{"event_id":{"type":"string","title":"Event Id"},"event_type":{"type":"string","title":"Event Type"},"entity_type":{"type":"string","title":"Entity Type"},"entity_id":{"type":"string","title":"Entity Id"},"actor":{"type":"string","title":"Actor"},"outcome":{"type":"string","title":"Outcome"},"details":{"additionalProperties":true,"type":"object","title":"Details"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["event_type","entity_type","entity_id","actor","outcome"],"title":"AuditEvent"},"DecisionAction":{"properties":{"role":{"$ref":"#/components/schemas/ICSRole"},"action":{"type":"string","title":"Action"},"urgency":{"$ref":"#/components/schemas/Severity"}},"type":"object","required":["role","action","urgency"],"title":"DecisionAction"},"DerivedFeature":{"properties":{"key":{"type":"string","title":"Key"},"raw_value":{"type":"number","title":"Raw Value"},"normalized_value":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Normalized Value"},"weight":{"type":"number","maximum":5.0,"minimum":0.0,"title":"Weight","default":1.0},"explanation":{"type":"string","title":"Explanation"}},"type":"object","required":["key","raw_value","normalized_value","explanation"],"title":"DerivedFeature"},"EventChecklistSubmit":{"properties":{"site_id":{"type":"string","title":"Site Id","default":""},"posture_class":{"type":"string","title":"Posture Class","default":""},"posture_label":{"type":"string","title":"Posture Label","default":""},"fingerprint":{"type":"string","title":"Fingerprint","default":""},"page":{"type":"string","title":"Page","default":""},"dismiss_mode":{"type":"string","title":"Dismiss Mode","default":""},"checks":{"additionalProperties":{"type":"boolean"},"type":"object","title":"Checks"},"total_items":{"type":"integer","title":"Total Items","default":0}},"type":"object","title":"EventChecklistSubmit","description":"Browser event-watch checklist snapshot for later eval."},"EvidenceItem":{"properties":{"signal_id":{"type":"string","title":"Signal Id"},"source_id":{"type":"string","title":"Source Id"},"source_name":{"type":"string","title":"Source Name"},"trust_tier":{"$ref":"#/components/schemas/TrustTier"},"confidence":{"type":"number","title":"Confidence"},"feature_keys":{"items":{"type":"string"},"type":"array","title":"Feature Keys"},"summary":{"type":"string","title":"Summary"}},"type":"object","required":["signal_id","source_id","source_name","trust_tier","confidence","summary"],"title":"EvidenceItem"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthStatus":{"properties":{"status":{"type":"string","title":"Status","default":"ok"},"uptime_seconds":{"type":"number","title":"Uptime Seconds"},"signals_ingested":{"type":"integer","title":"Signals Ingested"},"assessments_generated":{"type":"integer","title":"Assessments Generated"},"alerts_generated":{"type":"integer","title":"Alerts Generated"},"rejected_signals":{"type":"integer","title":"Rejected Signals"},"active_websockets":{"type":"integer","title":"Active Websockets"},"drift_warnings":{"type":"integer","title":"Drift Warnings"},"auto_tuning_recommendations":{"type":"integer","title":"Auto Tuning Recommendations"}},"type":"object","required":["uptime_seconds","signals_ingested","assessments_generated","alerts_generated","rejected_signals","active_websockets","drift_warnings","auto_tuning_recommendations"],"title":"HealthStatus"},"ICSRole":{"type":"string","enum":["incident_commander","operations","planning","logistics","public_information","safety"],"title":"ICSRole"},"IncidentDisposition":{"type":"string","enum":["monitor","prepare","escalate","act_now"],"title":"IncidentDisposition"},"IngestEnvelope":{"properties":{"signal":{"$ref":"#/components/schemas/SourceSignal"},"signature":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signature"}},"type":"object","required":["signal"],"title":"IngestEnvelope"},"OperatorAlertAcknowledgeRequest":{"properties":{"dashboard_mode":{"type":"string","title":"Dashboard Mode"},"posture":{"type":"string","title":"Posture"},"posture_class":{"type":"string","title":"Posture Class"},"fingerprint":{"type":"string","title":"Fingerprint"},"operator_responded_at":{"type":"string","title":"Operator Responded At"},"alert_raised_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alert Raised At"},"alert_count":{"type":"integer","title":"Alert Count","default":0},"highest_score":{"type":"number","title":"Highest Score","default":0.0},"operator_label":{"type":"string","title":"Operator Label","default":"dashboard-operator"},"acknowledged_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Acknowledged At"},"threat_signature":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Threat Signature"}},"type":"object","required":["dashboard_mode","posture","posture_class","fingerprint","operator_responded_at"],"title":"OperatorAlertAcknowledgeRequest"},"OperatorPresenceHeartbeatRequest":{"properties":{"session_id":{"type":"string","title":"Session Id"},"page":{"type":"string","title":"Page","default":"operator"}},"type":"object","required":["session_id"],"title":"OperatorPresenceHeartbeatRequest"},"OperatorPresenceLeaveRequest":{"properties":{"session_id":{"type":"string","title":"Session Id"}},"type":"object","required":["session_id"],"title":"OperatorPresenceLeaveRequest"},"RiskAssessment":{"properties":{"assessment_id":{"type":"string","title":"Assessment Id"},"region":{"type":"string","title":"Region"},"category":{"$ref":"#/components/schemas/RiskCategory"},"score":{"type":"number","maximum":100.0,"minimum":0.0,"title":"Score"},"severity":{"$ref":"#/components/schemas/Severity"},"confidence":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Confidence"},"disposition":{"$ref":"#/components/schemas/IncidentDisposition"},"rationale":{"items":{"type":"string"},"type":"array","title":"Rationale"},"features":{"items":{"$ref":"#/components/schemas/DerivedFeature"},"type":"array","title":"Features"},"evidence":{"items":{"$ref":"#/components/schemas/EvidenceItem"},"type":"array","title":"Evidence"},"recommended_actions":{"items":{"$ref":"#/components/schemas/DecisionAction"},"type":"array","title":"Recommended Actions"},"supporting_signal_ids":{"items":{"type":"string"},"type":"array","title":"Supporting Signal Ids"},"tuning_version":{"type":"string","title":"Tuning Version","default":"v2"},"drift_flags":{"items":{"type":"string"},"type":"array","title":"Drift Flags"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["region","category","score","severity","confidence","disposition"],"title":"RiskAssessment"},"RiskCategory":{"type":"string","enum":["natural_disaster","medical","infrastructure","civil_unrest","supply_chain","utility_failure","security","unknown"],"title":"RiskCategory"},"Severity":{"type":"string","enum":["info","low","medium","high","critical"],"title":"Severity"},"SignalType":{"type":"string","enum":["weather","infrastructure","disease","public_sentiment","unrest","logistics","utility","security","hydrology","hydrology_forecast"],"title":"SignalType"},"SourceKind":{"type":"string","enum":["municipal","sensor","weather_api","usgs","social_feed","operator","third_party"],"title":"SourceKind"},"SourceRegistration":{"properties":{"source_id":{"type":"string","title":"Source Id"},"display_name":{"type":"string","title":"Display Name"},"kind":{"$ref":"#/components/schemas/SourceKind"},"trust_tier":{"$ref":"#/components/schemas/TrustTier"},"region_scope":{"items":{"type":"string"},"type":"array","title":"Region Scope"},"default_confidence_floor":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Default Confidence Floor","default":0.4},"secret_key":{"type":"string","title":"Secret Key"},"enabled":{"type":"boolean","title":"Enabled","default":true},"max_requests_per_minute":{"type":"integer","title":"Max Requests Per Minute","default":60}},"type":"object","required":["source_id","display_name","kind","trust_tier","secret_key"],"title":"SourceRegistration"},"SourceSignal":{"properties":{"signal_id":{"type":"string","title":"Signal Id"},"signal_type":{"$ref":"#/components/schemas/SignalType"},"source_id":{"type":"string","title":"Source Id"},"source":{"type":"string","title":"Source"},"region":{"type":"string","title":"Region"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp"},"confidence":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Confidence"},"severity_hint":{"$ref":"#/components/schemas/Severity","default":"info"},"risk_category":{"$ref":"#/components/schemas/RiskCategory","default":"unknown"},"payload":{"additionalProperties":true,"type":"object","title":"Payload"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"}},"additionalProperties":true,"type":"object","required":["signal_type","source_id","source","region","confidence"],"title":"SourceSignal"},"TrustTier":{"type":"string","enum":["trusted","provisional","untrusted"],"title":"TrustTier"},"TuningRecommendation":{"properties":{"recommendation_id":{"type":"string","title":"Recommendation Id"},"category":{"$ref":"#/components/schemas/RiskCategory"},"reason":{"type":"string","title":"Reason"},"suggested_change":{"type":"string","title":"Suggested Change"},"confidence":{"type":"number","title":"Confidence"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["category","reason","suggested_change","confidence"],"title":"TuningRecommendation"},"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"}}}}