{"openapi":"3.1.0","info":{"title":"Shariah Holdings API","description":"Read-only validated holdings for SPUS, HLAL, and MNZL.","version":"0.1.0"},"paths":{"/health":{"get":{"tags":["service"],"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Health"}}}}}}},"/metadata":{"get":{"tags":["service"],"summary":"Metadata","operationId":"metadata_metadata_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Metadata"}}}}}}},"/stocks":{"get":{"tags":["stocks"],"summary":"Stocks","operationId":"stocks_stocks_get","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Page Size"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Search"}},{"name":"fund","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":10},{"type":"null"}],"title":"Fund"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StocksPage"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/stocks/{symbol}":{"get":{"tags":["stocks"],"summary":"Stock","operationId":"stock_stocks__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/StockDetail"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/funds":{"get":{"tags":["funds"],"summary":"Funds","operationId":"funds_funds_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FundsResponse"}}}}}}},"/funds/{fund}/holdings":{"get":{"tags":["funds"],"summary":"Fund Holdings","operationId":"fund_holdings_funds__fund__holdings_get","parameters":[{"name":"fund","in":"path","required":true,"schema":{"type":"string","title":"Fund"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Page Size"}},{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Search"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FundHoldingsPage"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/overlap":{"get":{"tags":["stocks"],"summary":"Overlap","operationId":"overlap_overlap_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OverlapResponse"}}}}}}},"/downloads/shariah-list.csv":{"get":{"tags":["downloads"],"summary":"Shariah Csv","operationId":"shariah_csv_downloads_shariah_list_csv_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/downloads/holdings.csv":{"get":{"tags":["downloads"],"summary":"Holdings Csv","operationId":"holdings_csv_downloads_holdings_csv_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"Exclusion":{"properties":{"reason":{"type":"string","title":"Reason"},"row_number":{"type":"integer","title":"Row Number"},"symbol":{"type":"string","title":"Symbol"}},"type":"object","required":["reason","row_number","symbol"],"title":"Exclusion"},"FundHoldingsPage":{"properties":{"generation":{"type":"string","title":"Generation"},"checked_at":{"type":"string","title":"Checked At"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"},"pages":{"type":"integer","title":"Pages"},"fund":{"type":"string","title":"Fund"},"items":{"items":{"$ref":"#/components/schemas/Holding"},"type":"array","title":"Items"}},"type":"object","required":["generation","checked_at","total","page","page_size","pages","fund","items"],"title":"FundHoldingsPage"},"FundMetadata":{"properties":{"excluded_row_count":{"type":"integer","title":"Excluded Row Count"},"exclusions":{"items":{"$ref":"#/components/schemas/Exclusion"},"type":"array","title":"Exclusions"},"fund":{"type":"string","title":"Fund"},"holding_count":{"type":"integer","title":"Holding Count"},"holdings_date":{"type":"string","title":"Holdings Date"},"source_row_count":{"type":"integer","title":"Source Row Count"},"source_url":{"type":"string","title":"Source Url"}},"type":"object","required":["excluded_row_count","exclusions","fund","holding_count","holdings_date","source_row_count","source_url"],"title":"FundMetadata"},"FundSummary":{"properties":{"fund":{"type":"string","title":"Fund"},"holding_count":{"type":"integer","title":"Holding Count"},"holdings_date":{"type":"string","title":"Holdings Date"},"source_url":{"type":"string","title":"Source Url"}},"type":"object","required":["fund","holding_count","holdings_date","source_url"],"title":"FundSummary"},"FundsResponse":{"properties":{"generation":{"type":"string","title":"Generation"},"checked_at":{"type":"string","title":"Checked At"},"items":{"items":{"$ref":"#/components/schemas/FundSummary"},"type":"array","title":"Items"}},"type":"object","required":["generation","checked_at","items"],"title":"FundsResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"Health":{"properties":{"generation":{"type":"string","title":"Generation"},"checked_at":{"type":"string","title":"Checked At"},"status":{"type":"string","title":"Status"}},"type":"object","required":["generation","checked_at","status"],"title":"Health"},"Holding":{"properties":{"fund":{"type":"string","title":"Fund"},"symbol":{"type":"string","title":"Symbol"},"name":{"type":"string","title":"Name"},"cusip":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cusip"},"weight":{"type":"string","title":"Weight"},"shares":{"type":"string","title":"Shares"},"market_value":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Market Value"},"holdings_date":{"type":"string","title":"Holdings Date"},"source_url":{"type":"string","title":"Source Url"}},"type":"object","required":["fund","symbol","name","cusip","weight","shares","market_value","holdings_date","source_url"],"title":"Holding"},"Metadata":{"properties":{"generation":{"type":"string","title":"Generation"},"checked_at":{"type":"string","title":"Checked At"},"acquired_at":{"type":"string","title":"Acquired At"},"funds":{"items":{"$ref":"#/components/schemas/FundMetadata"},"type":"array","title":"Funds"},"unique_symbols":{"type":"integer","title":"Unique Symbols"}},"type":"object","required":["generation","checked_at","acquired_at","funds","unique_symbols"],"title":"Metadata"},"OverlapResponse":{"properties":{"generation":{"type":"string","title":"Generation"},"checked_at":{"type":"string","title":"Checked At"},"fund_totals":{"additionalProperties":{"type":"integer"},"type":"object","title":"Fund Totals"},"etf_totals":{"additionalProperties":{"type":"integer"},"type":"object","title":"Etf Totals"},"union":{"type":"integer","title":"Union"},"exactly_one":{"type":"integer","title":"Exactly One"},"at_least_two":{"type":"integer","title":"At Least Two"},"pairwise_including_triple":{"additionalProperties":{"type":"integer"},"type":"object","title":"Pairwise Including Triple"},"exact_only":{"additionalProperties":{"type":"integer"},"type":"object","title":"Exact Only"}},"type":"object","required":["generation","checked_at","fund_totals","etf_totals","union","exactly_one","at_least_two","pairwise_including_triple","exact_only"],"title":"OverlapResponse"},"StockDetail":{"properties":{"generation":{"type":"string","title":"Generation"},"checked_at":{"type":"string","title":"Checked At"},"symbol":{"type":"string","title":"Symbol"},"name":{"type":"string","title":"Name"},"source":{"type":"string","title":"Source"},"membership":{"items":{"type":"string"},"type":"array","title":"Membership"},"funds":{"items":{"$ref":"#/components/schemas/Holding"},"type":"array","title":"Funds"}},"type":"object","required":["generation","checked_at","symbol","name","source","membership","funds"],"title":"StockDetail"},"StockSummary":{"properties":{"symbol":{"type":"string","title":"Symbol"},"name":{"type":"string","title":"Name"},"source":{"type":"string","title":"Source"},"membership":{"items":{"type":"string"},"type":"array","title":"Membership"}},"type":"object","required":["symbol","name","source","membership"],"title":"StockSummary"},"StocksPage":{"properties":{"generation":{"type":"string","title":"Generation"},"checked_at":{"type":"string","title":"Checked At"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"page_size":{"type":"integer","title":"Page Size"},"pages":{"type":"integer","title":"Pages"},"items":{"items":{"$ref":"#/components/schemas/StockSummary"},"type":"array","title":"Items"}},"type":"object","required":["generation","checked_at","total","page","page_size","pages","items"],"title":"StocksPage"},"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"}}}}