{"message":"AxiomFlow Signal Correlation Platform","version":"1.0.0","status":"operational","timestamp":"2026-09-01T08:57:13.816Z","architecture":"Dual API Structure - Webhooks + REST API","features":{"authentication":"Active (Google OAuth)","subscriptions":"Disabled (will be enabled later)","signalCorrelation":"Active","multiDestination":"Active"},"endpoints":{"health":{"standard":"/health","ping":"/health/ping","detailed":"/health/detailed","quick":"/health/quick","status":"/health/status","test":"/health/test"},"auth":{"google_oauth":"/auth/google","callback":"/auth/google/callback","logout":"/auth/logout","user_info":"/auth/user"},"webhooks":{"state_processing":"/state/{webhookSlug}/{name}/{token}","signal_processing":"/signal/{webhookSlug}/{name}/{token}","description":"External webhook endpoints (no /api prefix for TradingView compatibility)","authentication":"The {webhookSlug}/{name}/{token} triple itself - no Authorization header","webhookSlug":"Per-user slug (3-20 chars, A-Z a-z 0-9 _ -), not the userId"},"api":{"authentication":"Bearer JWT required on every /api route; the owner is derived from the token","configuration":{"state_configuration":"/api/state-configuration","signal_configuration":"/api/signal-configuration"},"state_retrieval":{"individual_state":"/api/state/{userId}/{stateKey}","all_user_states":"/api/state/all/{userId}","debug_config":"/api/state/debug/{webhookSlug}/{name}","test_regex":"/api/state/test-regex","note":"The {userId} paths are self-scoped - they must match the authenticated caller"},"monitoring":{"logs":"/api/logs"}}},"documentation":{"architecture":"Dual mounting - webhooks at root, API under /api","webhook_usage":"External systems (TradingView) use /state/* and /signal/*","api_usage":"Internal systems and frontend use /api/* endpoints","state_flow":"TradingView → /state/{webhookSlug}/{name}/{token} → Redis → /signal/{webhookSlug}/{name}/{token} → Destinations"}}