{"openapi":"3.0.3","info":{"title":"Syntalium Public API","version":"0.2.0","description":"Public same-origin API endpoints served by the Syntalium website and proxied to the co-located SignalX backend."},"servers":[{"url":"https://syntalium.com"}],"paths":{"/api/healthz":{"get":{"summary":"Service health check","operationId":"getHealthz","tags":["health"],"responses":{"200":{"description":"Service health payload","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","example":"ok"},"commit":{"type":"string","example":"a1b2c3d"},"time":{"type":"string","format":"date-time"}},"required":["status","time"]}}}}}}},"/api/release":{"get":{"summary":"Deployment provenance","operationId":"getReleaseProvenance","tags":["release"],"responses":{"200":{"description":"Release provenance payload","content":{"application/json":{"schema":{"type":"object","properties":{"service":{"type":"string","example":"syntalium-site"},"domain":{"type":"string","example":"syntalium.com"},"commit":{"type":"string","example":"UNKNOWN_OR_SHA"},"branch":{"type":"string","example":"UNKNOWN_OR_NAME"},"buildId":{"type":"string","example":"UNKNOWN_OR_BUILD_ID"},"deployedAtUtc":{"type":"string","format":"date-time"},"runtimeGenerated":{"type":"boolean","example":true},"node":{"type":"string","example":"v20.16.0"}},"required":["service","domain","commit","branch","buildId","deployedAtUtc","runtimeGenerated","node"]}}}}}}},"/api/public/btc":{"get":{"summary":"Live BTC market snapshot","description":"Same-origin proxy endpoint that returns SignalX BTC snapshot data.","operationId":"getPublicBtc","tags":["market"],"responses":{"200":{"description":"SignalX BTC snapshot payload","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"symbol":{"type":"string","example":"BTCUSDT"},"timeframe":{"type":"string","example":"5m"},"price":{"type":"number","example":67321.12},"timestamp_utc":{"type":"string","format":"date-time"},"market_state":{"type":"string","example":"WATCH"},"snap_id":{"type":"string","example":"snap_123"}}}}}},"502":{"description":"Upstream returned malformed or empty payload"},"503":{"description":"SignalX backend unavailable"}}}},"/api/public/stats":{"get":{"summary":"Signal activity stats snapshot","description":"Same-origin proxy endpoint for SignalX public stats.","operationId":"getPublicStats","tags":["stats"],"responses":{"200":{"description":"SignalX stats payload","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"signals_24h":{"type":"object","properties":{"signal_count":{"type":"number","example":14}}},"signals_all_time":{"type":"object","properties":{"signal_count":{"type":"number","example":998}}},"win_rate_24h":{"type":"object","additionalProperties":true},"win_rate_all_time":{"type":"object","additionalProperties":true},"open_positions":{"type":"number","example":3},"closed_positions":{"type":"number","example":7},"snapshot_stats":{"type":"object","properties":{"snapshot_count":{"type":"number","example":2230}}},"runtime_activity_summary":{"type":"object","additionalProperties":true}}}}}},"502":{"description":"Upstream returned malformed or empty payload"},"503":{"description":"SignalX backend unavailable"}}}},"/api/verify":{"get":{"summary":"Verify snapshot by query string","description":"Primary verify endpoint, proxied to SignalX as /api/verify?snap_id=<id>.","operationId":"getVerifyByQuery","tags":["verify"],"parameters":[{"name":"snap_id","in":"query","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"description":"Snapshot identifier."}],"responses":{"200":{"description":"Verification payload from SignalX","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid snap_id format"},"502":{"description":"Upstream returned malformed or empty payload"},"503":{"description":"SignalX backend unavailable"}}}},"/api/verify/{snap_id}":{"get":{"summary":"Verify snapshot by path (compatibility alias)","description":"Path-style alias for compatibility. Internally maps to /api/verify?snap_id=<id>.","operationId":"getVerifyBySnapId","tags":["verify"],"parameters":[{"name":"snap_id","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,128}$"},"description":"Snapshot identifier."}],"responses":{"200":{"description":"Verification payload from SignalX","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid snap_id format"},"502":{"description":"Upstream returned malformed or empty payload"},"503":{"description":"SignalX backend unavailable"}},"x-status":"compatibility-alias"}},"/api/market/btc":{"get":{"summary":"Legacy placeholder endpoint","description":"Legacy contract retained for backward compatibility.","operationId":"getMarketBtc","tags":["market"],"responses":{"501":{"description":"Legacy placeholder response"}}}}}}