{"openapi":"3.1.0","info":{"title":"EuroFinData API","description":"European Financial Data API — IFRS fundamentals from ESEF XBRL filings plus insider trades, short positions, holdings, prices and reference data. All data routes are served under /v1 (unversioned aliases are kept for compatibility). Authenticate with `X-API-KEY: <key>` or `Authorization: Bearer <key>`. Sign in at /auth/ to issue your own key.","version":"0.1.0"},"paths":{"/v1/companies/":{"get":{"summary":"List Companies","description":"List all companies with financial data.","operationId":"list_companies_v1_companies__get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by country code (e.g., FR, NL)","title":"Country"},"description":"Filter by country code (e.g., FR, NL)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CompanyResponse"},"title":"Response List Companies V1 Companies  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/search":{"get":{"summary":"Search Companies","description":"Search for companies by name, ticker, ISIN, or LEI.","operationId":"search_companies_v1_companies_search_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","description":"Search term (name, ticker, ISIN, or LEI)","title":"Q"},"description":"Search term (name, ticker, ISIN, or LEI)"},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by country code","title":"Country"},"description":"Filter by country code"},{"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":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{identifier}":{"get":{"summary":"Get Company","description":"Get company details by ticker, TICKER.MIC, ISIN, LEI, or name.","operationId":"get_company_v1_companies__identifier__get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","title":"Identifier"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/financials/income-statements":{"get":{"summary":"Get Income Statements","description":"Get income statements for a company.","operationId":"get_income_statements_v1_financials_income_statements_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"ticker","in":"query","required":true,"schema":{"type":"string","description":"Company ticker (TICKER.MIC, ISIN, or name)","title":"Ticker"},"description":"Company ticker (TICKER.MIC, ISIN, or name)"},{"name":"period","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Period type: annual, semi_annual, quarterly","title":"Period"},"description":"Period type: annual, semi_annual, quarterly"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":10,"title":"Limit"}},{"name":"report_period_gte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Start date filter (YYYY-MM-DD)","title":"Report Period Gte"},"description":"Start date filter (YYYY-MM-DD)"},{"name":"report_period_lte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"End date filter (YYYY-MM-DD)","title":"Report Period Lte"},"description":"End date filter (YYYY-MM-DD)"},{"name":"currency","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Convert to target currency (e.g., USD, GBP)","title":"Currency"},"description":"Convert to target currency (e.g., USD, GBP)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/financials/balance-sheets":{"get":{"summary":"Get Balance Sheets","description":"Get balance sheets for a company.","operationId":"get_balance_sheets_v1_financials_balance_sheets_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"ticker","in":"query","required":true,"schema":{"type":"string","description":"Company ticker","title":"Ticker"},"description":"Company ticker"},{"name":"period","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Period"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":10,"title":"Limit"}},{"name":"report_period_gte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Report Period Gte"}},{"name":"report_period_lte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Report Period Lte"}},{"name":"currency","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Convert to target currency (e.g., USD, GBP)","title":"Currency"},"description":"Convert to target currency (e.g., USD, GBP)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/financials/cash-flow-statements":{"get":{"summary":"Get Cash Flow Statements","description":"Get cash flow statements for a company.","operationId":"get_cash_flow_statements_v1_financials_cash_flow_statements_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"ticker","in":"query","required":true,"schema":{"type":"string","description":"Company ticker","title":"Ticker"},"description":"Company ticker"},{"name":"period","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Period"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":10,"title":"Limit"}},{"name":"report_period_gte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Report Period Gte"}},{"name":"report_period_lte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Report Period Lte"}},{"name":"currency","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Convert to target currency (e.g., USD, GBP)","title":"Currency"},"description":"Convert to target currency (e.g., USD, GBP)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/financials/metrics":{"get":{"summary":"Get Financial Metrics","description":"Get computed financial ratios (margins, ROE, ROA, leverage, liquidity) for a company.","operationId":"get_financial_metrics_v1_financials_metrics_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"ticker","in":"query","required":true,"schema":{"type":"string","description":"Company ticker (TICKER.MIC, ISIN, or name)","title":"Ticker"},"description":"Company ticker (TICKER.MIC, ISIN, or name)"},{"name":"period","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Period type: annual, semi_annual, quarterly","title":"Period"},"description":"Period type: annual, semi_annual, quarterly"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":10,"title":"Limit"}},{"name":"report_period_gte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Start date filter (YYYY-MM-DD)","title":"Report Period Gte"},"description":"Start date filter (YYYY-MM-DD)"},{"name":"report_period_lte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"End date filter (YYYY-MM-DD)","title":"Report Period Lte"},"description":"End date filter (YYYY-MM-DD)"},{"name":"currency","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Convert to target currency (e.g., USD, GBP)","title":"Currency"},"description":"Convert to target currency (e.g., USD, GBP)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/financials/":{"get":{"summary":"Get All Financials","description":"Get all financial statements combined for a company.","operationId":"get_all_financials_v1_financials__get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"ticker","in":"query","required":true,"schema":{"type":"string","description":"Company ticker","title":"Ticker"},"description":"Company ticker"},{"name":"period","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Period"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":10,"title":"Limit"}},{"name":"currency","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Convert to target currency (e.g., USD, GBP)","title":"Currency"},"description":"Convert to target currency (e.g., USD, GBP)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/screen":{"get":{"summary":"Screen Companies","description":"Screen companies by financial ratios and valuation metrics. Uses latest annual data.","operationId":"screen_companies_v1_screen_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by country code (e.g., DE, FR)","title":"Country"},"description":"Filter by country code (e.g., DE, FR)"},{"name":"sector","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by sector (e.g., Technology, Healthcare)","title":"Sector"},"description":"Filter by sector (e.g., Technology, Healthcare)"},{"name":"gross_margin_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Gross Margin Min"}},{"name":"gross_margin_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Gross Margin Max"}},{"name":"operating_margin_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Operating Margin Min"}},{"name":"operating_margin_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Operating Margin Max"}},{"name":"net_margin_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Net Margin Min"}},{"name":"net_margin_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Net Margin Max"}},{"name":"ebitda_margin_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ebitda Margin Min"}},{"name":"ebitda_margin_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ebitda Margin Max"}},{"name":"roe_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Roe Min"}},{"name":"roe_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Roe Max"}},{"name":"roa_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Roa Min"}},{"name":"roa_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Roa Max"}},{"name":"debt_to_equity_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Debt To Equity Min"}},{"name":"debt_to_equity_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Debt To Equity Max"}},{"name":"debt_to_assets_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Debt To Assets Min"}},{"name":"debt_to_assets_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Debt To Assets Max"}},{"name":"current_ratio_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Current Ratio Min"}},{"name":"current_ratio_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Current Ratio Max"}},{"name":"quick_ratio_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Quick Ratio Min"}},{"name":"quick_ratio_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Quick Ratio Max"}},{"name":"asset_turnover_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Asset Turnover Min"}},{"name":"asset_turnover_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Asset Turnover Max"}},{"name":"free_cash_flow_margin_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Free Cash Flow Margin Min"}},{"name":"free_cash_flow_margin_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Free Cash Flow Margin Max"}},{"name":"revenue_growth_yoy_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Revenue Growth Yoy Min"}},{"name":"revenue_growth_yoy_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Revenue Growth Yoy Max"}},{"name":"interest_coverage_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Interest Coverage Min"}},{"name":"interest_coverage_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Interest Coverage Max"}},{"name":"pe_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Min P/E ratio","title":"Pe Min"},"description":"Min P/E ratio"},{"name":"pe_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Max P/E ratio","title":"Pe Max"},"description":"Max P/E ratio"},{"name":"pb_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Min P/B ratio","title":"Pb Min"},"description":"Min P/B ratio"},{"name":"pb_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Max P/B ratio","title":"Pb Max"},"description":"Max P/B ratio"},{"name":"ev_ebitda_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Min EV/EBITDA","title":"Ev Ebitda Min"},"description":"Min EV/EBITDA"},{"name":"ev_ebitda_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Max EV/EBITDA","title":"Ev Ebitda Max"},"description":"Max EV/EBITDA"},{"name":"ps_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Min P/S ratio","title":"Ps Min"},"description":"Min P/S ratio"},{"name":"ps_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Max P/S ratio","title":"Ps Max"},"description":"Max P/S ratio"},{"name":"market_cap_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Min market cap","title":"Market Cap Min"},"description":"Min market cap"},{"name":"market_cap_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Max market cap","title":"Market Cap Max"},"description":"Max market cap"},{"name":"dividend_yield_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Min dividend yield (e.g., 0.03 for 3%)","title":"Dividend Yield Min"},"description":"Min dividend yield (e.g., 0.03 for 3%)"},{"name":"dividend_yield_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Max dividend yield","title":"Dividend Yield Max"},"description":"Max dividend yield"},{"name":"piotroski_min","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Min Piotroski F-Score (0-9, e.g., 7 for strong)","title":"Piotroski Min"},"description":"Min Piotroski F-Score (0-9, e.g., 7 for strong)"},{"name":"zscore_min","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Min Altman Z-Score (e.g., 3.0 for safe zone)","title":"Zscore Min"},"description":"Min Altman Z-Score (e.g., 3.0 for safe zone)"},{"name":"zscore_max","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"Max Altman Z-Score (e.g., 1.8 for distress)","title":"Zscore Max"},"description":"Max Altman Z-Score (e.g., 1.8 for distress)"},{"name":"order_by","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Sort by metric (e.g., piotroski_f_score, altman_z_score, roe, market_cap)","title":"Order By"},"description":"Sort by metric (e.g., piotroski_f_score, altman_z_score, roe, market_cap)"},{"name":"order_dir","in":"query","required":false,"schema":{"type":"string","description":"Sort direction: asc or desc","default":"desc","title":"Order Dir"},"description":"Sort direction: asc or desc"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/market-data":{"get":{"summary":"Get Market Data","description":"Get latest market price and valuation ratios for a company.","operationId":"get_market_data_v1_market_data_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"ticker","in":"query","required":true,"schema":{"type":"string","description":"Company identifier (TICKER.MIC, ISIN, LEI, or name)","title":"Ticker"},"description":"Company identifier (TICKER.MIC, ISIN, LEI, or name)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/insider-trades":{"get":{"summary":"Get Insider Trades","description":"Get insider (PDMR) transactions. Ticker is optional — supports cross-company queries.","operationId":"get_insider_trades_v1_insider_trades_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"ticker","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Company ticker (optional — omit for cross-company query)","title":"Ticker"},"description":"Company ticker (optional — omit for cross-company query)"},{"name":"isin","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by ISIN","title":"Isin"},"description":"Filter by ISIN"},{"name":"insider","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by insider name (partial match)","title":"Insider"},"description":"Filter by insider name (partial match)"},{"name":"transaction_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by type: acquisition, disposal, exercise, grant, pledge, other","title":"Transaction Type"},"description":"Filter by type: acquisition, disposal, exercise, grant, pledge, other"},{"name":"date_gte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Transaction date >= (YYYY-MM-DD)","title":"Date Gte"},"description":"Transaction date >= (YYYY-MM-DD)"},{"name":"date_lte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Transaction date <= (YYYY-MM-DD)","title":"Date Lte"},"description":"Transaction date <= (YYYY-MM-DD)"},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by source: fi_se, amf, afm, bafin, cnmv, consob, fca, oslobors","title":"Source"},"description":"Filter by source: fi_se, amf, afm, bafin, cnmv, consob, fca, oslobors"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/short-positions":{"get":{"summary":"Get Short Positions","description":"Get net short positions. Ticker is optional — supports cross-company queries.","operationId":"get_short_positions_v1_short_positions_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"ticker","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Company ticker (optional)","title":"Ticker"},"description":"Company ticker (optional)"},{"name":"isin","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by ISIN","title":"Isin"},"description":"Filter by ISIN"},{"name":"holder","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by holder name (partial match)","title":"Holder"},"description":"Filter by holder name (partial match)"},{"name":"date_gte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Position date >= (YYYY-MM-DD)","title":"Date Gte"},"description":"Position date >= (YYYY-MM-DD)"},{"name":"date_lte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Position date <= (YYYY-MM-DD)","title":"Date Lte"},"description":"Position date <= (YYYY-MM-DD)"},{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","description":"Only show currently active positions","default":false,"title":"Active Only"},"description":"Only show currently active positions"},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by source: amf, afm, bafin, cbi, cnmv, consob, fi, finanstilsynet, fma, fsma, knf (plus fca, retired but retained)","title":"Source"},"description":"Filter by source: amf, afm, bafin, cbi, cnmv, consob, fi, finanstilsynet, fma, fsma, knf (plus fca, retired but retained)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/major-holdings":{"get":{"summary":"Get Major Holdings","description":"Get major shareholding notifications (threshold crossings / flaggings).","operationId":"get_major_holdings_v1_major_holdings_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"ticker","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Company ticker (optional)","title":"Ticker"},"description":"Company ticker (optional)"},{"name":"holder","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by holder name (partial match)","title":"Holder"},"description":"Filter by holder name (partial match)"},{"name":"issuer","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by issuer name (partial match)","title":"Issuer"},"description":"Filter by issuer name (partial match)"},{"name":"date_gte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Notification date >= (YYYY-MM-DD)","title":"Date Gte"},"description":"Notification date >= (YYYY-MM-DD)"},{"name":"date_lte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Notification date <= (YYYY-MM-DD)","title":"Date Lte"},"description":"Notification date <= (YYYY-MM-DD)"},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by source: afm","title":"Source"},"description":"Filter by source: afm"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/issuer-news":{"get":{"summary":"Get Issuer News","description":"Get official issuer news / corporate actions.","operationId":"get_issuer_news_v1_issuer_news_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"ticker","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Company ticker (optional)","title":"Ticker"},"description":"Company ticker (optional)"},{"name":"isin","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by ISIN","title":"Isin"},"description":"Filter by ISIN"},{"name":"issuer","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by issuer name (partial match)","title":"Issuer"},"description":"Filter by issuer name (partial match)"},{"name":"topic","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by topic","title":"Topic"},"description":"Filter by topic"},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Full-text search over title and body","title":"Q"},"description":"Full-text search over title and body"},{"name":"date_gte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Release date >= (YYYY-MM-DD)","title":"Date Gte"},"description":"Release date >= (YYYY-MM-DD)"},{"name":"date_lte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Release date <= (YYYY-MM-DD)","title":"Date Lte"},"description":"Release date <= (YYYY-MM-DD)"},{"name":"source","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by source: euronext","title":"Source"},"description":"Filter by source: euronext"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/exchange-rates":{"get":{"summary":"Get Exchange Rates","description":"Get ECB exchange rates for a currency (base EUR).","operationId":"get_exchange_rates_v1_exchange_rates_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"currency","in":"query","required":true,"schema":{"type":"string","description":"Currency code (e.g., GBP, SEK, USD)","title":"Currency"},"description":"Currency code (e.g., GBP, SEK, USD)"},{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Single date (YYYY-MM-DD) — returns one rate","title":"Date"},"description":"Single date (YYYY-MM-DD) — returns one rate"},{"name":"date_gte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Start date (YYYY-MM-DD)","title":"Date Gte"},"description":"Start date (YYYY-MM-DD)"},{"name":"date_lte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"End date (YYYY-MM-DD)","title":"Date Lte"},"description":"End date (YYYY-MM-DD)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Exchange Rates V1 Exchange Rates Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/exchange-rates/convert":{"get":{"summary":"Convert Currency","description":"Convert an amount between currencies using ECB rates.","operationId":"convert_currency_v1_exchange_rates_convert_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"amount","in":"query","required":true,"schema":{"type":"number","description":"Amount to convert","title":"Amount"},"description":"Amount to convert"},{"name":"from_currency","in":"query","required":true,"schema":{"type":"string","description":"Source currency code","title":"From Currency"},"description":"Source currency code"},{"name":"to_currency","in":"query","required":true,"schema":{"type":"string","description":"Target currency code","title":"To Currency"},"description":"Target currency code"},{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Rate date (YYYY-MM-DD, default: latest)","title":"Date"},"description":"Rate date (YYYY-MM-DD, default: latest)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurrencyConversionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/instruments":{"get":{"summary":"Get Instruments","description":"Query FIRDS instrument reference data (ESMA MiFID II register).\nAt least one of isin, lei, or mic is required.","operationId":"get_instruments_v1_instruments_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"isin","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by ISIN","title":"Isin"},"description":"Filter by ISIN"},{"name":"lei","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by issuer LEI","title":"Lei"},"description":"Filter by issuer LEI"},{"name":"mic","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by MIC (exchange code)","title":"Mic"},"description":"Filter by MIC (exchange code)"},{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","description":"Only active instruments (no termination date)","default":true,"title":"Active Only"},"description":"Only active instruments (no termination date)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/beneficial-owners":{"get":{"summary":"Get Beneficial Owners","description":"UK Companies House PSC (Persons with Significant Control) — 25%+ beneficial owners.\n\nRequires one of ticker or company_number.","operationId":"get_beneficial_owners_v1_beneficial_owners_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"ticker","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Company ticker/ISIN/LEI/name","title":"Ticker"},"description":"Company ticker/ISIN/LEI/name"},{"name":"company_number","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Companies House number (GB)","title":"Company Number"},"description":"Companies House number (GB)"},{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","description":"Exclude ceased PSCs","default":true,"title":"Active Only"},"description":"Exclude ceased PSCs"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/instruments/transparency":{"get":{"summary":"Get Instruments Transparency","description":"Query FITRS MiFID II equity transparency calculations.\n\nReturns per-(ISIN, MIC) liquidity status, average daily turnover,\naverage daily transactions, and Large-in-Scale threshold.","operationId":"get_instruments_transparency_v1_instruments_transparency_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"isin","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by ISIN","title":"Isin"},"description":"Filter by ISIN"},{"name":"mic","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by MIC (exchange code)","title":"Mic"},"description":"Filter by MIC (exchange code)"},{"name":"is_liquid","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Only liquid (True) or illiquid (False)","title":"Is Liquid"},"description":"Only liquid (True) or illiquid (False)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/financials/income-statements/tickers":{"get":{"summary":"List Income Tickers","description":"List all tickers that have income statement data.","operationId":"list_income_tickers_v1_financials_income_statements_tickers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}]}},"/v1/financials/balance-sheets/tickers":{"get":{"summary":"List Balance Tickers","description":"List all tickers that have balance sheet data.","operationId":"list_balance_tickers_v1_financials_balance_sheets_tickers_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}]}},"/v1/prices/history":{"get":{"summary":"Get Price History","description":"Get daily OHLCV price history for a company.","operationId":"get_price_history_v1_prices_history_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"ticker","in":"query","required":true,"schema":{"type":"string","description":"Company identifier (TICKER.MIC, ISIN, or name)","title":"Ticker"},"description":"Company identifier (TICKER.MIC, ISIN, or name)"},{"name":"period","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Period shortcut: 1m, 3m, 6m, 1y, 2y, 5y, ytd","title":"Period"},"description":"Period shortcut: 1m, 3m, 6m, 1y, 2y, 5y, ytd"},{"name":"date_gte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Start date (YYYY-MM-DD)","title":"Date Gte"},"description":"Start date (YYYY-MM-DD)"},{"name":"date_lte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"End date (YYYY-MM-DD)","title":"Date Lte"},"description":"End date (YYYY-MM-DD)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":1000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/dividends":{"get":{"summary":"Get Dividend History","description":"Get dividend payment history for a company.","operationId":"get_dividend_history_v1_dividends_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"ticker","in":"query","required":true,"schema":{"type":"string","description":"Company identifier (TICKER.MIC, ISIN, or name)","title":"Ticker"},"description":"Company identifier (TICKER.MIC, ISIN, or name)"},{"name":"date_gte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Start date (YYYY-MM-DD)","title":"Date Gte"},"description":"Start date (YYYY-MM-DD)"},{"name":"date_lte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"End date (YYYY-MM-DD)","title":"Date Lte"},"description":"End date (YYYY-MM-DD)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/technical-indicators":{"get":{"summary":"Get Technical Indicators","description":"Get technical indicators (SMA, EMA, RSI, MACD, Bollinger Bands, 52w range) for a company.\n\nComputed from daily OHLCV price history. Requires at least 14 trading days of data.","operationId":"get_technical_indicators_v1_technical_indicators_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"ticker","in":"query","required":true,"schema":{"type":"string","description":"Company identifier (TICKER.MIC, ISIN, or name)","title":"Ticker"},"description":"Company identifier (TICKER.MIC, ISIN, or name)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/earnings-calendar":{"get":{"summary":"Get Earnings Calendar","description":"Get upcoming earnings dates and analyst estimates.\n\nQuery by company ticker or get upcoming earnings across all companies.","operationId":"get_earnings_calendar_v1_earnings_calendar_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"ticker","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Company identifier (optional — omit for upcoming earnings)","title":"Ticker"},"description":"Company identifier (optional — omit for upcoming earnings)"},{"name":"date_gte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Earnings date >= (YYYY-MM-DD)","title":"Date Gte"},"description":"Earnings date >= (YYYY-MM-DD)"},{"name":"date_lte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Earnings date <= (YYYY-MM-DD)","title":"Date Lte"},"description":"Earnings date <= (YYYY-MM-DD)"},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by country code","title":"Country"},"description":"Filter by country code"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/stock-splits":{"get":{"summary":"Get Stock Splits","description":"Get stock split history for a company. Ratio > 1 = forward split, < 1 = reverse split.","operationId":"get_stock_splits_v1_stock_splits_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"ticker","in":"query","required":true,"schema":{"type":"string","description":"Company identifier (TICKER.MIC, ISIN, or name)","title":"Ticker"},"description":"Company identifier (TICKER.MIC, ISIN, or name)"},{"name":"date_gte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Start date (YYYY-MM-DD)","title":"Date Gte"},"description":"Start date (YYYY-MM-DD)"},{"name":"date_lte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"End date (YYYY-MM-DD)","title":"Date Lte"},"description":"End date (YYYY-MM-DD)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/smart-signals":{"get":{"summary":"Get Smart Signals","description":"Cross-reference insider trades, short positions, financials, and technicals to find actionable signals.\n\nSignal types:\n- insider_accumulation: Companies with 3+ insider buys and 0 sells\n- insider_vs_shorts: Insiders buying + active short positions (divergence)\n- top_insider_buys: Largest insider purchases by total value\n- top_shorted: Most heavily shorted companies\n- piotroski_value: High Piotroski F-Score (>=7) + low P/E (<15) — classic value\n- quality_growth: Positive revenue growth + ROE >15% + low debt\n- distress_watch: Altman Z-Score <1.81 with active short positions\n- dividend_aristocrats: Companies with 5+ consecutive years of dividends\n- technical_momentum: Price above SMA200, RSI 30-70, positive MACD","operationId":"get_smart_signals_v1_smart_signals_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"signal_type","in":"query","required":true,"schema":{"type":"string","description":"Signal type: insider_accumulation, insider_vs_shorts, top_insider_buys, top_shorted, piotroski_value, quality_growth, distress_watch, dividend_aristocrats, technical_momentum","title":"Signal Type"},"description":"Signal type: insider_accumulation, insider_vs_shorts, top_insider_buys, top_shorted, piotroski_value, quality_growth, distress_watch, dividend_aristocrats, technical_momentum"},{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":365,"minimum":1,"description":"Lookback period in days (for insider signals)","default":90,"title":"Days"},"description":"Lookback period in days (for insider signals)"},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by country code (e.g., DE, FR)","title":"Country"},"description":"Filter by country code (e.g., DE, FR)"},{"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":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/corporate-ownership":{"get":{"summary":"Get Corporate Ownership","description":"Get corporate ownership relationships (GLEIF Level 2).\n\nShows parent-child ownership for a company. Direction:\n- parents: who owns this company\n- children: what this company owns\n- both: all relationships","operationId":"get_corporate_ownership_v1_corporate_ownership_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"ticker","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Company identifier (optional)","title":"Ticker"},"description":"Company identifier (optional)"},{"name":"lei","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by LEI directly","title":"Lei"},"description":"Filter by LEI directly"},{"name":"direction","in":"query","required":false,"schema":{"type":"string","description":"Direction: parents, children, or both","default":"both","title":"Direction"},"description":"Direction: parents, children, or both"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/analyst-consensus":{"get":{"summary":"Get Analyst Consensus","description":"Get analyst price targets and recommendations (from yfinance).\n\nReturns target prices (mean, median, high, low), number of analysts,\nrecommendation key (buy/hold/sell), and recommendation mean score.","operationId":"get_analyst_consensus_v1_analyst_consensus_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"ticker","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Company identifier (optional)","title":"Ticker"},"description":"Company identifier (optional)"},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by country code","title":"Country"},"description":"Filter by country code"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/index-memberships":{"get":{"summary":"Get Index Memberships","description":"Get index membership data. Query by index name or company.","operationId":"get_index_memberships_v1_index_memberships_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"index_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Index name (e.g., DAX, CAC 40, FTSE 100)","title":"Index Name"},"description":"Index name (e.g., DAX, CAC 40, FTSE 100)"},{"name":"ticker","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Company identifier","title":"Ticker"},"description":"Company identifier"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/index-memberships/indices":{"get":{"summary":"List Indices","description":"List all available indices with company counts.","operationId":"list_indices_v1_index_memberships_indices_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}]}},"/v1/bond-yields":{"get":{"summary":"Get Bond Yields","description":"Get government bond yields and ECB policy rates.\n\nGovernment yields: country=DE/FR/IT/ES/NL/BE/AT/FI/... maturity=10Y (ECB IRS).\nAlso EU AAA yield curve (country=EU) and Euro-area benchmark (country=EU_BM).\nECB policy rates: country=ECB with maturity=MRO/DFR/MLF/ESTR.","operationId":"get_bond_yields_v1_bond_yields_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Country code (e.g., DE, FR, IT)","title":"Country"},"description":"Country code (e.g., DE, FR, IT)"},{"name":"maturity","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Maturity (e.g., 10Y, 2Y, 30Y)","title":"Maturity"},"description":"Maturity (e.g., 10Y, 2Y, 30Y)"},{"name":"date_gte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Start date (YYYY-MM-DD)","title":"Date Gte"},"description":"Start date (YYYY-MM-DD)"},{"name":"date_lte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"End date (YYYY-MM-DD)","title":"Date Lte"},"description":"End date (YYYY-MM-DD)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/bond-yields/curve":{"get":{"summary":"Get Yield Curve","description":"Get yield curve for a country (all maturities at one date).","operationId":"get_yield_curve_v1_bond_yields_curve_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"country","in":"query","required":true,"schema":{"type":"string","description":"Country code (e.g., DE, FR, IT)","title":"Country"},"description":"Country code (e.g., DE, FR, IT)"},{"name":"date","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Date for yield curve (YYYY-MM-DD, default: latest)","title":"Date"},"description":"Date for yield curve (YYYY-MM-DD, default: latest)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/prospectuses":{"get":{"summary":"Get Prospectuses","description":"Approved prospectus records from the ESMA Prospectus Register (PRIII).","operationId":"get_prospectuses_v1_prospectuses_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"ticker","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Ticker, ISIN, or LEI","title":"Ticker"},"description":"Ticker, ISIN, or LEI"},{"name":"lei","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lei"}},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Home member state (ISO2)","title":"Country"},"description":"Home member state (ISO2)"},{"name":"doc_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Document type code (e.g. STDA, BPRO, FTWS)","title":"Doc Type"},"description":"Document type code (e.g. STDA, BPRO, FTWS)"},{"name":"date_gte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date Gte"}},{"name":"date_lte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date Lte"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/funds":{"get":{"summary":"List Funds","description":"Search the ESMA Funds register (UCITS, AIFs, EuVECA, LTIF, ESEF).\n\nFund-level metadata: manager, LEI, domicile, host countries, legal framework,\nstatus. Cross-reference `manager_lei` with `/companies` to find the asset\nmanager's filings, insider trades, etc.","operationId":"list_funds_v1_funds_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Case-insensitive name substring","title":"Q"},"description":"Case-insensitive name substring"},{"name":"manager_lei","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Manager Lei"}},{"name":"manager_ticker","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Ticker/ISIN/LEI of manager firm","title":"Manager Ticker"},"description":"Ticker/ISIN/LEI of manager firm"},{"name":"framework","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"UCITS, AIFD, EuVECA, LTIF, ESEF","title":"Framework"},"description":"UCITS, AIFD, EuVECA, LTIF, ESEF"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Active or Inactive","title":"Status"},"description":"Active or Inactive"},{"name":"domicile","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Domicile country ISO2 (e.g. LU, IE)","title":"Domicile"},"description":"Domicile country ISO2 (e.g. LU, IE)"},{"name":"host_country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Marketed in this country (ISO2)","title":"Host Country"},"description":"Marketed in this country (ISO2)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/funds/managers":{"get":{"summary":"List Fund Managers","description":"Aggregate asset managers by fund count. Useful for discovering who owns what.","operationId":"list_fund_managers_v1_funds_managers_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Manager country ISO2","title":"Country"},"description":"Manager country ISO2"},{"name":"min_funds","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Min Funds"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/regulatory-sanctions":{"get":{"summary":"Get Regulatory Sanctions","description":"MAR / MiFID / MiFIR enforcement actions from the ESMA sanctions register.","operationId":"get_regulatory_sanctions_v1_regulatory_sanctions_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"ticker","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Ticker, ISIN, LEI, or name","title":"Ticker"},"description":"Ticker, ISIN, LEI, or name"},{"name":"framework","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Legal framework (MAR, MiFID, etc.)","title":"Framework"},"description":"Legal framework (MAR, MiFID, etc.)"},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Country name (uppercase, e.g. CZECHIA)","title":"Country"},"description":"Country name (uppercase, e.g. CZECHIA)"},{"name":"date_gte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Date Gte"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/companies/{identifier}/enrichment":{"get":{"summary":"Get Company Enrichment","description":"Wikidata-sourced metadata for a company (website, HQ, industry, logo, etc).","operationId":"get_company_enrichment_v1_companies__identifier__enrichment_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"identifier","in":"path","required":true,"schema":{"type":"string","title":"Identifier"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/trading-suspensions":{"get":{"summary":"Get Trading Suspensions","description":"ESMA SARIS register — trading suspensions and instrument removals.","operationId":"get_trading_suspensions_v1_trading_suspensions_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"ticker","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Ticker, ISIN, or LEI","title":"Ticker"},"description":"Ticker, ISIN, or LEI"},{"name":"isin","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Isin"}},{"name":"lei","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lei"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Suspension or Removal","title":"Category"},"description":"Suspension or Removal"},{"name":"ongoing_only","in":"query","required":false,"schema":{"type":"boolean","description":"Only currently suspended instruments","default":false,"title":"Ongoing Only"},"description":"Only currently suspended instruments"},{"name":"market","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Operating MIC (e.g., XETR, XPAR)","title":"Market"},"description":"Operating MIC (e.g., XETR, XPAR)"},{"name":"date_gte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Effective-from start (YYYY-MM-DD)","title":"Date Gte"},"description":"Effective-from start (YYYY-MM-DD)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/macro":{"get":{"summary":"Get Macro","description":"Eurostat macro indicators (HICP inflation, unemployment, GDP q/q growth).","operationId":"get_macro_v1_macro_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Country code (ISO2, or EU27_2020, EA20)","title":"Country"},"description":"Country code (ISO2, or EU27_2020, EA20)"},{"name":"indicator","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"hicp_yoy_pct | unemployment_rate | gdp_qoq_pct","title":"Indicator"},"description":"hicp_yoy_pct | unemployment_rate | gdp_qoq_pct"},{"name":"period_gte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Earliest period (YYYY, YYYY-MM, YYYY-Qn)","title":"Period Gte"},"description":"Earliest period (YYYY, YYYY-MM, YYYY-Qn)"},{"name":"period_lte","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Latest period","title":"Period Lte"},"description":"Latest period"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/freshness":{"get":{"summary":"Freshness","description":"Per-source data recency: latest data date, age, last refresh, freshness state.","operationId":"freshness_v1_freshness_get","security":[{"APIKeyHeader":[]},{"HTTPBearer":[]}],"parameters":[{"name":"stale_only","in":"query","required":false,"schema":{"type":"boolean","description":"Only return stale/error/unknown sources","default":false,"title":"Stale Only"},"description":"Only return stale/error/unknown sources"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"summary":"Health","description":"Process liveness check; intentionally independent of the database.","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"CompanyResponse":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"ticker":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticker"},"isin":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Isin"},"lei":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Lei"},"mic":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mic"},"ticker_mic":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ticker Mic"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"sector":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sector"},"industry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Industry"},"currency":{"type":"string","title":"Currency","default":"EUR"}},"type":"object","required":["id","name"],"title":"CompanyResponse"},"CurrencyConversionResponse":{"properties":{"amount":{"type":"number","title":"Amount"},"from_currency":{"type":"string","title":"From Currency"},"to_currency":{"type":"string","title":"To Currency"},"converted_amount":{"type":"number","title":"Converted Amount"},"rate_date":{"type":"string","title":"Rate Date"},"rate_used":{"type":"number","title":"Rate Used"}},"type":"object","required":["amount","from_currency","to_currency","converted_amount","rate_date","rate_used"],"title":"CurrencyConversionResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"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"}},"securitySchemes":{"APIKeyHeader":{"type":"apiKey","in":"header","name":"X-API-KEY"},"HTTPBearer":{"type":"http","scheme":"bearer"}}}}