{"openapi":"3.1.0","info":{"title":"CEF Radar","version":"0.1.0"},"paths":{"/api/v1/campaigns":{"get":{"summary":"List Campaigns","operationId":"list_campaigns_api_v1_campaigns_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"type":"string","description":"active | exited | all","default":"active","title":"Status"},"description":"active | exited | all"},{"name":"cef","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"1 = closed-end funds only, 0 = non-CEF, omit = all","title":"Cef"},"description":"1 = closed-end funds only, 0 = non-CEF, omit = all"},{"name":"activist","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"activist slug","title":"Activist"},"description":"activist slug"},{"name":"issuer","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"issuer ticker or slug","title":"Issuer"},"description":"issuer ticker or slug"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Per Page"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Campaigns Api V1 Campaigns Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/activists":{"get":{"summary":"List Activists","operationId":"list_activists_api_v1_activists_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":100,"title":"Per Page"}},{"name":"cef_focus","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cef Focus"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Activists Api V1 Activists Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/activists/{slug}":{"get":{"summary":"Get Activist","operationId":"get_activist_api_v1_activists__slug__get","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string","title":"Slug"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Activist Api V1 Activists  Slug  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/funds":{"get":{"summary":"List Funds","operationId":"list_funds_api_v1_funds_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":100,"title":"Per Page"}},{"name":"activist","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"1 = only funds with an active activist stake","title":"Activist"},"description":"1 = only funds with an active activist stake"},{"name":"sponsor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"sponsor short name, e.g. Nuveen","title":"Sponsor"},"description":"sponsor short name, e.g. Nuveen"},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"category slug, e.g. municipal","title":"Category"},"description":"category slug, e.g. municipal"},{"name":"sort","in":"query","required":false,"schema":{"type":"string","description":"ticker | name | cost | borrowing | size","default":"ticker","title":"Sort"},"description":"ticker | name | cost | borrowing | size"},{"name":"dir","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"asc | desc (default: asc for ticker/name, desc for numbers)","title":"Dir"},"description":"asc | desc (default: asc for ticker/name, desc for numbers)"},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"substring of name/ticker","title":"Q"},"description":"substring of name/ticker"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Funds Api V1 Funds Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/funds/{ticker}":{"get":{"summary":"Get Fund","operationId":"get_fund_api_v1_funds__ticker__get","parameters":[{"name":"ticker","in":"path","required":true,"schema":{"type":"string","title":"Ticker"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Fund Api V1 Funds  Ticker  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/funds/{ticker}/facts":{"get":{"summary":"Get Fund Facts","description":"Latest yearly (N-CEN), quarterly (N-PORT) and annual-report (inline XBRL) facts; each with as_of + source_url.","operationId":"get_fund_facts_api_v1_funds__ticker__facts_get","parameters":[{"name":"ticker","in":"path","required":true,"schema":{"type":"string","title":"Ticker"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Fund Facts Api V1 Funds  Ticker  Facts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/funds/{ticker}/holdings":{"get":{"summary":"Get Fund Holdings","description":"Top 25 positions and the asset / issuer / country mix from the latest quarterly holdings report.","operationId":"get_fund_holdings_api_v1_funds__ticker__holdings_get","parameters":[{"name":"ticker","in":"path","required":true,"schema":{"type":"string","title":"Ticker"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Fund Holdings Api V1 Funds  Ticker  Holdings Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/funds/{ticker}/events":{"get":{"summary":"Get Fund Events","description":"Corporate actions for one fund, newest first (tender offers, votes, closings, mergers, offerings, payouts).","operationId":"get_fund_events_api_v1_funds__ticker__events_get","parameters":[{"name":"ticker","in":"path","required":true,"schema":{"type":"string","title":"Ticker"}},{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kind"}},{"name":"open","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"1 = only open (act-on) events","title":"Open"},"description":"1 = only open (act-on) events"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Fund Events Api V1 Funds  Ticker  Events Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/events":{"get":{"summary":"List Events","description":"Corporate actions across funds, newest first.","operationId":"list_events_api_v1_events_get","parameters":[{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"event kind, e.g. tender_offer","title":"Kind"},"description":"event kind, e.g. tender_offer"},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD (filed_at >= since)","title":"Since"},"description":"YYYY-MM-DD (filed_at >= since)"},{"name":"until","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD (filed_at <= until)","title":"Until"},"description":"YYYY-MM-DD (filed_at <= until)"},{"name":"cef","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"1 = closed-end funds only (default), 0 = all issuers","default":"1","title":"Cef"},"description":"1 = closed-end funds only (default), 0 = all issuers"},{"name":"issuer","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"fund ticker","title":"Issuer"},"description":"fund ticker"},{"name":"open","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"1 = only open (act-on) events","title":"Open"},"description":"1 = only open (act-on) events"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Per Page"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Events Api V1 Events Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/search":{"get":{"summary":"Search","description":"Suggestions for the search box: ``[{ticker, name, url}]`` (max 6; ticker exact first). Cached 60 s.","operationId":"search_api_v1_search_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200,"default":"","title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Search Api V1 Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/holdings/search":{"get":{"summary":"Holdings Search","description":"Which closed-end funds hold a security: ``[{security, cusip, isin, funds: [{ticker, name, pct_val,\npct_of_holdings, as_of, source_url}]}]`` from every fund's latest N-PORT (grouped by security, exact name first;\nat most 50 funds per security and 200 fund rows in all). ``pct_val`` is the security's share of the fund's NET\nassets as filed (0-100); ``pct_of_holdings`` its share of the fund's long book (what the site prints), which is\nsmaller on funds that borrow.","operationId":"holdings_search_api_v1_holdings_search_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":200,"description":"company or bond name, CUSIP or ISIN","default":"","title":"Q"},"description":"company or bond name, CUSIP or ISIN"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Holdings Search Api V1 Holdings Search Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/filings":{"get":{"summary":"List Filings","operationId":"list_filings_api_v1_filings_get","parameters":[{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD (filed_at >= since)","title":"Since"},"description":"YYYY-MM-DD (filed_at >= since)"},{"name":"until","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"YYYY-MM-DD (filed_at <= until)","title":"Until"},"description":"YYYY-MM-DD (filed_at <= until)"},{"name":"form","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"SC 13D | SC 13D/A | SC 13G | SC 13G/A","title":"Form"},"description":"SC 13D | SC 13D/A | SC 13G | SC 13G/A"},{"name":"cef","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"1 = closed-end fund subjects only","title":"Cef"},"description":"1 = closed-end fund subjects only"},{"name":"activist","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"activist slug","title":"Activist"},"description":"activist slug"},{"name":"issuer","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"issuer ticker","title":"Issuer"},"description":"issuer ticker"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","maximum":200,"minimum":1,"default":50,"title":"Per Page"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response List Filings Api V1 Filings Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/filings/{accession}":{"get":{"summary":"Get Filing","operationId":"get_filing_api_v1_filings__accession__get","parameters":[{"name":"accession","in":"path","required":true,"schema":{"type":"string","title":"Accession"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Filing Api V1 Filings  Accession  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/me":{"get":{"summary":"Me","operationId":"me_api_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Me Api Me Get"}}}}}}},"/api/mcp":{"get":{"summary":"Mcp Manifest","description":"Tool manifest for AI assistants: every tool maps to one REST GET (no state, no side effects).","operationId":"mcp_manifest_api_mcp_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Mcp Manifest Api Mcp Get"}}}}}}}},"components":{"schemas":{"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"}}}}