{"openapi":"3.1.0","info":{"title":"Pirana API","description":"Financial data API for Indonesia Stock Exchange (IDX)","version":"0.1.0"},"paths":{"/health":{"get":{"summary":"Health","description":"Health check — verifies API is up and Supabase is reachable.","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/auth/register":{"post":{"tags":["Auth","Auth"],"summary":"Register","description":"Register a new user with email and password.","operationId":"register_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/login":{"post":{"tags":["Auth","Auth"],"summary":"Login","description":"Login with email and password.","operationId":"login_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/refresh":{"post":{"tags":["Auth","Auth"],"summary":"Refresh","description":"Refresh an access token using a refresh token.","operationId":"refresh_auth_refresh_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/logout":{"post":{"tags":["Auth","Auth"],"summary":"Logout","description":"Logout and invalidate the current session.","operationId":"logout_auth_logout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/auth/me":{"get":{"tags":["Auth","Auth"],"summary":"Get Me","description":"Get the current user's profile.","operationId":"get_me_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileResponse"}}}}}},"patch":{"tags":["Auth","Auth"],"summary":"Update Me","description":"Update the current user's profile (full_name, nickname).","operationId":"update_me_auth_me_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProfileRequest"}}},"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"}}}}}}},"/auth/change-password":{"post":{"tags":["Auth","Auth"],"summary":"Change Password","description":"Change the current user's password.","operationId":"change_password_auth_change_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePasswordRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/forgot-password":{"post":{"tags":["Auth","Auth"],"summary":"Forgot Password","description":"Send a password reset email.","operationId":"forgot_password_auth_forgot_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgotPasswordRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/auth/telegram-login":{"post":{"tags":["Auth","Auth"],"summary":"Telegram Login","description":"Login or register via Telegram Login Widget.","operationId":"telegram_login_auth_telegram_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TelegramLoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies":{"get":{"tags":["Companies"],"summary":"List Companies","description":"List all companies with optional sector/board filters.","operationId":"list_companies_v1_companies_get","parameters":[{"name":"sector","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by sector","title":"Sector"},"description":"Filter by sector"},{"name":"sub_sector","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by sub-sector","title":"Sub Sector"},"description":"Filter by sub-sector"},{"name":"listing_board","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by listing board","title":"Listing Board"},"description":"Filter by listing board"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"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":{"$ref":"#/components/schemas/PaginatedResponse_CompanyListItem_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/search":{"get":{"tags":["Companies"],"summary":"Search","description":"Search companies by name or symbol.","operationId":"search_v1_companies_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"description":"Search query (name or symbol)","title":"Q"},"description":"Search query (name or symbol)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse_CompanySearchResult_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/company/{symbol}":{"get":{"tags":["Companies"],"summary":"Get Company","description":"Get full company detail including key stats, news, and index memberships.","operationId":"get_company_v1_company__symbol__get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/company/{symbol}/price":{"get":{"tags":["Prices"],"summary":"Get Prices","description":"Get OHLCV price history.\n\n- interval=1d (default): daily bars from daily_prices. Items include date, market_cap,\n  volume (shares), value (IDR traded), and foreign flows in BOTH share counts\n  (foreign_buy/foreign_sell) and IDR-denominated form (foreign_*_value_idr).\n- interval=1h: hourly bars from hourly_prices. Items include timestamp (ISO datetime).\n  Rolling 14-day window only; older data pruned nightly. ~7 bars per IDX trading day.\n  Refreshed daily at 16:00 UTC — still EOD, not live. No data on weekends/holidays.\n  Hourly rows omit market_cap, value, and foreign flows.\n\nNote on foreign flows: IDX publishes foreign_buy/foreign_sell as SHARE counts, not IDR.\nTo get IDR-denominated net flow, use the foreign_net_value_idr field (computed per row\nvia VWAP = value / volume, falling back to close when value is NULL on pre-2026-04-01\nrows or untraded symbols).","operationId":"get_prices_v1_company__symbol__price_get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}},{"name":"interval","in":"query","required":false,"schema":{"enum":["1d","1h"],"type":"string","description":"Bar size: 1d (daily) or 1h (hourly, rolling 14d window)","default":"1d","title":"Interval"},"description":"Bar size: 1d (daily) or 1h (hourly, rolling 14d window)"},{"name":"start","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Start date (YYYY-MM-DD). For 1h, interpreted as 00:00 UTC","title":"Start"},"description":"Start date (YYYY-MM-DD). For 1h, interpreted as 00:00 UTC"},{"name":"end","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"End date (YYYY-MM-DD). For 1h, interpreted as end of day","title":"End"},"description":"End date (YYYY-MM-DD). For 1h, interpreted as end of day"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":365,"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":{"$ref":"#/components/schemas/PaginatedResponse_PriceItem_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/screener":{"get":{"tags":["Screener"],"summary":"Screener","description":"Multi-filter stock screener. Free users limited to 5 filters.","operationId":"screener_v1_screener_get","parameters":[{"name":"sector","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by sector name","title":"Sector"},"description":"Filter by sector name"},{"name":"sub_sector","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by sub-sector name","title":"Sub Sector"},"description":"Filter by sub-sector name"},{"name":"listing_board","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by listing board (Main/Development/Acceleration)","title":"Listing Board"},"description":"Filter by listing board (Main/Development/Acceleration)"},{"name":"pe_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Minimum PE ratio","title":"Pe Min"},"description":"Minimum PE ratio"},{"name":"pe_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Maximum PE ratio","title":"Pe Max"},"description":"Maximum PE ratio"},{"name":"pb_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Minimum PB ratio","title":"Pb Min"},"description":"Minimum PB ratio"},{"name":"pb_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Maximum PB ratio","title":"Pb Max"},"description":"Maximum PB ratio"},{"name":"ps_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Minimum PS ratio","title":"Ps Min"},"description":"Minimum PS ratio"},{"name":"ps_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Maximum PS ratio","title":"Ps Max"},"description":"Maximum PS ratio"},{"name":"market_cap_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum market cap (IDR)","title":"Market Cap Min"},"description":"Minimum market cap (IDR)"},{"name":"market_cap_max","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Maximum market cap (IDR)","title":"Market Cap Max"},"description":"Maximum market cap (IDR)"},{"name":"dividend_yield_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Minimum dividend yield","title":"Dividend Yield Min"},"description":"Minimum dividend yield"},{"name":"dividend_yield_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Maximum dividend yield","title":"Dividend Yield Max"},"description":"Maximum dividend yield"},{"name":"roe_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Minimum return on equity","title":"Roe Min"},"description":"Minimum return on equity"},{"name":"roe_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Maximum return on equity","title":"Roe Max"},"description":"Maximum return on equity"},{"name":"roa_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Minimum return on assets","title":"Roa Min"},"description":"Minimum return on assets"},{"name":"roa_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Maximum return on assets","title":"Roa Max"},"description":"Maximum return on assets"},{"name":"debt_to_equity_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Minimum debt-to-equity","title":"Debt To Equity Min"},"description":"Minimum debt-to-equity"},{"name":"debt_to_equity_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Maximum debt-to-equity","title":"Debt To Equity Max"},"description":"Maximum debt-to-equity"},{"name":"net_margin_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Minimum net margin","title":"Net Margin Min"},"description":"Minimum net margin"},{"name":"net_margin_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Maximum net margin","title":"Net Margin Max"},"description":"Maximum net margin"},{"name":"revenue_growth_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Minimum revenue growth YoY","title":"Revenue Growth Min"},"description":"Minimum revenue growth YoY"},{"name":"revenue_growth_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Maximum revenue growth YoY","title":"Revenue Growth Max"},"description":"Maximum revenue growth YoY"},{"name":"earnings_growth_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Minimum earnings growth YoY","title":"Earnings Growth Min"},"description":"Minimum earnings growth YoY"},{"name":"earnings_growth_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Maximum earnings growth YoY","title":"Earnings Growth Max"},"description":"Maximum earnings growth YoY"},{"name":"ev_ebitda_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Minimum EV/EBITDA","title":"Ev Ebitda Min"},"description":"Minimum EV/EBITDA"},{"name":"ev_ebitda_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Maximum EV/EBITDA","title":"Ev Ebitda Max"},"description":"Maximum EV/EBITDA"},{"name":"is_bumn","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Filter BUMN (state-owned) companies","title":"Is Bumn"},"description":"Filter BUMN (state-owned) companies"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","description":"Column to sort by","default":"market_cap","title":"Sort"},"description":"Column to sort by"},{"name":"order","in":"query","required":false,"schema":{"type":"string","description":"Sort order: asc or desc","default":"desc","title":"Order"},"description":"Sort order: asc or desc"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"description":"Results per page","default":50,"title":"Limit"},"description":"Results per page"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Offset for pagination","default":0,"title":"Offset"},"description":"Offset for pagination"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_ScreenerRow_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/bumn":{"get":{"tags":["Screener"],"summary":"List Bumn","description":"List all BUMN (state-owned) companies, sorted by market cap.","operationId":"list_bumn_v1_bumn_get","parameters":[{"name":"sort","in":"query","required":false,"schema":{"type":"string","description":"Column to sort by","default":"market_cap","title":"Sort"},"description":"Column to sort by"},{"name":"order","in":"query","required":false,"schema":{"type":"string","description":"Sort order: asc or desc","default":"desc","title":"Order"},"description":"Sort order: asc or desc"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"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":{"$ref":"#/components/schemas/PaginatedResponse_ScreenerRow_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/subsectors":{"get":{"tags":["Sectors"],"summary":"List Subsectors","description":"List all IDX sectors and sub-sectors with aggregated metrics.","operationId":"list_subsectors_v1_subsectors_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse_SubSectorItem_"}}}}}}},"/v1/sectors/analytics":{"get":{"tags":["Sectors"],"summary":"Sector Analytics","description":"Get enriched sector analytics from materialized view.","operationId":"sector_analytics_v1_sectors_analytics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse_SectorAnalyticsItem_"}}}}}}},"/v1/sector/{slug}":{"get":{"tags":["Sectors"],"summary":"Get Sector","description":"Get sector detail with top companies.","operationId":"get_sector_v1_sector__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SectorDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/indices":{"get":{"tags":["Indices"],"summary":"List Indices","description":"List all available indices with their latest values.\n\nUses the most recent date per index to handle indices that update on different days.","operationId":"list_indices_v1_indices_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse_IndexSummary_"}}}}}}},"/v1/index/{code}/daily":{"get":{"tags":["Indices"],"summary":"Index Daily","description":"Get daily price history for an index. Free users limited to last 30 days.","operationId":"index_daily_v1_index__code__daily_get","parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}},{"name":"start","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Start date (YYYY-MM-DD)","title":"Start"},"description":"Start date (YYYY-MM-DD)"},{"name":"end","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"End date (YYYY-MM-DD)","title":"End"},"description":"End date (YYYY-MM-DD)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":365,"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":{"$ref":"#/components/schemas/PaginatedResponse_IndexDailyItem_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/index/{code}/constituents":{"get":{"tags":["Indices"],"summary":"Index Constituents","description":"Get active constituents (member stocks) of an index.","operationId":"index_constituents_v1_index__code__constituents_get","parameters":[{"name":"code","in":"path","required":true,"schema":{"type":"string","title":"Code"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse_IndexConstituentItem_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/company/{symbol}/financials":{"get":{"tags":["Financials"],"summary":"Get Financials","description":"Get financial statements. Free users limited to last 2 periods.","operationId":"get_financials_v1_company__symbol__financials_get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}},{"name":"type","in":"query","required":false,"schema":{"type":"string","description":"Type: quarterly or annual","default":"quarterly","title":"Type"},"description":"Type: quarterly or annual"},{"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"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_FinancialItem_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/company/{symbol}/dividends":{"get":{"tags":["Dividends"],"summary":"Get Dividends","description":"Get dividend history. Requires Pro subscription.","operationId":"get_dividends_v1_company__symbol__dividends_get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"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":{"$ref":"#/components/schemas/PaginatedResponse_DividendItem_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/dividends":{"get":{"tags":["Dividends"],"summary":"Get All Dividends","description":"Get dividend data for all stocks, enriched with last_close and est_yield.","operationId":"get_all_dividends_v1_dividends_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"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":{"$ref":"#/components/schemas/PaginatedResponse_DividendAggregateItem_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/top-gainers":{"get":{"tags":["Market"],"summary":"Top Gainers","description":"Top gaining stocks by 1-day price change.","operationId":"top_gainers_v1_top_gainers_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"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":{"$ref":"#/components/schemas/PaginatedResponse_MarketMoverItem_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/top-losers":{"get":{"tags":["Market"],"summary":"Top Losers","description":"Top losing stocks by 1-day price change.","operationId":"top_losers_v1_top_losers_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"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":{"$ref":"#/components/schemas/PaginatedResponse_MarketMoverItem_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/most-traded":{"get":{"tags":["Market"],"summary":"Most Traded","description":"Most traded stocks by volume on the latest trading day.","operationId":"most_traded_v1_most_traded_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"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":{"$ref":"#/components/schemas/PaginatedResponse_MostTradedItem_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/top-companies":{"get":{"tags":["Market"],"summary":"Top Companies","description":"Top companies by market capitalization.","operationId":"top_companies_v1_top_companies_get","parameters":[{"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"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_TopCompanyItem_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/market/foreign-flow":{"get":{"tags":["Market"],"summary":"Market Foreign Flow","description":"Market-wide foreign-investor flow in IDR, per trading day (newest first).\n\nUses VWAP (value / volume) for IDR conversion of the share-count columns\nin `daily_prices`. Falls back to `close` for historical rows where\n`value` is NULL. Empty days (no foreign data yet — e.g. today during\ntrading hours) are skipped. Results match Stockbit's regular-market\nforeign flow within ~5%.","operationId":"market_foreign_flow_v1_market_foreign_flow_get","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":30,"minimum":1,"description":"Window size (trading days, not calendar days)","default":7,"title":"Days"},"description":"Window size (trading days, not calendar days)"},{"name":"end_date","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Window anchor. Defaults to the latest date in daily_prices.","title":"End Date"},"description":"Window anchor. Defaults to the latest date in daily_prices."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketForeignFlowResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/watchlist":{"get":{"tags":["Watchlist","Watchlist"],"summary":"List Watchlists","description":"List all watchlists for the current user.","operationId":"list_watchlists_v1_watchlist_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/WatchlistItem"},"type":"array","title":"Response List Watchlists V1 Watchlist Get"}}}}}},"post":{"tags":["Watchlist","Watchlist"],"summary":"Create Watchlist","description":"Create a new watchlist.","operationId":"create_watchlist_v1_watchlist_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWatchlistRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WatchlistItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/watchlist/{watchlist_id}":{"put":{"tags":["Watchlist","Watchlist"],"summary":"Update Watchlist","description":"Update a watchlist (must be owned by the current user).","operationId":"update_watchlist_v1_watchlist__watchlist_id__put","parameters":[{"name":"watchlist_id","in":"path","required":true,"schema":{"type":"string","title":"Watchlist Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWatchlistRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WatchlistItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Watchlist","Watchlist"],"summary":"Delete Watchlist","description":"Delete a watchlist (must be owned by the current user).","operationId":"delete_watchlist_v1_watchlist__watchlist_id__delete","parameters":[{"name":"watchlist_id","in":"path","required":true,"schema":{"type":"string","title":"Watchlist Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/company/{symbol}/ratios":{"get":{"tags":["Ratios"],"summary":"Get Ratios","description":"Get IDX-official financial ratios. Free users limited to last 4 periods.","operationId":"get_ratios_v1_company__symbol__ratios_get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}},{"name":"type","in":"query","required":false,"schema":{"type":"string","description":"Type: quarterly or yearly","default":"quarterly","title":"Type"},"description":"Type: quarterly or yearly"},{"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"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_FinancialRatioItem_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/company/{symbol}/splits":{"get":{"tags":["Splits"],"summary":"Get Splits","description":"Get stock split history for a company.","operationId":"get_splits_v1_company__symbol__splits_get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"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":{"$ref":"#/components/schemas/PaginatedResponse_StockSplitItem_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/company/{symbol}/corporate-actions":{"get":{"tags":["Corporate Actions"],"summary":"Get Corporate Actions","description":"Get corporate actions for a company.","operationId":"get_corporate_actions_v1_company__symbol__corporate_actions_get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}},{"name":"action_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by action type","title":"Action Type"},"description":"Filter by action type"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"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":{"$ref":"#/components/schemas/PaginatedResponse_CorporateActionItem_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ownership/company/{symbol}":{"get":{"tags":["Ownership"],"summary":"Get Company Ownership","description":"Get ownership network graph for a company.","operationId":"get_company_ownership_v1_ownership_company__symbol__get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OwnershipGraph"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ownership/investor/{slug}":{"get":{"tags":["Ownership"],"summary":"Get Investor Ownership","description":"Get portfolio graph for an investor.","operationId":"get_investor_ownership_v1_ownership_investor__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvestorGraphResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ownership/conglomerate/{slug}":{"get":{"tags":["Ownership"],"summary":"Get Conglomerate Ownership","description":"Get ownership network for a conglomerate group.","operationId":"get_conglomerate_ownership_v1_ownership_conglomerate__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConglomerateGraphResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ownership/search":{"get":{"tags":["Ownership"],"summary":"Search Ownership","description":"Search companies, investors, and conglomerates by name.","operationId":"search_ownership_v1_ownership_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"description":"Search query","title":"Q"},"description":"Search query"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OwnershipSearchResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/conglomerates":{"get":{"tags":["Ownership"],"summary":"List Conglomerates","description":"List all conglomerate groups.","operationId":"list_conglomerates_v1_conglomerates_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse_ConglomerateDetail_"}}}}}}},"/v1/free-float":{"get":{"tags":["Free Float"],"summary":"Get Free Float Rankings","description":"Get estimated free float for all IDX stocks based on >1% shareholder data.","operationId":"get_free_float_rankings_v1_free_float_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":957,"minimum":1,"default":957,"title":"Limit"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","description":"Sort by free float: asc (lowest first) or desc","default":"asc","title":"Sort"},"description":"Sort by free float: asc (lowest first) or desc"},{"name":"min_mcap","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Minimum market cap filter","title":"Min Mcap"},"description":"Minimum market cap filter"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by MSCI status: at_risk, below_new_min, compliant","title":"Status"},"description":"Filter by MSCI status: at_risk, below_new_min, compliant"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FreeFloatItem"},"title":"Response Get Free Float Rankings V1 Free Float Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/company/{symbol}/free-float":{"get":{"tags":["Free Float"],"summary":"Get Company Free Float","description":"Get free float breakdown for a single stock.","operationId":"get_company_free_float_v1_company__symbol__free_float_get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyFreeFloat"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/news":{"get":{"tags":["News"],"summary":"List News","description":"Get latest IDX news, filterable by ticker, sentiment, source, or sector.","operationId":"list_news_v1_news_get","parameters":[{"name":"ticker","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by stock ticker (e.g. BBCA.JK)","title":"Ticker"},"description":"Filter by stock ticker (e.g. BBCA.JK)"},{"name":"sentiment","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by sentiment: Bullish, Bearish, Neutral","title":"Sentiment"},"description":"Filter by sentiment: Bullish, Bearish, Neutral"},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by source name","title":"Source"},"description":"Filter by source name"},{"name":"sector","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by sector","title":"Sector"},"description":"Filter by sector"},{"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"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_NewsItem_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/orderflow/screener":{"get":{"tags":["Orderflow","Orderflow"],"summary":"Orderflow Screener","description":"All stocks with orderflow metrics (CVD, smart money, foreign flow, etc.).\n\nReads from Supabase orderflow_screener table (updated daily 19:00 WIB).\nSupports sector/sub_sector filtering, sorting, and pagination.","operationId":"orderflow_screener_v1_orderflow_screener_get","parameters":[{"name":"sector","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by sector","title":"Sector"},"description":"Filter by sector"},{"name":"sub_sector","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by sub-sector","title":"Sub Sector"},"description":"Filter by sub-sector"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","description":"Sort by: market_cap, score, volume, cvd, foreign_net","default":"market_cap","title":"Sort"},"description":"Sort by: market_cap, score, volume, cvd, foreign_net"},{"name":"order","in":"query","required":false,"schema":{"type":"string","description":"Sort order: asc or desc","default":"desc","title":"Order"},"description":"Sort order: asc or desc"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"description":"Max results","default":50,"title":"Limit"},"description":"Max results"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Offset for pagination","default":0,"title":"Offset"},"description":"Offset for pagination"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/orderflow/brokers":{"get":{"tags":["Orderflow","Orderflow"],"summary":"Orderflow Brokers","description":"Broker code → name mapping.","operationId":"orderflow_brokers_v1_orderflow_brokers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/orderflow/stock/{symbol}":{"get":{"tags":["Orderflow","Orderflow"],"summary":"Orderflow Stock","description":"Per-stock broker breakdown (buy/sell per broker, net value, avg price).","operationId":"orderflow_stock_v1_orderflow_stock__symbol__get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/orderflow/sentiment":{"get":{"tags":["Orderflow","Orderflow"],"summary":"Orderflow Sentiment","description":"Foreign flow sentiment (7-day view).","operationId":"orderflow_sentiment_v1_orderflow_sentiment_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/portfolio/analyze":{"post":{"tags":["Portfolio","Portfolio"],"summary":"Analyze Portfolio","description":"Analyze a portfolio of holdings against current market data.","operationId":"analyze_portfolio_v1_portfolio_analyze_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyzeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyzeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/portfolio/import-screenshot":{"post":{"tags":["Portfolio","Portfolio"],"summary":"Import Screenshot","description":"Extract portfolio holdings from a broker app screenshot using vision LLM.","operationId":"import_screenshot_v1_portfolio_import_screenshot_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportScreenshotRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImportScreenshotResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/portfolio":{"get":{"tags":["Portfolio","Portfolio"],"summary":"List Portfolios","description":"List user's saved portfolios.","operationId":"list_portfolios_v1_portfolio_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PortfolioItem"},"type":"array","title":"Response List Portfolios V1 Portfolio Get"}}}}}},"post":{"tags":["Portfolio","Portfolio"],"summary":"Save Portfolio","description":"Save a named portfolio.","operationId":"save_portfolio_v1_portfolio_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavePortfolioRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortfolioItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/portfolio/{portfolio_id}":{"delete":{"tags":["Portfolio","Portfolio"],"summary":"Delete Portfolio","description":"Delete a saved portfolio (must own).","operationId":"delete_portfolio_v1_portfolio__portfolio_id__delete","parameters":[{"name":"portfolio_id","in":"path","required":true,"schema":{"type":"string","title":"Portfolio Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/company/{symbol}/metrics":{"get":{"tags":["Metrics"],"summary":"Get Metrics","description":"Get calculated financial metrics (quarterly history + current valuation).","operationId":"get_metrics_v1_company__symbol__metrics_get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyMetricsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/search/ai":{"post":{"tags":["AI Search"],"summary":"Ai Search","description":"Natural language stock search. Requires authentication.\n\nClassifies query as \"screener\" (filter-based) or \"ranking\" (metric-based) and returns\nappropriate results with AI explanation and equivalent API URL.","operationId":"ai_search_v1_search_ai_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AISearchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AISearchResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/company/{symbol}/insider-trades":{"get":{"tags":["Insider Trades"],"summary":"Get Insider Trades","description":"Get insider trading activity for a specific company.","operationId":"get_insider_trades_v1_company__symbol__insider_trades_get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}},{"name":"transaction_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter: buy or sell","title":"Transaction Type"},"description":"Filter: buy or sell"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"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":{"$ref":"#/components/schemas/PaginatedResponse_InsiderTradeItem_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/insider-trades/recent":{"get":{"tags":["Insider Trades"],"summary":"Recent Insider Trades","description":"Get latest insider trades across all stocks.","operationId":"recent_insider_trades_v1_insider_trades_recent_get","parameters":[{"name":"transaction_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter: buy or sell","title":"Transaction Type"},"description":"Filter: buy or sell"},{"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"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedResponse_InsiderTradeItem_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/ipo":{"get":{"tags":["IPO"],"summary":"Get Ipo Performance","description":"Get IPO performance data with company info.","operationId":"get_ipo_performance_v1_ipo_get","parameters":[{"name":"sector","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by sector","title":"Sector"},"description":"Filter by sector"},{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filter by listing year","title":"Year"},"description":"Filter by listing year"},{"name":"sort_by","in":"query","required":false,"schema":{"type":"string","description":"Column to sort by","default":"chg_7d","title":"Sort By"},"description":"Column to sort by"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"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":{"$ref":"#/components/schemas/PaginatedResponse_IPOPerformanceItem_"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/rankings":{"get":{"tags":["Rankings","Rankings"],"summary":"Get Rankings","description":"Rank companies by financial metrics or ratios.\n\nFinancial metrics (revenue, net_income, ebitda, etc.) support year filtering.\nRatio metrics (roe, roa, market_cap, etc.) use latest data only.","operationId":"get_rankings_v1_rankings_get","parameters":[{"name":"metric","in":"query","required":true,"schema":{"type":"string","description":"Metric to rank by: revenue, net_income, ebitda, free_cash_flow, roe, roa, market_cap, etc.","title":"Metric"},"description":"Metric to rank by: revenue, net_income, ebitda, free_cash_flow, roe, roa, market_cap, etc."},{"name":"sector","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by sector","title":"Sector"},"description":"Filter by sector"},{"name":"sub_sector","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by sub-sector","title":"Sub Sector"},"description":"Filter by sub-sector"},{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Year for financial metrics (default: latest)","title":"Year"},"description":"Year for financial metrics (default: latest)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":20,"title":"Limit"}},{"name":"order","in":"query","required":false,"schema":{"type":"string","description":"desc (highest first) or asc (lowest first)","default":"desc","title":"Order"},"description":"desc (highest first) or asc (lowest first)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RankingsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/radar":{"get":{"tags":["Radar","Radar"],"summary":"List Radars","description":"List all radars for the current user.","operationId":"list_radars_v1_radar_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/RadarItem"},"type":"array","title":"Response List Radars V1 Radar Get"}}}}}},"post":{"tags":["Radar","Radar"],"summary":"Create Radar","description":"Create a new radar.","operationId":"create_radar_v1_radar_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRadarRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/radar/{radar_id}":{"get":{"tags":["Radar","Radar"],"summary":"Get Radar","description":"Get a single radar by ID (must be owned by the current user).","operationId":"get_radar_v1_radar__radar_id__get","parameters":[{"name":"radar_id","in":"path","required":true,"schema":{"type":"string","title":"Radar Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["Radar","Radar"],"summary":"Update Radar","description":"Update a radar (must be owned by the current user).","operationId":"update_radar_v1_radar__radar_id__put","parameters":[{"name":"radar_id","in":"path","required":true,"schema":{"type":"string","title":"Radar Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRadarRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Radar","Radar"],"summary":"Delete Radar","description":"Delete a radar (must be owned by the current user).","operationId":"delete_radar_v1_radar__radar_id__delete","parameters":[{"name":"radar_id","in":"path","required":true,"schema":{"type":"string","title":"Radar Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/radar/{radar_id}/toggle":{"post":{"tags":["Radar","Radar"],"summary":"Toggle Radar","description":"Toggle a radar's active status.","operationId":"toggle_radar_v1_radar__radar_id__toggle_post","parameters":[{"name":"radar_id","in":"path","required":true,"schema":{"type":"string","title":"Radar Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RadarItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/chat/sessions":{"get":{"tags":["Chat Sessions","Chat Sessions"],"summary":"List Chat Sessions","description":"List all chat sessions for the current user (without messages).","operationId":"list_chat_sessions_v1_chat_sessions_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ChatSessionListItem"},"type":"array","title":"Response List Chat Sessions V1 Chat Sessions Get"}}}}}},"post":{"tags":["Chat Sessions","Chat Sessions"],"summary":"Upsert Chat Session","description":"Create or update a chat session.","operationId":"upsert_chat_session_v1_chat_sessions_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpsertChatSessionRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatSessionItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/chat/sessions/{session_id}":{"get":{"tags":["Chat Sessions","Chat Sessions"],"summary":"Get Chat Session","description":"Get a single chat session with messages.","operationId":"get_chat_session_v1_chat_sessions__session_id__get","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/ChatSessionItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Chat Sessions","Chat Sessions"],"summary":"Delete Chat Session","description":"Delete a chat session.","operationId":"delete_chat_session_v1_chat_sessions__session_id__delete","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"}}}}}}},"/v1/chat/sessions/{session_id}/share":{"post":{"tags":["Chat Sessions","Chat Sessions"],"summary":"Share Chat Session","description":"Generate a share link for a chat session.","operationId":"share_chat_session_v1_chat_sessions__session_id__share_post","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/ShareResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/chat/shared/{token}":{"get":{"tags":["Chat Sessions","Chat Sessions"],"summary":"Get Shared Chat","description":"Get a shared chat session (public, no auth required).","operationId":"get_shared_chat_v1_chat_shared__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatSessionItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/research-notes":{"post":{"tags":["Research Notes","Research Notes"],"summary":"Create Research Note","description":"Save a research note.","operationId":"create_research_note_v1_research_notes_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateResearchNoteRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResearchNoteItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Research Notes","Research Notes"],"summary":"List Research Notes","description":"List research notes for the current user, optionally filtered by symbol.","operationId":"list_research_notes_v1_research_notes_get","parameters":[{"name":"symbol","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by stock symbol","title":"Symbol"},"description":"Filter by stock symbol"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ResearchNoteItem"},"title":"Response List Research Notes V1 Research Notes Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/research-notes/{note_id}":{"delete":{"tags":["Research Notes","Research Notes"],"summary":"Delete Research Note","description":"Delete a research note.","operationId":"delete_research_note_v1_research_notes__note_id__delete","parameters":[{"name":"note_id","in":"path","required":true,"schema":{"type":"string","title":"Note Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/credits":{"get":{"tags":["Credits","Credits"],"summary":"Get Credits","description":"Get current credit balance and monthly usage.","operationId":"get_credits_v1_credits_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditBalance"}}}}}}},"/v1/credits/history":{"get":{"tags":["Credits","Credits"],"summary":"Get Usage History","description":"Get recent API usage log (last 100 entries).","operationId":"get_usage_history_v1_credits_history_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/UsageLogItem"},"type":"array","title":"Response Get Usage History V1 Credits History Get"}}}}}}},"/v1/api-keys":{"get":{"tags":["API Keys","API Keys"],"summary":"List Api Keys","description":"List all API keys for the current user (never returns full key).","operationId":"list_api_keys_v1_api_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/ApiKeyItem"},"type":"array","title":"Response List Api Keys V1 Api Keys Get"}}}}}},"post":{"tags":["API Keys","API Keys"],"summary":"Create Api Key","description":"Create a new API key. The full key is returned only once.","operationId":"create_api_key_v1_api_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateApiKeyRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateApiKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/api-keys/{key_id}":{"delete":{"tags":["API Keys","API Keys"],"summary":"Delete Api Key","description":"Delete/revoke an API key (must be owned by the current user).","operationId":"delete_api_key_v1_api_keys__key_id__delete","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"}}}}}}},"/v1/notifications":{"get":{"tags":["Notifications"],"summary":"List Notifications","description":"User's unread + recent notifications. Empty until the producer pipeline exists.","operationId":"list_notifications_v1_notifications_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/notifications/read":{"post":{"tags":["Notifications"],"summary":"Mark Read","description":"Mark specific notifications as read. No-op until storage exists.","operationId":"mark_read_v1_notifications_read_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_mark_read_v1_notifications_read_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/notifications/read-all":{"post":{"tags":["Notifications"],"summary":"Mark All Read","description":"Mark all notifications as read. No-op until storage exists.","operationId":"mark_all_read_v1_notifications_read_all_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/msci/standard":{"get":{"tags":["MSCI"],"summary":"Msci Standard","description":"MSCI Indonesia Standard constituents (large-cap).","operationId":"msci_standard_v1_msci_standard_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/msci/smallcap":{"get":{"tags":["MSCI"],"summary":"Msci Smallcap","description":"MSCI Indonesia Small Cap constituents.","operationId":"msci_smallcap_v1_msci_smallcap_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/msci/imi":{"get":{"tags":["MSCI"],"summary":"Msci Imi","description":"MSCI Indonesia IMI — Standard ∪ Small Cap.","operationId":"msci_imi_v1_msci_imi_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/company/{symbol}/brokers":{"get":{"tags":["Brokers"],"summary":"Company Brokers","description":"All broker activity for a stock.\n\nFREE tier: latest period only (period_start/period_end params ignored).\nPRO/ELITE: honors the provided range; defaults to latest when omitted.\n\nReturns rows ordered by nval DESC (biggest net buyers first; sellers have negative nval).","operationId":"company_brokers_v1_company__symbol__brokers_get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}},{"name":"period_start","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Period start (ignored for FREE tier)","title":"Period Start"},"description":"Period start (ignored for FREE tier)"},{"name":"period_end","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Period end (ignored for FREE tier)","title":"Period End"},"description":"Period end (ignored for FREE tier)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrokerActivityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/company/{symbol}/brokers/split":{"get":{"tags":["Brokers"],"summary":"Company Brokers Split","description":"Top N buyers and top N sellers for the latest period. Primary FE widget.","operationId":"company_brokers_split_v1_company__symbol__brokers_split_get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":10,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrokerSplitResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/brokers/{broker_code}/activity":{"get":{"tags":["Brokers"],"summary":"Broker Activity","description":"Recent rows for a broker across all stocks.\n\nSorted by (period_end DESC, abs(nval) DESC). Supabase can't order by abs(),\nso we over-fetch by period_end and re-sort locally.","operationId":"broker_activity_v1_brokers__broker_code__activity_get","parameters":[{"name":"broker_code","in":"path","required":true,"schema":{"type":"string","title":"Broker Code"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":20,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrokerStockActivityResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/brokers/aggregate":{"get":{"tags":["Brokers"],"summary":"Brokers Aggregate","description":"Aggregate broker flow across a LIST of tickers — community-watchlist style.\n\nSums `nlot` and `nval` across the given tickers grouped by broker. Returns\ntop N net buyers and top N net sellers for the chosen window.\n\n- `window=day`: latest single day of data (daily rows where period_start == period_end)\n- `window=week`: latest 5 trading days of daily rows, summed\n- `window=month`: latest monthly rollup (27-31 day window)\n\nEmpty-data safe: returns `{period: null, top_buyers: [], top_sellers: []}` if no rows.","operationId":"brokers_aggregate_v1_brokers_aggregate_get","parameters":[{"name":"tickers","in":"query","required":true,"schema":{"type":"string","description":"Comma-separated symbols (e.g. BBCA.JK,BREN.JK)","title":"Tickers"},"description":"Comma-separated symbols (e.g. BBCA.JK,BREN.JK)"},{"name":"window","in":"query","required":false,"schema":{"enum":["day","week","month"],"type":"string","default":"day","title":"Window"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"description":"Top N buyers + top N sellers","default":10,"title":"Limit"},"description":"Top N buyers + top N sellers"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrokerAggregateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/brokers/flip":{"get":{"tags":["Brokers"],"summary":"Brokers Flip","description":"Brokers that flipped direction between two adjacent windows.\n\nReturns `buy_to_sell` (were net buyers previously, now net sellers) and\n`sell_to_buy` (were net sellers, now net buyers), summed across the given\ntickers. Sorted by |delta_nval| DESC so biggest reversals surface first.\n\nWindow semantics match `/v1/brokers/aggregate`. Empty-data safe — returns\nempty lists when the previous window has no rows.","operationId":"brokers_flip_v1_brokers_flip_get","parameters":[{"name":"tickers","in":"query","required":true,"schema":{"type":"string","description":"Comma-separated symbols (1-20)","title":"Tickers"},"description":"Comma-separated symbols (1-20)"},{"name":"window","in":"query","required":false,"schema":{"enum":["day","week","month"],"type":"string","default":"week","title":"Window"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"description":"Top N in each list","default":10,"title":"Limit"},"description":"Top N in each list"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrokerFlipResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/admin/refresh-views":{"post":{"tags":["Admin","Admin"],"summary":"Refresh Views","description":"Refresh all materialized views. Requires Elite subscription.","operationId":"refresh_views_v1_admin_refresh_views_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AISearchRequest":{"properties":{"query":{"type":"string","title":"Query"}},"type":"object","required":["query"],"title":"AISearchRequest"},"AISearchResponse":{"properties":{"query":{"type":"string","title":"Query"},"response_type":{"type":"string","title":"Response Type","default":"screener"},"filters":{"additionalProperties":true,"type":"object","title":"Filters","default":{}},"sort":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sort"},"order":{"type":"string","title":"Order","default":"desc"},"explanation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Explanation"},"equivalent_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Equivalent Url"},"results":{"additionalProperties":true,"type":"object","title":"Results"}},"type":"object","required":["query","results"],"title":"AISearchResponse"},"AnalyzeRequest":{"properties":{"holdings":{"items":{"$ref":"#/components/schemas/PortfolioHolding"},"type":"array","title":"Holdings"}},"type":"object","required":["holdings"],"title":"AnalyzeRequest"},"AnalyzeResponse":{"properties":{"summary":{"$ref":"#/components/schemas/PortfolioSummary"},"holdings":{"items":{"$ref":"#/components/schemas/HoldingAnalysis"},"type":"array","title":"Holdings"},"sector_allocation":{"items":{"$ref":"#/components/schemas/SectorAllocation"},"type":"array","title":"Sector Allocation"},"valuation":{"$ref":"#/components/schemas/PortfolioValuation"},"scoring":{"$ref":"#/components/schemas/PortfolioScoring"},"dividend_forecast":{"$ref":"#/components/schemas/DividendForecast"},"risk":{"$ref":"#/components/schemas/PortfolioRisk"}},"type":"object","required":["summary","holdings","sector_allocation","valuation","scoring","dividend_forecast","risk"],"title":"AnalyzeResponse"},"ApiKeyItem":{"properties":{"id":{"type":"string","title":"Id"},"key_prefix":{"type":"string","title":"Key Prefix"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"},"is_active":{"type":"boolean","title":"Is Active","default":true}},"type":"object","required":["id","key_prefix"],"title":"ApiKeyItem"},"AuthResponse":{"properties":{"access_token":{"type":"string","title":"Access Token"},"refresh_token":{"type":"string","title":"Refresh Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"},"expires_in":{"type":"integer","title":"Expires In"},"user":{"$ref":"#/components/schemas/ProfileResponse"}},"type":"object","required":["access_token","refresh_token","expires_in","user"],"title":"AuthResponse"},"Body_mark_read_v1_notifications_read_post":{"properties":{"ids":{"items":{"type":"string"},"type":"array","title":"Ids"}},"type":"object","required":["ids"],"title":"Body_mark_read_v1_notifications_read_post"},"BrokerActivityItem":{"properties":{"broker_code":{"type":"string","title":"Broker Code"},"broker_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Broker Name"},"broker_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Broker Type"},"bfreq":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bfreq"},"blot":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Blot"},"bval":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bval"},"sfreq":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sfreq"},"slot":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Slot"},"sval":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sval"},"nlot":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Nlot"},"nval":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Nval"},"bavg_per_share":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Bavg Per Share"},"savg_per_share":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Savg Per Share"}},"type":"object","required":["broker_code"],"title":"BrokerActivityItem"},"BrokerActivityResponse":{"properties":{"period":{"anyOf":[{"$ref":"#/components/schemas/BrokerPeriod"},{"type":"null"}]},"items":{"items":{"$ref":"#/components/schemas/BrokerActivityItem"},"type":"array","title":"Items"}},"type":"object","required":["period","items"],"title":"BrokerActivityResponse"},"BrokerAggregateItem":{"properties":{"broker_code":{"type":"string","title":"Broker Code"},"broker_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Broker Name"},"broker_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Broker Type"},"nlot":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Nlot"},"nval":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Nval"},"per_ticker":{"additionalProperties":{"type":"integer"},"type":"object","title":"Per Ticker","default":{}}},"type":"object","required":["broker_code"],"title":"BrokerAggregateItem"},"BrokerAggregateResponse":{"properties":{"period":{"anyOf":[{"$ref":"#/components/schemas/BrokerPeriod"},{"type":"null"}]},"window":{"type":"string","title":"Window"},"tickers":{"items":{"type":"string"},"type":"array","title":"Tickers"},"top_buyers":{"items":{"$ref":"#/components/schemas/BrokerAggregateItem"},"type":"array","title":"Top Buyers"},"top_sellers":{"items":{"$ref":"#/components/schemas/BrokerAggregateItem"},"type":"array","title":"Top Sellers"}},"type":"object","required":["period","window","tickers","top_buyers","top_sellers"],"title":"BrokerAggregateResponse"},"BrokerFlipItem":{"properties":{"broker_code":{"type":"string","title":"Broker Code"},"broker_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Broker Name"},"broker_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Broker Type"},"current_nval":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Current Nval"},"previous_nval":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Previous Nval"},"delta_nval":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Delta Nval"}},"type":"object","required":["broker_code"],"title":"BrokerFlipItem"},"BrokerFlipResponse":{"properties":{"window":{"type":"string","title":"Window"},"current":{"anyOf":[{"$ref":"#/components/schemas/BrokerPeriod"},{"type":"null"}]},"previous":{"anyOf":[{"$ref":"#/components/schemas/BrokerPeriod"},{"type":"null"}]},"tickers":{"items":{"type":"string"},"type":"array","title":"Tickers"},"buy_to_sell":{"items":{"$ref":"#/components/schemas/BrokerFlipItem"},"type":"array","title":"Buy To Sell"},"sell_to_buy":{"items":{"$ref":"#/components/schemas/BrokerFlipItem"},"type":"array","title":"Sell To Buy"}},"type":"object","required":["window","current","previous","tickers","buy_to_sell","sell_to_buy"],"title":"BrokerFlipResponse"},"BrokerMeta":{"properties":{"code":{"type":"string","title":"Code"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"}},"type":"object","required":["code"],"title":"BrokerMeta"},"BrokerPeriod":{"properties":{"start":{"type":"string","format":"date","title":"Start"},"end":{"type":"string","format":"date","title":"End"}},"type":"object","required":["start","end"],"title":"BrokerPeriod"},"BrokerSplitItem":{"properties":{"broker_code":{"type":"string","title":"Broker Code"},"broker_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Broker Name"},"broker_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Broker Type"},"nlot":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Nlot"},"nval":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Nval"},"bavg_per_share":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Bavg Per Share"},"savg_per_share":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Savg Per Share"}},"type":"object","required":["broker_code"],"title":"BrokerSplitItem"},"BrokerSplitResponse":{"properties":{"period":{"anyOf":[{"$ref":"#/components/schemas/BrokerPeriod"},{"type":"null"}]},"top_buyers":{"items":{"$ref":"#/components/schemas/BrokerSplitItem"},"type":"array","title":"Top Buyers"},"top_sellers":{"items":{"$ref":"#/components/schemas/BrokerSplitItem"},"type":"array","title":"Top Sellers"}},"type":"object","required":["period","top_buyers","top_sellers"],"title":"BrokerSplitResponse"},"BrokerStockActivityItem":{"properties":{"symbol":{"type":"string","title":"Symbol"},"period_start":{"type":"string","format":"date","title":"Period Start"},"period_end":{"type":"string","format":"date","title":"Period End"},"broker_code":{"type":"string","title":"Broker Code"},"broker_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Broker Name"},"broker_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Broker Type"},"bfreq":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bfreq"},"blot":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Blot"},"bval":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Bval"},"sfreq":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sfreq"},"slot":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Slot"},"sval":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sval"},"nlot":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Nlot"},"nval":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Nval"},"bavg_per_share":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Bavg Per Share"},"savg_per_share":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Savg Per Share"}},"type":"object","required":["symbol","period_start","period_end","broker_code"],"title":"BrokerStockActivityItem","description":"Row for /brokers/{code}/activity — tagged with the stock it's about."},"BrokerStockActivityResponse":{"properties":{"broker":{"anyOf":[{"$ref":"#/components/schemas/BrokerMeta"},{"type":"null"}]},"items":{"items":{"$ref":"#/components/schemas/BrokerStockActivityItem"},"type":"array","title":"Items"}},"type":"object","required":["broker","items"],"title":"BrokerStockActivityResponse"},"ChangePasswordRequest":{"properties":{"new_password":{"type":"string","title":"New Password"}},"type":"object","required":["new_password"],"title":"ChangePasswordRequest"},"ChatSessionItem":{"properties":{"id":{"type":"string","title":"Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"messages":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Messages","default":[]},"share_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Share Token"},"is_public":{"type":"boolean","title":"Is Public","default":false},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id"],"title":"ChatSessionItem"},"ChatSessionListItem":{"properties":{"id":{"type":"string","title":"Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"is_public":{"type":"boolean","title":"Is Public","default":false},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id"],"title":"ChatSessionListItem"},"CompanyDetail":{"properties":{"symbol":{"type":"string","title":"Symbol"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"},"sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sector"},"sub_sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sub Sector"},"industry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry"},"sub_industry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sub Industry"},"listing_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Listing Date"},"listing_board":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Listing Board"},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website"},"employee_num":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Employee Num"},"address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Address"},"shareholders":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Shareholders"},"directors":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Directors"},"commissioners":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Commissioners"},"ipo_price":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ipo Price"},"is_bumn":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Bumn"},"subsidiaries":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Subsidiaries"},"index_memberships":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Index Memberships"},"key_stats":{"anyOf":[{"$ref":"#/components/schemas/KeyStatsResponse"},{"type":"null"}]},"latest_news":{"anyOf":[{"items":{"$ref":"#/components/schemas/NewsItem"},"type":"array"},{"type":"null"}],"title":"Latest News"}},"type":"object","required":["symbol"],"title":"CompanyDetail"},"CompanyFreeFloat":{"properties":{"symbol":{"type":"string","title":"Symbol"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"},"est_free_float":{"type":"number","title":"Est Free Float"},"concentrated_pct":{"type":"number","title":"Concentrated Pct"},"msci_status":{"type":"string","title":"Msci Status"},"holders":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Holders"}},"type":"object","required":["symbol","est_free_float","concentrated_pct","msci_status","holders"],"title":"CompanyFreeFloat"},"CompanyListItem":{"properties":{"symbol":{"type":"string","title":"Symbol"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"},"sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sector"},"sub_sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sub Sector"},"listing_board":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Listing Board"}},"type":"object","required":["symbol"],"title":"CompanyListItem"},"CompanyMetricsResponse":{"properties":{"quarterly":{"items":{"$ref":"#/components/schemas/QuarterlyMetricsItem"},"type":"array","title":"Quarterly"},"valuation":{"anyOf":[{"$ref":"#/components/schemas/ValuationMetrics"},{"type":"null"}]}},"type":"object","required":["quarterly"],"title":"CompanyMetricsResponse"},"CompanySearchResult":{"properties":{"symbol":{"type":"string","title":"Symbol"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"},"sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sector"},"sub_sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sub Sector"}},"type":"object","required":["symbol"],"title":"CompanySearchResult"},"ConglomerateDetail":{"properties":{"slug":{"type":"string","title":"Slug"},"name":{"type":"string","title":"Name"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"symbols":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Symbols"}},"type":"object","required":["slug","name"],"title":"ConglomerateDetail"},"ConglomerateGraphResponse":{"properties":{"group":{"$ref":"#/components/schemas/ConglomerateDetail"},"nodes":{"items":{"$ref":"#/components/schemas/GraphNode"},"type":"array","title":"Nodes"},"links":{"items":{"$ref":"#/components/schemas/GraphLink"},"type":"array","title":"Links"}},"type":"object","required":["group","nodes","links"],"title":"ConglomerateGraphResponse"},"CorporateActionItem":{"properties":{"id":{"type":"integer","title":"Id"},"action_type":{"type":"string","title":"Action Type"},"action_date":{"type":"string","format":"date","title":"Action Date"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details"},"recording_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Recording Date"}},"type":"object","required":["id","action_type","action_date"],"title":"CorporateActionItem"},"CreateApiKeyRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"}},"type":"object","title":"CreateApiKeyRequest"},"CreateApiKeyResponse":{"properties":{"id":{"type":"string","title":"Id"},"key":{"type":"string","title":"Key"},"key_prefix":{"type":"string","title":"Key Prefix"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id","key","key_prefix"],"title":"CreateApiKeyResponse"},"CreateRadarRequest":{"properties":{"name":{"type":"string","title":"Name"},"tickers":{"items":{"type":"string"},"type":"array","title":"Tickers","default":[]},"sectors":{"items":{"type":"string"},"type":"array","title":"Sectors","default":[]},"conditions":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Conditions"},"channels":{"additionalProperties":true,"type":"object","title":"Channels"}},"type":"object","required":["name","conditions","channels"],"title":"CreateRadarRequest"},"CreateResearchNoteRequest":{"properties":{"symbol":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Symbol"},"content":{"type":"string","title":"Content"},"source":{"type":"string","title":"Source","default":"chat"}},"type":"object","required":["content"],"title":"CreateResearchNoteRequest"},"CreateWatchlistRequest":{"properties":{"name":{"type":"string","title":"Name"},"tickers":{"items":{"type":"string"},"type":"array","title":"Tickers"}},"type":"object","required":["name","tickers"],"title":"CreateWatchlistRequest"},"CreditBalance":{"properties":{"credits":{"type":"integer","title":"Credits"},"credits_expire_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Credits Expire At"},"monthly_usage":{"type":"integer","title":"Monthly Usage"},"monthly_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Monthly Limit"},"subscription_tier":{"type":"string","title":"Subscription Tier"}},"type":"object","required":["credits","monthly_usage","subscription_tier"],"title":"CreditBalance"},"DividendAggregateItem":{"properties":{"symbol":{"type":"string","title":"Symbol"},"ex_date":{"type":"string","format":"date","title":"Ex Date"},"amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Amount"},"cum_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Cum Date"},"payment_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Payment Date"},"recording_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Recording Date"},"last_close":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Close"},"est_yield":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Est Yield"}},"type":"object","required":["symbol","ex_date"],"title":"DividendAggregateItem"},"DividendForecast":{"properties":{"annual_income_est":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Annual Income Est"},"yield_on_cost":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Yield On Cost"}},"type":"object","title":"DividendForecast"},"DividendItem":{"properties":{"ex_date":{"type":"string","format":"date","title":"Ex Date"},"amount":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Amount"},"cum_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Cum Date"},"payment_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Payment Date"},"recording_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Recording Date"}},"type":"object","required":["ex_date"],"title":"DividendItem"},"FinancialItem":{"properties":{"date":{"type":"string","format":"date","title":"Date"},"revenue":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Revenue"},"cost_of_revenue":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cost Of Revenue"},"gross_profit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Gross Profit"},"operating_income":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Operating Income"},"ebitda":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ebitda"},"ebit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ebit"},"pretax_income":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Pretax Income"},"net_income":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Net Income"},"interest_income":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Interest Income"},"interest_expense":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Interest Expense"},"net_interest_income":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Net Interest Income"},"total_assets":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Assets"},"total_liabilities":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Liabilities"},"total_equity":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Equity"},"stockholders_equity":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Stockholders Equity"},"cash_and_equivalents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cash And Equivalents"},"total_debt":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Debt"},"short_term_debt":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Short Term Debt"},"long_term_debt":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Long Term Debt"},"current_assets":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Current Assets"},"current_liabilities":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Current Liabilities"},"operating_cash_flow":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Operating Cash Flow"},"investing_cash_flow":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Investing Cash Flow"},"financing_cash_flow":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Financing Cash Flow"},"free_cash_flow":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Free Cash Flow"},"capital_expenditure":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Capital Expenditure"},"diluted_shares":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Diluted Shares"}},"type":"object","required":["date"],"title":"FinancialItem"},"FinancialRatioItem":{"properties":{"period_year":{"type":"integer","title":"Period Year"},"period_quarter":{"type":"integer","title":"Period Quarter"},"report_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Report Type"},"fs_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Fs Date"},"per":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Per"},"pbv":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pbv"},"debt_to_equity":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Debt To Equity"},"roa":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Roa"},"roe":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Roe"},"npm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Npm"},"eps":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Eps"},"book_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Book Value"},"assets":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Assets"},"liabilities":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Liabilities"},"equity":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Equity"},"sales":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Sales"},"ebt":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ebt"},"profit_period":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Profit Period"},"profit_attr_owner":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Profit Attr Owner"},"sharia":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Sharia"},"audit":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audit"},"opinion":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Opinion"}},"type":"object","required":["period_year","period_quarter"],"title":"FinancialRatioItem"},"ForgotPasswordRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"}},"type":"object","required":["email"],"title":"ForgotPasswordRequest"},"FreeFloatItem":{"properties":{"symbol":{"type":"string","title":"Symbol"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"},"sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sector"},"holders_above_1pct":{"type":"integer","title":"Holders Above 1Pct"},"concentrated_pct":{"type":"number","title":"Concentrated Pct"},"est_free_float":{"type":"number","title":"Est Free Float"},"market_cap":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Market Cap"},"msci_status":{"type":"string","title":"Msci Status"}},"type":"object","required":["symbol","holders_above_1pct","concentrated_pct","est_free_float","msci_status"],"title":"FreeFloatItem"},"GraphLink":{"properties":{"source":{"type":"string","title":"Source"},"target":{"type":"string","title":"Target"},"percentage":{"type":"number","title":"Percentage"},"type":{"type":"string","title":"Type","default":"owns"}},"type":"object","required":["source","target","percentage"],"title":"GraphLink"},"GraphNode":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"type":{"type":"string","title":"Type"},"symbol":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Symbol"},"market_cap":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Market Cap"},"investor_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Investor Type"},"sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sector"},"percentage":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Percentage"},"group":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Group"},"is_center":{"type":"boolean","title":"Is Center","default":false}},"type":"object","required":["id","name","type"],"title":"GraphNode"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HoldingAnalysis":{"properties":{"symbol":{"type":"string","title":"Symbol"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"},"shares":{"type":"integer","title":"Shares"},"avg_price":{"type":"number","title":"Avg Price"},"current_price":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Current Price"},"market_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Market Value"},"pnl":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pnl"},"pnl_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pnl Pct"},"weight_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Weight Pct"},"sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sector"},"is_bumn":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Bumn"}},"type":"object","required":["symbol","shares","avg_price"],"title":"HoldingAnalysis"},"IPOPerformanceItem":{"properties":{"symbol":{"type":"string","title":"Symbol"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"},"sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sector"},"listing_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Listing Date"},"ipo_price":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ipo Price"},"chg_7d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Chg 7D"},"chg_30d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Chg 30D"},"chg_90d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Chg 90D"},"chg_365d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Chg 365D"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["symbol"],"title":"IPOPerformanceItem"},"ImportScreenshotRequest":{"properties":{"image":{"type":"string","title":"Image"}},"type":"object","required":["image"],"title":"ImportScreenshotRequest"},"ImportScreenshotResponse":{"properties":{"holdings":{"items":{"$ref":"#/components/schemas/PortfolioHolding"},"type":"array","title":"Holdings"},"confidence":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Confidence"},"source_detected":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Detected"}},"type":"object","required":["holdings"],"title":"ImportScreenshotResponse"},"IndexConstituentItem":{"properties":{"symbol":{"type":"string","title":"Symbol"},"date_added":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date Added"},"date_removed":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date Removed"}},"type":"object","required":["symbol"],"title":"IndexConstituentItem"},"IndexDailyItem":{"properties":{"date":{"type":"string","format":"date","title":"Date"},"price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price"}},"type":"object","required":["date"],"title":"IndexDailyItem"},"IndexSummary":{"properties":{"index_code":{"type":"string","title":"Index Code"},"index_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Index Name"},"price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price"},"date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date"}},"type":"object","required":["index_code"],"title":"IndexSummary"},"InsiderTradeItem":{"properties":{"symbol":{"type":"string","title":"Symbol"},"holder_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Holder Name"},"holder_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Holder Type"},"holding_before":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Holding Before"},"holding_after":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Holding After"},"share_percentage_before":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Share Percentage Before"},"share_percentage_after":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Share Percentage After"},"amount_transaction":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Amount Transaction"},"price":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Price"},"transaction_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transaction Type"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"timestamp":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Timestamp"},"market_close":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Market Close"},"price_vs_market":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price Vs Market"},"idx_investor_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idx Investor Slug"},"idx_conglomerate_slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idx Conglomerate Slug"},"holder_symbol":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Holder Symbol"}},"type":"object","required":["symbol"],"title":"InsiderTradeItem"},"InvestorDetail":{"properties":{"slug":{"type":"string","title":"Slug"},"investor_name":{"type":"string","title":"Investor Name"},"group":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Group"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"pep_roles":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pep Roles"},"symbols":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Symbols"}},"type":"object","required":["slug","investor_name"],"title":"InvestorDetail"},"InvestorGraphResponse":{"properties":{"investor":{"$ref":"#/components/schemas/InvestorDetail"},"nodes":{"items":{"$ref":"#/components/schemas/GraphNode"},"type":"array","title":"Nodes"},"links":{"items":{"$ref":"#/components/schemas/GraphLink"},"type":"array","title":"Links"}},"type":"object","required":["investor","nodes","links"],"title":"InvestorGraphResponse"},"KeyStatsResponse":{"properties":{"market_cap":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Market Cap"},"market_cap_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Market Cap Rank"},"pe_ratio":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pe Ratio"},"forward_pe":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Forward Pe"},"pb_ratio":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pb Ratio"},"ps_ratio":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ps Ratio"},"ev_ebitda":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ev Ebitda"},"eps":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Eps"},"dividend_yield_ttm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Dividend Yield Ttm"},"payout_ratio":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Payout Ratio"},"roe":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Roe"},"roa":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Roa"},"debt_to_equity":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Debt To Equity"},"current_ratio":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Current Ratio"},"gross_margin":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Gross Margin"},"operating_margin":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Operating Margin"},"net_margin":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Net Margin"},"revenue_growth_yoy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Revenue Growth Yoy"},"earnings_growth_yoy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Earnings Growth Yoy"},"last_close":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Close"},"last_close_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Last Close Date"},"price_change_1d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price Change 1D"},"price_change_7d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price Change 7D"},"price_change_1m":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price Change 1M"},"price_change_ytd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price Change Ytd"},"price_change_1y":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price Change 1Y"},"high_52w":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"High 52W"},"low_52w":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Low 52W"},"avg_50d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg 50D"},"avg_200d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg 200D"},"intrinsic_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Intrinsic Value"},"point_summaries":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Point Summaries"},"technical_rating_breakdown":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Technical Rating Breakdown"}},"type":"object","title":"KeyStatsResponse"},"ListResponse_CompanySearchResult_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/CompanySearchResult"},"type":"array","title":"Data"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["data","total"],"title":"ListResponse[CompanySearchResult]"},"ListResponse_ConglomerateDetail_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/ConglomerateDetail"},"type":"array","title":"Data"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["data","total"],"title":"ListResponse[ConglomerateDetail]"},"ListResponse_IndexConstituentItem_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/IndexConstituentItem"},"type":"array","title":"Data"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["data","total"],"title":"ListResponse[IndexConstituentItem]"},"ListResponse_IndexSummary_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/IndexSummary"},"type":"array","title":"Data"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["data","total"],"title":"ListResponse[IndexSummary]"},"ListResponse_SectorAnalyticsItem_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/SectorAnalyticsItem"},"type":"array","title":"Data"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["data","total"],"title":"ListResponse[SectorAnalyticsItem]"},"ListResponse_SubSectorItem_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/SubSectorItem"},"type":"array","title":"Data"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["data","total"],"title":"ListResponse[SubSectorItem]"},"LoginRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"}},"type":"object","required":["email","password"],"title":"LoginRequest"},"MarketForeignFlowDay":{"properties":{"date":{"type":"string","format":"date","title":"Date"},"foreign_net_idr":{"type":"integer","title":"Foreign Net Idr"},"foreign_buy_idr":{"type":"integer","title":"Foreign Buy Idr"},"foreign_sell_idr":{"type":"integer","title":"Foreign Sell Idr"},"stocks_counted":{"type":"integer","title":"Stocks Counted"}},"type":"object","required":["date","foreign_net_idr","foreign_buy_idr","foreign_sell_idr","stocks_counted"],"title":"MarketForeignFlowDay","description":"One day in the market-wide foreign-flow series."},"MarketForeignFlowPeriod":{"properties":{"start":{"type":"string","format":"date","title":"Start"},"end":{"type":"string","format":"date","title":"End"}},"type":"object","required":["start","end"],"title":"MarketForeignFlowPeriod"},"MarketForeignFlowResponse":{"properties":{"days":{"type":"integer","title":"Days"},"period":{"anyOf":[{"$ref":"#/components/schemas/MarketForeignFlowPeriod"},{"type":"null"}]},"series":{"items":{"$ref":"#/components/schemas/MarketForeignFlowDay"},"type":"array","title":"Series"},"total":{"$ref":"#/components/schemas/MarketForeignFlowTotal"}},"type":"object","required":["days","period","series","total"],"title":"MarketForeignFlowResponse"},"MarketForeignFlowTotal":{"properties":{"foreign_net_idr":{"type":"integer","title":"Foreign Net Idr"},"foreign_buy_idr":{"type":"integer","title":"Foreign Buy Idr"},"foreign_sell_idr":{"type":"integer","title":"Foreign Sell Idr"}},"type":"object","required":["foreign_net_idr","foreign_buy_idr","foreign_sell_idr"],"title":"MarketForeignFlowTotal"},"MarketMoverItem":{"properties":{"symbol":{"type":"string","title":"Symbol"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"},"sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sector"},"last_close":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Close"},"price_change_1d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price Change 1D"}},"type":"object","required":["symbol"],"title":"MarketMoverItem","description":"Used for top-gainers and top-losers."},"MostTradedItem":{"properties":{"symbol":{"type":"string","title":"Symbol"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"},"sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sector"},"close":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Close"},"volume":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Volume"},"market_cap":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Market Cap"}},"type":"object","required":["symbol"],"title":"MostTradedItem","description":"Used for most-traded endpoint."},"NewsItem":{"properties":{"id":{"type":"integer","title":"Id"},"title":{"type":"string","title":"Title"},"body":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Body"},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source"},"source_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Name"},"timestamp":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Timestamp"},"tickers":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tickers"},"sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sector"},"sub_sector":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Sub Sector"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"sentiment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sentiment"},"score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Score"},"dimension":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Dimension"}},"type":"object","required":["id","title"],"title":"NewsItem"},"OwnershipGraph":{"properties":{"nodes":{"items":{"$ref":"#/components/schemas/GraphNode"},"type":"array","title":"Nodes"},"links":{"items":{"$ref":"#/components/schemas/GraphLink"},"type":"array","title":"Links"}},"type":"object","required":["nodes","links"],"title":"OwnershipGraph"},"OwnershipSearchResult":{"properties":{"companies":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Companies"},"investors":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Investors"},"conglomerates":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Conglomerates"}},"type":"object","required":["companies","investors","conglomerates"],"title":"OwnershipSearchResult"},"PaginatedResponse_CompanyListItem_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/CompanyListItem"},"type":"array","title":"Data"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["data","total","limit","offset"],"title":"PaginatedResponse[CompanyListItem]"},"PaginatedResponse_CorporateActionItem_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/CorporateActionItem"},"type":"array","title":"Data"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["data","total","limit","offset"],"title":"PaginatedResponse[CorporateActionItem]"},"PaginatedResponse_DividendAggregateItem_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/DividendAggregateItem"},"type":"array","title":"Data"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["data","total","limit","offset"],"title":"PaginatedResponse[DividendAggregateItem]"},"PaginatedResponse_DividendItem_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/DividendItem"},"type":"array","title":"Data"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["data","total","limit","offset"],"title":"PaginatedResponse[DividendItem]"},"PaginatedResponse_FinancialItem_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/FinancialItem"},"type":"array","title":"Data"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["data","total","limit","offset"],"title":"PaginatedResponse[FinancialItem]"},"PaginatedResponse_FinancialRatioItem_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/FinancialRatioItem"},"type":"array","title":"Data"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["data","total","limit","offset"],"title":"PaginatedResponse[FinancialRatioItem]"},"PaginatedResponse_IPOPerformanceItem_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/IPOPerformanceItem"},"type":"array","title":"Data"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["data","total","limit","offset"],"title":"PaginatedResponse[IPOPerformanceItem]"},"PaginatedResponse_IndexDailyItem_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/IndexDailyItem"},"type":"array","title":"Data"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["data","total","limit","offset"],"title":"PaginatedResponse[IndexDailyItem]"},"PaginatedResponse_InsiderTradeItem_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/InsiderTradeItem"},"type":"array","title":"Data"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["data","total","limit","offset"],"title":"PaginatedResponse[InsiderTradeItem]"},"PaginatedResponse_MarketMoverItem_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/MarketMoverItem"},"type":"array","title":"Data"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["data","total","limit","offset"],"title":"PaginatedResponse[MarketMoverItem]"},"PaginatedResponse_MostTradedItem_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/MostTradedItem"},"type":"array","title":"Data"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["data","total","limit","offset"],"title":"PaginatedResponse[MostTradedItem]"},"PaginatedResponse_NewsItem_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/NewsItem"},"type":"array","title":"Data"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["data","total","limit","offset"],"title":"PaginatedResponse[NewsItem]"},"PaginatedResponse_PriceItem_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/PriceItem"},"type":"array","title":"Data"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["data","total","limit","offset"],"title":"PaginatedResponse[PriceItem]"},"PaginatedResponse_ScreenerRow_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/ScreenerRow"},"type":"array","title":"Data"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["data","total","limit","offset"],"title":"PaginatedResponse[ScreenerRow]"},"PaginatedResponse_StockSplitItem_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/StockSplitItem"},"type":"array","title":"Data"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["data","total","limit","offset"],"title":"PaginatedResponse[StockSplitItem]"},"PaginatedResponse_TopCompanyItem_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/TopCompanyItem"},"type":"array","title":"Data"},"total":{"type":"integer","title":"Total"},"limit":{"type":"integer","title":"Limit"},"offset":{"type":"integer","title":"Offset"}},"type":"object","required":["data","total","limit","offset"],"title":"PaginatedResponse[TopCompanyItem]"},"PortfolioHolding":{"properties":{"symbol":{"type":"string","title":"Symbol"},"shares":{"type":"integer","title":"Shares"},"avg_price":{"type":"number","title":"Avg Price"}},"type":"object","required":["symbol","shares","avg_price"],"title":"PortfolioHolding"},"PortfolioItem":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"holdings":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Holdings"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","name","holdings"],"title":"PortfolioItem"},"PortfolioRisk":{"properties":{"top_sector_concentration":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top Sector Concentration"},"single_stock_max_weight":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Single Stock Max Weight"},"bumn_exposure_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Bumn Exposure Pct"}},"type":"object","title":"PortfolioRisk"},"PortfolioScoring":{"properties":{"weighted_value_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Weighted Value Score"},"weighted_total_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Weighted Total Score"}},"type":"object","title":"PortfolioScoring"},"PortfolioSummary":{"properties":{"total_cost":{"type":"number","title":"Total Cost"},"total_value":{"type":"number","title":"Total Value"},"total_pnl":{"type":"number","title":"Total Pnl"},"total_pnl_pct":{"type":"number","title":"Total Pnl Pct"},"holding_count":{"type":"integer","title":"Holding Count"}},"type":"object","required":["total_cost","total_value","total_pnl","total_pnl_pct","holding_count"],"title":"PortfolioSummary"},"PortfolioValuation":{"properties":{"weighted_pe":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Weighted Pe"},"weighted_pb":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Weighted Pb"},"weighted_peg":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Weighted Peg"},"weighted_dividend_yield":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Weighted Dividend Yield"}},"type":"object","title":"PortfolioValuation"},"PriceItem":{"properties":{"date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Date"},"timestamp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timestamp"},"open":{"anyOf":[{"type":"integer"},{"type":"number"},{"type":"null"}],"title":"Open"},"high":{"anyOf":[{"type":"integer"},{"type":"number"},{"type":"null"}],"title":"High"},"low":{"anyOf":[{"type":"integer"},{"type":"number"},{"type":"null"}],"title":"Low"},"close":{"anyOf":[{"type":"integer"},{"type":"number"},{"type":"null"}],"title":"Close"},"volume":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Volume"},"value":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Value"},"market_cap":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Market Cap"},"foreign_buy":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Foreign Buy"},"foreign_sell":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Foreign Sell"},"foreign_buy_value_idr":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Foreign Buy Value Idr"},"foreign_sell_value_idr":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Foreign Sell Value Idr"},"foreign_net_value_idr":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Foreign Net Value Idr"}},"type":"object","title":"PriceItem"},"ProfileResponse":{"properties":{"id":{"type":"string","title":"Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"nickname":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nickname"},"subscription_tier":{"type":"string","title":"Subscription Tier","default":"FREE"},"subscription_expiry":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Subscription Expiry"},"api_credits":{"type":"integer","title":"Api Credits","default":0},"monthly_usage":{"type":"integer","title":"Monthly Usage","default":0},"telegram_user_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Telegram User Id"},"discount_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Discount Type"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id"],"title":"ProfileResponse"},"QuarterlyMetricsItem":{"properties":{"date":{"type":"string","format":"date","title":"Date"},"dar":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Dar"},"der":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Der"},"interest_coverage":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Interest Coverage"},"cashflow_to_debt":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Cashflow To Debt"},"gross_margin":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Gross Margin"},"operating_margin":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Operating Margin"},"net_margin":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Net Margin"},"roa":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Roa"},"roe":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Roe"},"asset_turnover":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Asset Turnover"},"fixed_asset_turnover":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Fixed Asset Turnover"},"current_ratio":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Current Ratio"},"revenue":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Revenue"},"net_income":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Net Income"},"total_assets":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Assets"},"total_liabilities":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Liabilities"},"total_equity":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Equity"},"total_debt":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Debt"},"ebitda":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ebitda"},"free_cash_flow":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Free Cash Flow"},"diluted_shares":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Diluted Shares"}},"type":"object","required":["date"],"title":"QuarterlyMetricsItem"},"RadarItem":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"tickers":{"items":{"type":"string"},"type":"array","title":"Tickers","default":[]},"sectors":{"items":{"type":"string"},"type":"array","title":"Sectors","default":[]},"conditions":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Conditions"},"channels":{"additionalProperties":true,"type":"object","title":"Channels"},"active":{"type":"boolean","title":"Active","default":true},"last_triggered_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Triggered At"},"trigger_count":{"type":"integer","title":"Trigger Count","default":0},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","name","conditions","channels"],"title":"RadarItem"},"RankingItem":{"properties":{"rank":{"type":"integer","title":"Rank"},"symbol":{"type":"string","title":"Symbol"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"},"sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sector"},"sub_sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sub Sector"},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value"}},"type":"object","required":["rank","symbol"],"title":"RankingItem"},"RankingsResponse":{"properties":{"metric":{"type":"string","title":"Metric"},"year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year"},"sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sector"},"sub_sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sub Sector"},"total":{"type":"integer","title":"Total"},"data":{"items":{"$ref":"#/components/schemas/RankingItem"},"type":"array","title":"Data"}},"type":"object","required":["metric","total","data"],"title":"RankingsResponse"},"RefreshRequest":{"properties":{"refresh_token":{"type":"string","title":"Refresh Token"}},"type":"object","required":["refresh_token"],"title":"RefreshRequest"},"RegisterRequest":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"password":{"type":"string","title":"Password"},"full_name":{"type":"string","title":"Full Name"}},"type":"object","required":["email","password","full_name"],"title":"RegisterRequest"},"ResearchNoteItem":{"properties":{"id":{"type":"string","title":"Id"},"symbol":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Symbol"},"content":{"type":"string","title":"Content"},"source":{"type":"string","title":"Source","default":"chat"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id","content"],"title":"ResearchNoteItem"},"SavePortfolioRequest":{"properties":{"name":{"type":"string","title":"Name"},"holdings":{"items":{"$ref":"#/components/schemas/PortfolioHolding"},"type":"array","title":"Holdings"}},"type":"object","required":["name","holdings"],"title":"SavePortfolioRequest"},"ScreenerRow":{"properties":{"symbol":{"type":"string","title":"Symbol"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"},"sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sector"},"sub_sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sub Sector"},"listing_board":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Listing Board"},"market_cap":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Market Cap"},"market_cap_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Market Cap Rank"},"pe_ratio":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pe Ratio"},"forward_pe":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Forward Pe"},"pb_ratio":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pb Ratio"},"ps_ratio":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ps Ratio"},"ev_ebitda":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ev Ebitda"},"eps":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Eps"},"dividend_yield_ttm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Dividend Yield Ttm"},"roe":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Roe"},"roa":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Roa"},"debt_to_equity":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Debt To Equity"},"current_ratio":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Current Ratio"},"gross_margin":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Gross Margin"},"operating_margin":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Operating Margin"},"net_margin":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Net Margin"},"revenue_growth_yoy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Revenue Growth Yoy"},"earnings_growth_yoy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Earnings Growth Yoy"},"last_close":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Close"},"last_close_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Last Close Date"},"price_change_1d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price Change 1D"},"price_change_7d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price Change 7D"},"price_change_1m":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price Change 1M"},"price_change_ytd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price Change Ytd"},"price_change_1y":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price Change 1Y"},"is_bumn":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Bumn"}},"type":"object","required":["symbol"],"title":"ScreenerRow"},"SectorAllocation":{"properties":{"sector":{"type":"string","title":"Sector"},"weight_pct":{"type":"number","title":"Weight Pct"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["sector","weight_pct","count"],"title":"SectorAllocation"},"SectorAnalyticsItem":{"properties":{"sector":{"type":"string","title":"Sector"},"sub_sector":{"type":"string","title":"Sub Sector"},"total_companies":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Companies"},"total_market_cap":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Market Cap"},"avg_market_cap":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Market Cap"},"avg_pe":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Pe"},"avg_pb":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Pb"},"avg_dividend_yield":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Dividend Yield"},"avg_roe":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Roe"},"avg_roa":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Roa"},"avg_net_margin":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Net Margin"},"avg_debt_to_equity":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Debt To Equity"},"avg_change_1d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Change 1D"},"avg_change_7d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Change 7D"},"avg_change_1m":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Change 1M"},"avg_change_ytd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Change Ytd"},"avg_change_1y":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Change 1Y"}},"type":"object","required":["sector","sub_sector"],"title":"SectorAnalyticsItem"},"SectorDetail":{"properties":{"slug":{"type":"string","title":"Slug"},"sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sector"},"sub_sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sub Sector"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"total_companies":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Companies"},"total_market_cap":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Market Cap"},"avg_pe":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Pe"},"avg_dividend_yield":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Dividend Yield"},"top_companies":{"items":{"$ref":"#/components/schemas/TopCompanyItem"},"type":"array","title":"Top Companies","default":[]}},"type":"object","required":["slug"],"title":"SectorDetail"},"ShareResponse":{"properties":{"share_token":{"type":"string","title":"Share Token"},"share_url":{"type":"string","title":"Share Url"}},"type":"object","required":["share_token","share_url"],"title":"ShareResponse"},"StockSplitItem":{"properties":{"ex_date":{"type":"string","format":"date","title":"Ex Date"},"ratio_from":{"type":"integer","title":"Ratio From"},"ratio_to":{"type":"integer","title":"Ratio To"},"cum_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Cum Date"},"recording_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Recording Date"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"}},"type":"object","required":["ex_date","ratio_from","ratio_to"],"title":"StockSplitItem"},"SubSectorItem":{"properties":{"slug":{"type":"string","title":"Slug"},"sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sector"},"sub_sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sub Sector"},"total_companies":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Companies"},"total_market_cap":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Market Cap"},"avg_pe":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Pe"},"avg_dividend_yield":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Dividend Yield"}},"type":"object","required":["slug"],"title":"SubSectorItem"},"TelegramLoginRequest":{"properties":{"id":{"type":"integer","title":"Id"},"first_name":{"type":"string","title":"First Name"},"last_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Name"},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"photo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo Url"},"auth_date":{"type":"integer","title":"Auth Date"},"hash":{"type":"string","title":"Hash"}},"type":"object","required":["id","first_name","auth_date","hash"],"title":"TelegramLoginRequest"},"TopCompanyItem":{"properties":{"symbol":{"type":"string","title":"Symbol"},"company_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Company Name"},"sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sector"},"market_cap":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Market Cap"},"market_cap_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Market Cap Rank"},"pe_ratio":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pe Ratio"},"last_close":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Close"},"price_change_1d":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price Change 1D"}},"type":"object","required":["symbol"],"title":"TopCompanyItem","description":"Used for top-companies endpoint."},"UpdateProfileRequest":{"properties":{"full_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Full Name"},"nickname":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nickname"}},"type":"object","title":"UpdateProfileRequest"},"UpdateRadarRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"tickers":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tickers"},"sectors":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Sectors"},"conditions":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Conditions"},"channels":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Channels"}},"type":"object","title":"UpdateRadarRequest"},"UpdateWatchlistRequest":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"tickers":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tickers"}},"type":"object","title":"UpdateWatchlistRequest"},"UpsertChatSessionRequest":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"messages":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Messages","default":[]}},"type":"object","title":"UpsertChatSessionRequest"},"UsageLogItem":{"properties":{"id":{"type":"integer","title":"Id"},"endpoint":{"type":"string","title":"Endpoint"},"credits_consumed":{"type":"integer","title":"Credits Consumed"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["id","endpoint","credits_consumed"],"title":"UsageLogItem"},"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"},"ValuationMetrics":{"properties":{"price_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Price Date"},"last_close":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Close"},"market_cap":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Market Cap"},"revenue_ttm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Revenue Ttm"},"earnings_ttm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Earnings Ttm"},"fcf_ttm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Fcf Ttm"},"equity":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Equity"},"pe_ttm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pe Ttm"},"pb_mrq":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pb Mrq"},"ps_ttm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ps Ttm"},"peg_ratio":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Peg Ratio"},"fcf_yield_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Fcf Yield Pct"},"ev_ebitda":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ev Ebitda"},"earnings_growth_yoy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Earnings Growth Yoy"},"revenue_growth_yoy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Revenue Growth Yoy"}},"type":"object","title":"ValuationMetrics"},"WatchlistItem":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"tickers":{"items":{"type":"string"},"type":"array","title":"Tickers"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","required":["id","name","tickers"],"title":"WatchlistItem"}}}}