{"openapi":"3.1.0","info":{"title":"Alpha Flow Signal Scanner","description":"Crypto trading signal API powered by Glassnode on-chain data and Google Gemini AI. Provides real-time ENTRY/SETUP/WAIT signals with ATR-based entry, stop, and target levels for BTC, ETH, SOL, DOGE, BNB, and PEPE. Agent API uses x402 USDC micropayments — no account needed.","version":"1.0.241"},"paths":{"/api/admin/signals":{"get":{"tags":["admin"],"summary":"Admin Signals","description":"Signal volume, direction distribution, accuracy by confidence bucket.","operationId":"admin_signals_api_admin_signals_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"asset","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Asset"}},{"name":"direction","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Direction"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":30,"title":"Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/users":{"get":{"tags":["admin"],"summary":"Admin Users","description":"User counts, plan distribution, daily activity, top scanners.","operationId":"admin_users_api_admin_users_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":30,"title":"Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/revenue":{"get":{"tags":["admin"],"summary":"Admin Revenue","description":"Payments by provider, credit transaction summary, subscription counts, daily revenue.","operationId":"admin_revenue_api_admin_revenue_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":30,"title":"Days"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/system":{"get":{"tags":["admin"],"summary":"Admin System","description":"Scan latency percentiles (SQL), error rate, deployment history.","operationId":"admin_system_api_admin_system_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/chat":{"get":{"tags":["admin"],"summary":"Admin Chat","description":"Chat usage: sessions, messages, voice vs text, token usage, daily activity.","operationId":"admin_chat_api_admin_chat_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":30,"title":"Days"}},{"name":"mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mode"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/promos":{"get":{"tags":["admin"],"summary":"Admin Promos","description":"Activation codes, redemption history, credit distribution stats.","operationId":"admin_promos_api_admin_promos_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"active","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Active"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/tariffs":{"get":{"tags":["admin"],"summary":"Admin Tariffs","description":"Read all tariff data (direct from DB) + cache stats.","operationId":"admin_tariffs_api_admin_tariffs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/admin/tariffs/plan-tiers":{"post":{"tags":["admin"],"summary":"Admin Create Plan Tier","description":"Create a new plan tier.","operationId":"admin_create_plan_tier_api_admin_tariffs_plan_tiers_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/admin/tariffs/plan-tiers/{name}":{"put":{"tags":["admin"],"summary":"Admin Update Plan Tier","description":"Update plan tier fields.","operationId":"admin_update_plan_tier_api_admin_tariffs_plan_tiers__name__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/tariffs/credit-packs":{"post":{"tags":["admin"],"summary":"Admin Create Credit Pack","description":"Create a new credit pack.","operationId":"admin_create_credit_pack_api_admin_tariffs_credit_packs_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/admin/tariffs/credit-packs/{pack_id}":{"put":{"tags":["admin"],"summary":"Admin Update Credit Pack","description":"Update credit pack fields.","operationId":"admin_update_credit_pack_api_admin_tariffs_credit_packs__pack_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"pack_id","in":"path","required":true,"schema":{"type":"string","title":"Pack Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/tariffs/subscription-products":{"post":{"tags":["admin"],"summary":"Admin Create Subscription Product","description":"Create a new subscription product.","operationId":"admin_create_subscription_product_api_admin_tariffs_subscription_products_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/admin/tariffs/subscription-products/{plan}":{"put":{"tags":["admin"],"summary":"Admin Update Subscription Product","description":"Update subscription product fields.","operationId":"admin_update_subscription_product_api_admin_tariffs_subscription_products__plan__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"plan","in":"path","required":true,"schema":{"type":"string","title":"Plan"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/tariffs/refresh-cache":{"post":{"tags":["admin"],"summary":"Admin Refresh Tariff Cache","description":"Force immediate tariff cache refresh.","operationId":"admin_refresh_tariff_cache_api_admin_tariffs_refresh_cache_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/admin/access":{"get":{"tags":["admin"],"summary":"Admin Access Status","operationId":"admin_access_status_api_admin_access_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/admin/access/mode":{"patch":{"tags":["admin"],"summary":"Admin Set Mode","operationId":"admin_set_mode_api_admin_access_mode_patch","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/admin/access/grants":{"get":{"tags":["admin"],"summary":"Admin List Grants","operationId":"admin_list_grants_api_admin_access_grants_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["admin"],"summary":"Admin Grant Access","operationId":"admin_grant_access_api_admin_access_grants_post","security":[{"HTTPBearer":[]}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/admin/access/grants/{telegram_id}":{"delete":{"tags":["admin"],"summary":"Admin Revoke Access","operationId":"admin_revoke_access_api_admin_access_grants__telegram_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"telegram_id","in":"path","required":true,"schema":{"type":"integer","title":"Telegram Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/admin/funnel":{"get":{"tags":["admin"],"summary":"Admin Funnel","description":"Payment funnel analysis: step counts, conversion rates, drop-off points, per-user journeys.","operationId":"admin_funnel_api_admin_funnel_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":30,"title":"Days"}},{"name":"provider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider"}},{"name":"product_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Product Type"}},{"name":"telegram_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Telegram Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/scan":{"post":{"tags":["v1","scan"],"summary":"Run Scan Endpoint","description":"Run an 8-metric on-chain scan + Gemini analysis.","operationId":"run_scan_endpoint_api_v1_scan_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScanResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/scan/{signal_id}":{"get":{"tags":["v1","scan"],"summary":"Get Signal","description":"Retrieve a stored signal by UUID.","operationId":"get_signal_api_v1_scan__signal_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"signal_id","in":"path","required":true,"schema":{"type":"string","title":"Signal Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/scan/{signal_id}/chart":{"get":{"tags":["v1","scan"],"summary":"Get Signal Chart","description":"Get chart PNG for a signal.","operationId":"get_signal_chart_api_v1_scan__signal_id__chart_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"signal_id","in":"path","required":true,"schema":{"type":"string","title":"Signal Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/signals":{"get":{"tags":["v1","signals"],"summary":"List Signals","description":"List signals (paginated, filterable by asset and status).","operationId":"list_signals_api_v1_signals_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"asset","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"title":"Asset"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(ENTRY|SETUP|WAIT)$"},{"type":"null"}],"title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":90,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/signals/stats":{"get":{"tags":["v1","signals"],"summary":"Signal Stats","description":"Aggregate performance stats across signals.","operationId":"signal_stats_api_v1_signals_stats_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"default":90,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/signals/{signal_id}/backtest":{"post":{"tags":["v1","signals"],"summary":"Run Backtest Endpoint","description":"Run or retrieve a backtest for a signal.","operationId":"run_backtest_endpoint_api_v1_signals__signal_id__backtest_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"signal_id","in":"path","required":true,"schema":{"type":"string","title":"Signal Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/signals/{signal_id}/backtest/chart":{"get":{"tags":["v1","signals"],"summary":"Backtest Chart","description":"Get backtest chart PNG for a signal.","operationId":"backtest_chart_api_v1_signals__signal_id__backtest_chart_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"signal_id","in":"path","required":true,"schema":{"type":"string","title":"Signal Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/account/balance":{"get":{"tags":["v1","account"],"summary":"Get Balance","description":"Get plan, credits, daily usage, subscription info.","operationId":"get_balance_api_v1_account_balance_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BalanceResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/account/profile":{"get":{"tags":["v1","account"],"summary":"Get Profile","description":"Get user profile.","operationId":"get_profile_api_v1_account_profile_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileResponse"}}}}},"security":[{"HTTPBearer":[]}]},"patch":{"tags":["v1","account"],"summary":"Update Profile","description":"Update display name.","operationId":"update_profile_api_v1_account_profile_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileUpdateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/account/api-keys":{"get":{"tags":["v1","account"],"summary":"List Api Keys","description":"List user's API keys (hash not exposed).","operationId":"list_api_keys_api_v1_account_api_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ApiKeyResponse"},"type":"array","title":"Response List Api Keys Api V1 Account Api Keys Get"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["v1","account"],"summary":"Create Api Key Endpoint","description":"Create a new API key (returns plaintext once).","operationId":"create_api_key_endpoint_api_v1_account_api_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreateRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/account/api-keys/{key_id}":{"delete":{"tags":["v1","account"],"summary":"Revoke Api Key","description":"Revoke (deactivate) an API key.","operationId":"revoke_api_key_api_v1_account_api_keys__key_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/account/transactions":{"get":{"tags":["v1","account"],"summary":"List Transactions","description":"Credit transaction history.","operationId":"list_transactions_api_v1_account_transactions_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/TransactionItem"},"title":"Response List Transactions Api V1 Account Transactions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/account/payments":{"get":{"tags":["v1","account"],"summary":"List Payments","description":"Payment history.","operationId":"list_payments_api_v1_account_payments_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PaymentItem"},"title":"Response List Payments Api V1 Account Payments Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/account/link":{"post":{"tags":["v1","account"],"summary":"Link Account","description":"Link a web account to a Telegram account using a /link token.","operationId":"link_account_api_v1_account_link_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/chat/sessions":{"post":{"tags":["v1","chat"],"summary":"Create Session","description":"Start a new chat session.","operationId":"create_session_api_v1_chat_sessions_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatSessionCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatSessionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/chat/sessions/{session_id}/messages":{"post":{"tags":["v1","chat"],"summary":"Send Message","description":"Send a message to a chat session and get a reply.","operationId":"send_message_api_v1_chat_sessions__session_id__messages_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatMessageRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatMessageResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/chat/sessions/{session_id}":{"get":{"tags":["v1","chat"],"summary":"Get Session","description":"Get session info + message history.","operationId":"get_session_api_v1_chat_sessions__session_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatSessionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["v1","chat"],"summary":"End Session","description":"End a chat session.","operationId":"end_session_api_v1_chat_sessions__session_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/plans":{"get":{"tags":["v1","billing"],"summary":"List Plans","description":"List available plan tiers + pricing.","operationId":"list_plans_api_v1_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PlanInfo"},"type":"array","title":"Response List Plans Api V1 Plans Get"}}}}}}},"/api/v1/plans/credit-packs":{"get":{"tags":["v1","billing"],"summary":"List Credit Packs","description":"List credit pack pricing.","operationId":"list_credit_packs_api_v1_plans_credit_packs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CreditPackInfo"},"type":"array","title":"Response List Credit Packs Api V1 Plans Credit Packs Get"}}}}}}},"/api/v1/billing/info":{"get":{"tags":["v1","billing"],"summary":"Billing Info","description":"Combined billing info: balance (if authenticated), plans, credit packs, pricing, links.\n\nOptional JWT auth — unauthenticated requests get public pricing only.","operationId":"billing_info_api_v1_billing_info_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingInfoResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/account/redeem":{"post":{"tags":["v1","billing"],"summary":"Redeem Code","description":"Redeem a promo/activation code.","operationId":"redeem_code_api_v1_account_redeem_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeemRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedeemResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/checkout/credit-pack":{"post":{"tags":["v1","billing"],"summary":"Checkout Credit Pack","description":"Create a Stripe checkout session for a credit pack.","operationId":"checkout_credit_pack_api_v1_checkout_credit_pack_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/checkout/subscription":{"post":{"tags":["v1","billing"],"summary":"Checkout Subscription","description":"Create a Stripe checkout session for a subscription.","operationId":"checkout_subscription_api_v1_checkout_subscription_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/agent/health":{"get":{"tags":["agent"],"summary":"Agent Health","description":"Discovery endpoint: capabilities, pricing, supported assets.","operationId":"agent_health_api_agent_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentHealthResponse"}}}}}}},"/api/agent/scan":{"post":{"tags":["agent"],"summary":"Agent Scan","description":"Run full 8-metric on-chain scan + Gemini analysis.","operationId":"agent_scan_api_agent_scan_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentScanRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentScanResponse"}}}},"402":{"description":"Payment Required — send USDC via x402 protocol and retry with X-PAYMENT header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/X402PaymentRequired"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/signals":{"get":{"tags":["agent"],"summary":"Agent List Signals","description":"List recent public signals (not scoped to any user).","operationId":"agent_list_signals_api_agent_signals_get","parameters":[{"name":"asset","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"title":"Asset"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(ENTRY|SETUP|WAIT)$"},{"type":"null"}],"title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":20,"title":"Limit"}},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":30,"title":"Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentSignalListResponse"}}}},"402":{"description":"Payment Required — send USDC via x402 protocol and retry with X-PAYMENT header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/X402PaymentRequired"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/signals/{signal_id}":{"get":{"tags":["agent"],"summary":"Agent Get Signal","description":"Get full signal detail by UUID (no ownership check).","operationId":"agent_get_signal_api_agent_signals__signal_id__get","parameters":[{"name":"signal_id","in":"path","required":true,"schema":{"type":"string","title":"Signal Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"402":{"description":"Payment Required — send USDC via x402 protocol and retry with X-PAYMENT header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/X402PaymentRequired"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/agent/signals/{signal_id}/backtest":{"post":{"tags":["agent"],"summary":"Agent Run Backtest","description":"Run or retrieve backtest for a signal (no ownership check).","operationId":"agent_run_backtest_api_agent_signals__signal_id__backtest_post","parameters":[{"name":"signal_id","in":"path","required":true,"schema":{"type":"string","title":"Signal Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentBacktestResponse"}}}},"402":{"description":"Payment Required — send USDC via x402 protocol and retry with X-PAYMENT header","content":{"application/json":{"schema":{"$ref":"#/components/schemas/X402PaymentRequired"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhook":{"post":{"summary":"Telegram Webhook","operationId":"telegram_webhook_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/media-post":{"post":{"summary":"Media Post","operationId":"media_post_api_media_post_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/metrics-snapshot":{"post":{"summary":"Metrics Snapshot","description":"Cheap metric collection — 8 MCP fetches + pre-computation, NO Gemini call.\n\nStores raw metrics + computed summaries for backtesting at ~$0/day.","operationId":"metrics_snapshot_api_metrics_snapshot_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/scan-bg":{"post":{"summary":"Scan Background","description":"Background scan endpoint — scans assets silently for DB population.\n\nRuns scan + persists to signals table with source='background'.\nNo Telegram messages sent. Used by the scheduler for backtest data.\nCost-guarded by MAX_DAILY_BG_SCANS (DB-backed counter).","operationId":"scan_background_api_scan_bg_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/scan":{"post":{"summary":"Api Scan","description":"External API scan endpoint — authenticated via API key.","operationId":"api_scan_api_scan_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/webhooks/stripe":{"post":{"summary":"Stripe Webhook","description":"Stripe webhook endpoint (Phase 3).","operationId":"stripe_webhook_webhooks_stripe_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/webhooks/crypto":{"post":{"summary":"Crypto Webhook","description":"NOWPayments IPN webhook endpoint (Phase 4).","operationId":"crypto_webhook_webhooks_crypto_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AgentBacktestResponse":{"properties":{"signal_id":{"type":"string","title":"Signal Id"},"asset":{"type":"string","title":"Asset"},"direction":{"type":"string","title":"Direction"},"outcome":{"type":"string","title":"Outcome"},"entry_price":{"type":"number","title":"Entry Price"},"exit_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Exit Price"},"exit_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Exit Time"},"pnl_1x":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pnl 1X"},"pnl_3x":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pnl 3X"},"pnl_10x":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pnl 10X"},"liquidated_10x":{"type":"boolean","title":"Liquidated 10X","default":false},"max_favorable":{"type":"number","title":"Max Favorable","default":0.0},"max_adverse":{"type":"number","title":"Max Adverse","default":0.0},"bars_to_exit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bars To Exit"},"candle_interval":{"type":"string","title":"Candle Interval","default":"4h"},"current_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Current Price"}},"type":"object","required":["signal_id","asset","direction","outcome","entry_price"],"title":"AgentBacktestResponse"},"AgentEndpointPricing":{"properties":{"path":{"type":"string","title":"Path"},"method":{"type":"string","title":"Method"},"price_usd":{"type":"string","title":"Price Usd"},"description":{"type":"string","title":"Description"}},"type":"object","required":["path","method","price_usd","description"],"title":"AgentEndpointPricing"},"AgentHealthResponse":{"properties":{"status":{"type":"string","title":"Status","default":"ok"},"version":{"type":"string","title":"Version"},"supported_assets":{"items":{"type":"string"},"type":"array","title":"Supported Assets"},"endpoints":{"items":{"$ref":"#/components/schemas/AgentEndpointPricing"},"type":"array","title":"Endpoints"},"networks":{"items":{"type":"string"},"type":"array","title":"Networks"},"facilitator_url":{"type":"string","title":"Facilitator Url"}},"type":"object","required":["version","supported_assets","endpoints","networks","facilitator_url"],"title":"AgentHealthResponse"},"AgentScanRequest":{"properties":{"asset":{"type":"string","maxLength":10,"title":"Asset","default":"BTC"},"exchange":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Exchange"}},"type":"object","title":"AgentScanRequest"},"AgentScanResponse":{"properties":{"signal_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signal Id"},"asset":{"type":"string","title":"Asset"},"direction":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Direction"},"status":{"type":"string","title":"Status"},"confidence":{"type":"integer","title":"Confidence","default":0},"confidence_long":{"type":"integer","title":"Confidence Long","default":0},"confidence_short":{"type":"integer","title":"Confidence Short","default":0},"entry":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Entry"},"stop":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Stop"},"targets":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Targets"},"rr":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rr"},"thesis":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thesis"},"thesis_detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thesis Detail"},"genesis_insight":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Genesis Insight"},"top_risk":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Top Risk"},"watch_for":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Watch For"},"leverage_grid":{"anyOf":[{},{"type":"null"}],"title":"Leverage Grid"},"elapsed":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Elapsed"}},"type":"object","required":["asset","status"],"title":"AgentScanResponse"},"AgentSignalBrief":{"properties":{"id":{"type":"string","title":"Id"},"asset":{"type":"string","title":"Asset"},"direction":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Direction"},"status":{"type":"string","title":"Status"},"confidence":{"type":"integer","title":"Confidence","default":0},"created_at":{"type":"string","title":"Created At"},"entry":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Entry"},"stop":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Stop"},"targets":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Targets"},"rr":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rr"}},"type":"object","required":["id","asset","status","created_at"],"title":"AgentSignalBrief"},"AgentSignalListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/AgentSignalBrief"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"}},"type":"object","required":["items","total","limit"],"title":"AgentSignalListResponse"},"ApiKeyCreateRequest":{"properties":{"label":{"type":"string","maxLength":50,"title":"Label","default":"default"}},"type":"object","title":"ApiKeyCreateRequest"},"ApiKeyCreateResponse":{"properties":{"id":{"type":"string","title":"Id"},"key_prefix":{"type":"string","title":"Key Prefix"},"label":{"type":"string","title":"Label"},"plaintext_key":{"type":"string","title":"Plaintext Key"}},"type":"object","required":["id","key_prefix","label","plaintext_key"],"title":"ApiKeyCreateResponse"},"ApiKeyResponse":{"properties":{"id":{"type":"string","title":"Id"},"key_prefix":{"type":"string","title":"Key Prefix"},"label":{"type":"string","title":"Label"},"created_at":{"type":"string","title":"Created At"},"last_used_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Used At"},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["id","key_prefix","label","created_at"],"title":"ApiKeyResponse"},"BacktestResponse":{"properties":{"signal_id":{"type":"string","title":"Signal Id"},"asset":{"type":"string","title":"Asset"},"direction":{"type":"string","title":"Direction"},"outcome":{"type":"string","title":"Outcome"},"entry_price":{"type":"number","title":"Entry Price"},"exit_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Exit Price"},"exit_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Exit Time"},"pnl_1x":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pnl 1X"},"pnl_3x":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pnl 3X"},"pnl_10x":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pnl 10X"},"liquidated_10x":{"type":"boolean","title":"Liquidated 10X","default":false},"max_favorable":{"type":"number","title":"Max Favorable","default":0.0},"max_adverse":{"type":"number","title":"Max Adverse","default":0.0},"bars_to_exit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bars To Exit"},"candle_interval":{"type":"string","title":"Candle Interval","default":"4h"},"current_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Current Price"}},"type":"object","required":["signal_id","asset","direction","outcome","entry_price"],"title":"BacktestResponse"},"BalanceResponse":{"properties":{"plan":{"type":"string","title":"Plan"},"plan_display":{"type":"string","title":"Plan Display"},"credits":{"type":"integer","title":"Credits","default":0},"daily_scans_used":{"type":"integer","title":"Daily Scans Used","default":0},"daily_scans_limit":{"type":"integer","title":"Daily Scans Limit","default":0},"daily_chats_used":{"type":"integer","title":"Daily Chats Used","default":0},"daily_chats_limit":{"type":"integer","title":"Daily Chats Limit","default":0},"subscription":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Subscription"},"billing_enabled":{"type":"boolean","title":"Billing Enabled","default":false}},"type":"object","required":["plan","plan_display"],"title":"BalanceResponse"},"BillingInfoCreditPack":{"properties":{"id":{"type":"string","title":"Id"},"credits":{"type":"integer","title":"Credits"},"label":{"type":"string","title":"Label"},"usd":{"type":"number","title":"Usd"}},"type":"object","required":["id","credits","label","usd"],"title":"BillingInfoCreditPack"},"BillingInfoPlan":{"properties":{"name":{"type":"string","title":"Name"},"display_name":{"type":"string","title":"Display Name"},"daily_scans":{"anyOf":[{"type":"integer"},{"type":"string"}],"title":"Daily Scans"},"daily_chats":{"anyOf":[{"type":"integer"},{"type":"string"}],"title":"Daily Chats"},"monthly_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Monthly Usd"}},"type":"object","required":["name","display_name","daily_scans","daily_chats"],"title":"BillingInfoPlan"},"BillingInfoResponse":{"properties":{"balance":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Balance"},"plans":{"items":{"$ref":"#/components/schemas/BillingInfoPlan"},"type":"array","title":"Plans"},"credit_packs":{"items":{"$ref":"#/components/schemas/BillingInfoCreditPack"},"type":"array","title":"Credit Packs"},"x402_pricing":{"additionalProperties":{"type":"string"},"type":"object","title":"X402 Pricing"},"links":{"additionalProperties":{"type":"string"},"type":"object","title":"Links"}},"type":"object","title":"BillingInfoResponse"},"ChatMessageRequest":{"properties":{"message":{"type":"string","maxLength":4000,"minLength":1,"title":"Message"}},"type":"object","required":["message"],"title":"ChatMessageRequest"},"ChatMessageResponse":{"properties":{"reply":{"type":"string","title":"Reply"},"session_id":{"type":"string","title":"Session Id"}},"type":"object","required":["reply","session_id"],"title":"ChatMessageResponse"},"ChatSessionCreate":{"properties":{"mode":{"type":"string","pattern":"^(strategy|signal)$","title":"Mode","default":"strategy"},"signal_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signal Id"}},"type":"object","title":"ChatSessionCreate"},"ChatSessionResponse":{"properties":{"session_id":{"type":"string","title":"Session Id"},"mode":{"type":"string","title":"Mode"},"created_at":{"type":"string","title":"Created At"},"messages":{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array","title":"Messages"}},"type":"object","required":["session_id","mode","created_at"],"title":"ChatSessionResponse"},"CheckoutRequest":{"properties":{"product_id":{"type":"string","title":"Product Id"},"success_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Success Url"},"cancel_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cancel Url"}},"type":"object","required":["product_id"],"title":"CheckoutRequest"},"CheckoutResponse":{"properties":{"checkout_url":{"type":"string","title":"Checkout Url"}},"type":"object","required":["checkout_url"],"title":"CheckoutResponse"},"CreditPackInfo":{"properties":{"id":{"type":"string","title":"Id"},"credits":{"type":"integer","title":"Credits"},"label":{"type":"string","title":"Label"},"stripe_price_cents":{"type":"integer","title":"Stripe Price Cents"}},"type":"object","required":["id","credits","label","stripe_price_cents"],"title":"CreditPackInfo"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"LinkRequest":{"properties":{"token":{"type":"string","maxLength":100,"minLength":1,"title":"Token"}},"type":"object","required":["token"],"title":"LinkRequest"},"LinkResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"},"telegram_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Telegram Id"},"rows_migrated":{"type":"integer","title":"Rows Migrated","default":0}},"type":"object","required":["success","message"],"title":"LinkResponse"},"PaymentItem":{"properties":{"id":{"type":"string","title":"Id"},"provider":{"type":"string","title":"Provider"},"type":{"type":"string","title":"Type"},"product_id":{"type":"string","title":"Product Id"},"amount_usd_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Amount Usd Cents"},"credits_granted":{"type":"integer","title":"Credits Granted","default":0},"status":{"type":"string","title":"Status"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","provider","type","product_id","status","created_at"],"title":"PaymentItem"},"PlanInfo":{"properties":{"name":{"type":"string","title":"Name"},"display_name":{"type":"string","title":"Display Name"},"daily_scans":{"type":"integer","title":"Daily Scans"},"daily_chats":{"type":"integer","title":"Daily Chats"},"monthly_stripe_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Monthly Stripe Cents"}},"type":"object","required":["name","display_name","daily_scans","daily_chats"],"title":"PlanInfo"},"ProfileResponse":{"properties":{"telegram_id":{"type":"integer","title":"Telegram Id"},"auth_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auth Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"first_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Name"},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"plan":{"type":"string","title":"Plan","default":"free"},"credits":{"type":"integer","title":"Credits","default":0},"created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["telegram_id"],"title":"ProfileResponse"},"ProfileUpdateRequest":{"properties":{"first_name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"First Name"}},"type":"object","title":"ProfileUpdateRequest"},"RedeemRequest":{"properties":{"code":{"type":"string","maxLength":50,"minLength":1,"title":"Code"}},"type":"object","required":["code"],"title":"RedeemRequest"},"RedeemResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"message":{"type":"string","title":"Message"},"credits_granted":{"type":"integer","title":"Credits Granted","default":0}},"type":"object","required":["success","message"],"title":"RedeemResponse"},"ScanRequest":{"properties":{"asset":{"type":"string","maxLength":10,"title":"Asset","default":"BTC"},"exchange":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Exchange"}},"type":"object","title":"ScanRequest"},"ScanResponse":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"asset":{"type":"string","title":"Asset"},"direction":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Direction"},"status":{"type":"string","title":"Status"},"confidence":{"type":"integer","title":"Confidence"},"confidence_long":{"type":"integer","title":"Confidence Long","default":0},"confidence_short":{"type":"integer","title":"Confidence Short","default":0},"entry":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Entry"},"stop":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Stop"},"targets":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Targets"},"rr":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rr"},"thesis":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thesis"},"signal_data":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Signal Data"},"leverage_grid":{"anyOf":[{},{"type":"null"}],"title":"Leverage Grid"},"elapsed":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Elapsed"}},"type":"object","required":["asset","direction","status","confidence"],"title":"ScanResponse"},"SignalBrief":{"properties":{"id":{"type":"string","title":"Id"},"asset":{"type":"string","title":"Asset"},"direction":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Direction"},"status":{"type":"string","title":"Status"},"confidence":{"type":"integer","title":"Confidence"},"created_at":{"type":"string","title":"Created At"},"entry":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Entry"},"stop":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Stop"},"targets":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"null"}],"title":"Targets"},"rr":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rr"}},"type":"object","required":["id","asset","direction","status","confidence","created_at"],"title":"SignalBrief"},"SignalListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SignalBrief"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"},"has_more":{"type":"boolean","title":"Has More"}},"type":"object","required":["items","total","limit","offset","has_more"],"title":"SignalListResponse"},"StatsResponse":{"properties":{"total_signals":{"type":"integer","title":"Total Signals","default":0},"entry_signals":{"type":"integer","title":"Entry Signals","default":0},"backtested":{"type":"integer","title":"Backtested","default":0},"win_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Win Rate"},"avg_pnl_1x":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Pnl 1X"},"avg_rr":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Rr"},"by_asset":{"additionalProperties":true,"type":"object","title":"By Asset"}},"type":"object","title":"StatsResponse"},"TransactionItem":{"properties":{"id":{"type":"string","title":"Id"},"type":{"type":"string","title":"Type"},"amount":{"type":"integer","title":"Amount"},"balance_after":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Balance After"},"reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference"},"created_at":{"type":"string","title":"Created At"}},"type":"object","required":["id","type","amount","created_at"],"title":"TransactionItem"},"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"},"X402PaymentRequired":{"properties":{"error":{"type":"string","title":"Error","description":"Always 'Payment Required'","default":"Payment Required"},"accepts":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Accepts","description":"Payment options: asset, network, amount, pay_to address"},"x402_version":{"type":"string","title":"X402 Version","description":"x402 protocol version","default":"1"}},"type":"object","required":["accepts"],"title":"X402PaymentRequired","description":"Returned when a paid endpoint is called without a valid X-PAYMENT header.\n\nThe agent should: (1) read the x402 payment details from response headers,\n(2) construct a USDC payment on Base network for the specified amount,\n(3) retry the same request with the X-PAYMENT header containing the signed tx."}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}