diff --git a/openbb_platform/extensions/equity/integration/test_equity_api.py b/openbb_platform/extensions/equity/integration/test_equity_api.py index 652b9495eef8..12867f8f70c1 100644 --- a/openbb_platform/extensions/equity/integration/test_equity_api.py +++ b/openbb_platform/extensions/equity/integration/test_equity_api.py @@ -913,6 +913,8 @@ def test_equity_fundamental_revenue_per_segment(params, headers): "symbol": "AAPL", "limit": 3, "form_type": "8-K", + "start_date": None, + "end_date": None, "cik": None, "provider": "sec", "use_cache": False, @@ -924,6 +926,8 @@ def test_equity_fundamental_revenue_per_segment(params, headers): "limit": 3, "form_type": "10-Q", "symbol": None, + "start_date": None, + "end_date": None, "provider": "sec", "use_cache": False, } diff --git a/openbb_platform/extensions/equity/integration/test_equity_python.py b/openbb_platform/extensions/equity/integration/test_equity_python.py index 7e361d424b61..d521ba67df11 100644 --- a/openbb_platform/extensions/equity/integration/test_equity_python.py +++ b/openbb_platform/extensions/equity/integration/test_equity_python.py @@ -874,6 +874,8 @@ def test_equity_fundamental_revenue_per_segment(params, obb): "limit": 3, "form_type": "8-K", "cik": None, + "start_date": None, + "end_date": None, "provider": "sec", "use_cache": False, } @@ -884,6 +886,8 @@ def test_equity_fundamental_revenue_per_segment(params, obb): "limit": 3, "form_type": "10-Q", "symbol": None, + "start_date": None, + "end_date": None, "provider": "sec", "use_cache": False, } diff --git a/openbb_platform/openbb/assets/reference.json b/openbb_platform/openbb/assets/reference.json index 2c53c71c98f4..d62b9bf95de7 100644 --- a/openbb_platform/openbb/assets/reference.json +++ b/openbb_platform/openbb/assets/reference.json @@ -23930,11 +23930,374 @@ }, { "name": "form_type", - "type": "str", - "description": "Filter by form type. Check the data provider for available types.", + "type": "Union[str, List[str]]", + "description": "Filter by form type. Check the data provider for available types. Multiple items allowed for provider(s): sec.", "default": null, "optional": true, - "choices": null + "choices": [ + "1", + "1-A", + "1-A_POS", + "1-A-W", + "1-E", + "1-E_AD", + "1-K", + "1-SA", + "1-U", + "1-Z", + "1-Z-W", + "10-12B", + "10-12G", + "10-D", + "10-K", + "10-KT", + "10-Q", + "10-QT", + "11-K", + "11-KT", + "13F-HR", + "13F-NT", + "13FCONP", + "144", + "15-12B", + "15-12G", + "15-15D", + "15F-12B", + "15F-12G", + "15F-15D", + "18-12B", + "18-K", + "19B-4E", + "2-A", + "2-AF", + "2-E", + "20-F", + "20FR12B", + "20FR12G", + "24F-2NT", + "25", + "25-NSE", + "253G1", + "253G2", + "253G3", + "253G4", + "3", + "305B2", + "34-12H", + "4", + "40-17F1", + "40-17F2", + "40-17G", + "40-17GCS", + "40-202A", + "40-203A", + "40-206A", + "40-24B2", + "40-33", + "40-6B", + "40-8B25", + "40-8F-2", + "40-APP", + "40-F", + "40-OIP", + "40FR12B", + "40FR12G", + "424A", + "424B1", + "424B2", + "424B3", + "424B4", + "424B5", + "424B7", + "424B8", + "424H", + "425", + "485APOS", + "485BPOS", + "485BXT", + "486APOS", + "486BPOS", + "486BXT", + "487", + "497", + "497AD", + "497H2", + "497J", + "497K", + "497VPI", + "497VPU", + "5", + "6-K", + "6B_NTC", + "6B_ORDR", + "8-A12B", + "8-A12G", + "8-K", + "8-K12B", + "8-K12G3", + "8-K15D5", + "8-M", + "8F-2_NTC", + "8F-2_ORDR", + "9-M", + "ABS-15G", + "ABS-EE", + "ADN-MTL", + "ADV-E", + "ADV-H-C", + "ADV-H-T", + "ADV-NR", + "ANNLRPT", + "APP_NTC", + "APP_ORDR", + "APP_WD", + "APP_WDG", + "ARS", + "ATS-N", + "ATS-N-C", + "ATS-N/UA", + "AW", + "AW_WD", + "C", + "C-AR", + "C-AR-W", + "C-TR", + "C-TR-W", + "C-U", + "C-U-W", + "C-W", + "CB", + "CERT", + "CERTARCA", + "CERTBATS", + "CERTCBO", + "CERTNAS", + "CERTNYS", + "CERTPAC", + "CFPORTAL", + "CFPORTAL-W", + "CORRESP", + "CT_ORDER", + "D", + "DEF_14A", + "DEF_14C", + "DEFA14A", + "DEFA14C", + "DEFC14A", + "DEFC14C", + "DEFM14A", + "DEFM14C", + "DEFN14A", + "DEFR14A", + "DEFR14C", + "DEL_AM", + "DFAN14A", + "DFRN14A", + "DOS", + "DOSLTR", + "DRS", + "DRSLTR", + "DSTRBRPT", + "EFFECT", + "F-1", + "F-10", + "F-10EF", + "F-10POS", + "F-1MEF", + "F-3", + "F-3ASR", + "F-3D", + "F-3DPOS", + "F-3MEF", + "F-4", + "F-4_POS", + "F-4MEF", + "F-6", + "F-6_POS", + "F-6EF", + "F-7", + "F-7_POS", + "F-8", + "F-8_POS", + "F-80", + "F-80POS", + "F-9", + "F-9_POS", + "F-N", + "F-X", + "FOCUSN", + "FWP", + "G-405", + "G-405N", + "G-FIN", + "G-FINW", + "IRANNOTICE", + "MA", + "MA-A", + "MA-I", + "MA-W", + "MSD", + "MSDCO", + "MSDW", + "N-1", + "N-14", + "N-14_8C", + "N-14MEF", + "N-18F1", + "N-1A", + "N-2", + "N-2_POSASR", + "N-23C-2", + "N-23C3A", + "N-23C3B", + "N-23C3C", + "N-2ASR", + "N-2MEF", + "N-30B-2", + "N-30D", + "N-4", + "N-5", + "N-54A", + "N-54C", + "N-6", + "N-6F", + "N-8A", + "N-8B-2", + "N-8F", + "N-8F_NTC", + "N-8F_ORDR", + "N-CEN", + "N-CR", + "N-CSR", + "N-CSRS", + "N-MFP", + "N-MFP1", + "N-MFP2", + "N-PX", + "N-Q", + "N-VP", + "N-VPFS", + "NO_ACT", + "NPORT-EX", + "NPORT-NP", + "NPORT-P", + "NRSRO-CE", + "NRSRO-UPD", + "NSAR-A", + "NSAR-AT", + "NSAR-B", + "NSAR-BT", + "NSAR-U", + "NT_10-D", + "NT_10-K", + "NT_10-Q", + "NT_11-K", + "NT_20-F", + "NT_N-CEN", + "NT_N-MFP", + "NT_N-MFP1", + "NT_N-MFP2", + "NT_NPORT-EX", + "NT_NPORT-P", + "NT-NCEN", + "NT-NCSR", + "NT-NSAR", + "NTFNCEN", + "NTFNCSR", + "NTFNSAR", + "NTN_10D", + "NTN_10K", + "NTN_10Q", + "NTN_20F", + "OIP_NTC", + "OIP_ORDR", + "POS_8C", + "POS_AM", + "POS_AMI", + "POS_EX", + "POS462B", + "POS462C", + "POSASR", + "PRE_14A", + "PRE_14C", + "PREC14A", + "PREC14C", + "PREM14A", + "PREM14C", + "PREN14A", + "PRER14A", + "PRER14C", + "PRRN14A", + "PX14A6G", + "PX14A6N", + "QRTLYRPT", + "QUALIF", + "REG-NR", + "REVOKED", + "RW", + "RW_WD", + "S-1", + "S-11", + "S-11MEF", + "S-1MEF", + "S-20", + "S-3", + "S-3ASR", + "S-3D", + "S-3DPOS", + "S-3MEF", + "S-4", + "S-4_POS", + "S-4EF", + "S-4MEF", + "S-6", + "S-8", + "S-8_POS", + "S-B", + "S-BMEF", + "SBSE", + "SBSE-A", + "SBSE-BD", + "SBSE-C", + "SBSE-W", + "SC_13D", + "SC_13E1", + "SC_13E3", + "SC_13G", + "SC_14D9", + "SC_14F1", + "SC_14N", + "SC_TO-C", + "SC_TO-I", + "SC_TO-T", + "SC13E4F", + "SC14D1F", + "SC14D9C", + "SC14D9F", + "SD", + "SDR", + "SE", + "SEC_ACTION", + "SEC_STAFF_ACTION", + "SEC_STAFF_LETTER", + "SF-1", + "SF-3", + "SL", + "SP_15D2", + "STOP_ORDER", + "SUPPL", + "T-3", + "TA-1", + "TA-2", + "TA-W", + "TACO", + "TH", + "TTW", + "UNDER", + "UPLOAD", + "WDL-REQ", + "X-17A-5" + ] }, { "name": "limit", @@ -23983,7 +24346,7 @@ }, { "name": "form_type", - "type": "Literal['1', '1-A', '1-A_POS', '1-A-W', '1-E', '1-E_AD', '1-K', '1-SA', '1-U', '1-Z', '1-Z-W', '10-12B', '10-12G', '10-D', '10-K', '10-KT', '10-Q', '10-QT', '11-K', '11-KT', '13F-HR', '13F-NT', '13FCONP', '144', '15-12B', '15-12G', '15-15D', '15F-12B', '15F-12G', '15F-15D', '18-12B', '18-K', '19B-4E', '2-A', '2-AF', '2-E', '20-F', '20FR12B', '20FR12G', '24F-2NT', '25', '25-NSE', '253G1', '253G2', '253G3', '253G4', '3', '305B2', '34-12H', '4', '40-17F1', '40-17F2', '40-17G', '40-17GCS', '40-202A', '40-203A', '40-206A', '40-24B2', '40-33', '40-6B', '40-8B25', '40-8F-2', '40-APP', '40-F', '40-OIP', '40FR12B', '40FR12G', '424A', '424B1', '424B2', '424B3', '424B4', '424B5', '424B7', '424B8', '424H', '425', '485APOS', '485BPOS', '485BXT', '486APOS', '486BPOS', '486BXT', '487', '497', '497AD', '497H2', '497J', '497K', '497VPI', '497VPU', '5', '6-K', '6B_NTC', '6B_ORDR', '8-A12B', '8-A12G', '8-K', '8-K12B', '8-K12G3', '8-K15D5', '8-M', '8F-2_NTC', '8F-2_ORDR', '9-M', 'ABS-15G', 'ABS-EE', 'ADN-MTL', 'ADV-E', 'ADV-H-C', 'ADV-H-T', 'ADV-NR', 'ANNLRPT', 'APP_NTC', 'APP_ORDR', 'APP_WD', 'APP_WDG', 'ARS', 'ATS-N', 'ATS-N-C', 'ATS-N/UA', 'AW', 'AW_WD', 'C', 'C-AR', 'C-AR-W', 'C-TR', 'C-TR-W', 'C-U', 'C-U-W', 'C-W', 'CB', 'CERT', 'CERTARCA', 'CERTBATS', 'CERTCBO', 'CERTNAS', 'CERTNYS', 'CERTPAC', 'CFPORTAL', 'CFPORTAL-W', 'CORRESP', 'CT_ORDER', 'D', 'DEF_14A', 'DEF_14C', 'DEFA14A', 'DEFA14C', 'DEFC14A', 'DEFC14C', 'DEFM14A', 'DEFM14C', 'DEFN14A', 'DEFR14A', 'DEFR14C', 'DEL_AM', 'DFAN14A', 'DFRN14A', 'DOS', 'DOSLTR', 'DRS', 'DRSLTR', 'DSTRBRPT', 'EFFECT', 'F-1', 'F-10', 'F-10EF', 'F-10POS', 'F-1MEF', 'F-3', 'F-3ASR', 'F-3D', 'F-3DPOS', 'F-3MEF', 'F-4', 'F-4_POS', 'F-4MEF', 'F-6', 'F-6_POS', 'F-6EF', 'F-7', 'F-7_POS', 'F-8', 'F-8_POS', 'F-80', 'F-80POS', 'F-9', 'F-9_POS', 'F-N', 'F-X', 'FOCUSN', 'FWP', 'G-405', 'G-405N', 'G-FIN', 'G-FINW', 'IRANNOTICE', 'MA', 'MA-A', 'MA-I', 'MA-W', 'MSD', 'MSDCO', 'MSDW', 'N-1', 'N-14', 'N-14_8C', 'N-14MEF', 'N-18F1', 'N-1A', 'N-2', 'N-2_POSASR', 'N-23C-2', 'N-23C3A', 'N-23C3B', 'N-23C3C', 'N-2ASR', 'N-2MEF', 'N-30B-2', 'N-30D', 'N-4', 'N-5', 'N-54A', 'N-54C', 'N-6', 'N-6F', 'N-8A', 'N-8B-2', 'N-8F', 'N-8F_NTC', 'N-8F_ORDR', 'N-CEN', 'N-CR', 'N-CSR', 'N-CSRS', 'N-MFP', 'N-MFP1', 'N-MFP2', 'N-PX', 'N-Q', 'N-VP', 'N-VPFS', 'NO_ACT', 'NPORT-EX', 'NPORT-NP', 'NPORT-P', 'NRSRO-CE', 'NRSRO-UPD', 'NSAR-A', 'NSAR-AT', 'NSAR-B', 'NSAR-BT', 'NSAR-U', 'NT_10-D', 'NT_10-K', 'NT_10-Q', 'NT_11-K', 'NT_20-F', 'NT_N-CEN', 'NT_N-MFP', 'NT_N-MFP1', 'NT_N-MFP2', 'NT_NPORT-EX', 'NT_NPORT-P', 'NT-NCEN', 'NT-NCSR', 'NT-NSAR', 'NTFNCEN', 'NTFNCSR', 'NTFNSAR', 'NTN_10D', 'NTN_10K', 'NTN_10Q', 'NTN_20F', 'OIP_NTC', 'OIP_ORDR', 'POS_8C', 'POS_AM', 'POS_AMI', 'POS_EX', 'POS462B', 'POS462C', 'POSASR', 'PRE_14A', 'PRE_14C', 'PREC14A', 'PREC14C', 'PREM14A', 'PREM14C', 'PREN14A', 'PRER14A', 'PRER14C', 'PRRN14A', 'PX14A6G', 'PX14A6N', 'QRTLYRPT', 'QUALIF', 'REG-NR', 'REVOKED', 'RW', 'RW_WD', 'S-1', 'S-11', 'S-11MEF', 'S-1MEF', 'S-20', 'S-3', 'S-3ASR', 'S-3D', 'S-3DPOS', 'S-3MEF', 'S-4', 'S-4_POS', 'S-4EF', 'S-4MEF', 'S-6', 'S-8', 'S-8_POS', 'S-B', 'S-BMEF', 'SBSE', 'SBSE-A', 'SBSE-BD', 'SBSE-C', 'SBSE-W', 'SC_13D', 'SC_13E1', 'SC_13E3', 'SC_13G', 'SC_14D9', 'SC_14F1', 'SC_14N', 'SC_TO-C', 'SC_TO-I', 'SC_TO-T', 'SC13E4F', 'SC14D1F', 'SC14D9C', 'SC14D9F', 'SD', 'SDR', 'SE', 'SEC_ACTION', 'SEC_STAFF_ACTION', 'SEC_STAFF_LETTER', 'SF-1', 'SF-3', 'SL', 'SP_15D2', 'STOP_ORDER', 'SUPPL', 'T-3', 'TA-1', 'TA-2', 'TA-W', 'TACO', 'TH', 'TTW', 'UNDER', 'UPLOAD', 'WDL-REQ', 'X-17A-5']", + "type": "Union[Literal['1', '1-A', '1-A_POS', '1-A-W', '1-E', '1-E_AD', '1-K', '1-SA', '1-U', '1-Z', '1-Z-W', '10-12B', '10-12G', '10-D', '10-K', '10-KT', '10-Q', '10-QT', '11-K', '11-KT', '13F-HR', '13F-NT', '13FCONP', '144', '15-12B', '15-12G', '15-15D', '15F-12B', '15F-12G', '15F-15D', '18-12B', '18-K', '19B-4E', '2-A', '2-AF', '2-E', '20-F', '20FR12B', '20FR12G', '24F-2NT', '25', '25-NSE', '253G1', '253G2', '253G3', '253G4', '3', '305B2', '34-12H', '4', '40-17F1', '40-17F2', '40-17G', '40-17GCS', '40-202A', '40-203A', '40-206A', '40-24B2', '40-33', '40-6B', '40-8B25', '40-8F-2', '40-APP', '40-F', '40-OIP', '40FR12B', '40FR12G', '424A', '424B1', '424B2', '424B3', '424B4', '424B5', '424B7', '424B8', '424H', '425', '485APOS', '485BPOS', '485BXT', '486APOS', '486BPOS', '486BXT', '487', '497', '497AD', '497H2', '497J', '497K', '497VPI', '497VPU', '5', '6-K', '6B_NTC', '6B_ORDR', '8-A12B', '8-A12G', '8-K', '8-K12B', '8-K12G3', '8-K15D5', '8-M', '8F-2_NTC', '8F-2_ORDR', '9-M', 'ABS-15G', 'ABS-EE', 'ADN-MTL', 'ADV-E', 'ADV-H-C', 'ADV-H-T', 'ADV-NR', 'ANNLRPT', 'APP_NTC', 'APP_ORDR', 'APP_WD', 'APP_WDG', 'ARS', 'ATS-N', 'ATS-N-C', 'ATS-N/UA', 'AW', 'AW_WD', 'C', 'C-AR', 'C-AR-W', 'C-TR', 'C-TR-W', 'C-U', 'C-U-W', 'C-W', 'CB', 'CERT', 'CERTARCA', 'CERTBATS', 'CERTCBO', 'CERTNAS', 'CERTNYS', 'CERTPAC', 'CFPORTAL', 'CFPORTAL-W', 'CORRESP', 'CT_ORDER', 'D', 'DEF_14A', 'DEF_14C', 'DEFA14A', 'DEFA14C', 'DEFC14A', 'DEFC14C', 'DEFM14A', 'DEFM14C', 'DEFN14A', 'DEFR14A', 'DEFR14C', 'DEL_AM', 'DFAN14A', 'DFRN14A', 'DOS', 'DOSLTR', 'DRS', 'DRSLTR', 'DSTRBRPT', 'EFFECT', 'F-1', 'F-10', 'F-10EF', 'F-10POS', 'F-1MEF', 'F-3', 'F-3ASR', 'F-3D', 'F-3DPOS', 'F-3MEF', 'F-4', 'F-4_POS', 'F-4MEF', 'F-6', 'F-6_POS', 'F-6EF', 'F-7', 'F-7_POS', 'F-8', 'F-8_POS', 'F-80', 'F-80POS', 'F-9', 'F-9_POS', 'F-N', 'F-X', 'FOCUSN', 'FWP', 'G-405', 'G-405N', 'G-FIN', 'G-FINW', 'IRANNOTICE', 'MA', 'MA-A', 'MA-I', 'MA-W', 'MSD', 'MSDCO', 'MSDW', 'N-1', 'N-14', 'N-14_8C', 'N-14MEF', 'N-18F1', 'N-1A', 'N-2', 'N-2_POSASR', 'N-23C-2', 'N-23C3A', 'N-23C3B', 'N-23C3C', 'N-2ASR', 'N-2MEF', 'N-30B-2', 'N-30D', 'N-4', 'N-5', 'N-54A', 'N-54C', 'N-6', 'N-6F', 'N-8A', 'N-8B-2', 'N-8F', 'N-8F_NTC', 'N-8F_ORDR', 'N-CEN', 'N-CR', 'N-CSR', 'N-CSRS', 'N-MFP', 'N-MFP1', 'N-MFP2', 'N-PX', 'N-Q', 'N-VP', 'N-VPFS', 'NO_ACT', 'NPORT-EX', 'NPORT-NP', 'NPORT-P', 'NRSRO-CE', 'NRSRO-UPD', 'NSAR-A', 'NSAR-AT', 'NSAR-B', 'NSAR-BT', 'NSAR-U', 'NT_10-D', 'NT_10-K', 'NT_10-Q', 'NT_11-K', 'NT_20-F', 'NT_N-CEN', 'NT_N-MFP', 'NT_N-MFP1', 'NT_N-MFP2', 'NT_NPORT-EX', 'NT_NPORT-P', 'NT-NCEN', 'NT-NCSR', 'NT-NSAR', 'NTFNCEN', 'NTFNCSR', 'NTFNSAR', 'NTN_10D', 'NTN_10K', 'NTN_10Q', 'NTN_20F', 'OIP_NTC', 'OIP_ORDR', 'POS_8C', 'POS_AM', 'POS_AMI', 'POS_EX', 'POS462B', 'POS462C', 'POSASR', 'PRE_14A', 'PRE_14C', 'PREC14A', 'PREC14C', 'PREM14A', 'PREM14C', 'PREN14A', 'PRER14A', 'PRER14C', 'PRRN14A', 'PX14A6G', 'PX14A6N', 'QRTLYRPT', 'QUALIF', 'REG-NR', 'REVOKED', 'RW', 'RW_WD', 'S-1', 'S-11', 'S-11MEF', 'S-1MEF', 'S-20', 'S-3', 'S-3ASR', 'S-3D', 'S-3DPOS', 'S-3MEF', 'S-4', 'S-4_POS', 'S-4EF', 'S-4MEF', 'S-6', 'S-8', 'S-8_POS', 'S-B', 'S-BMEF', 'SBSE', 'SBSE-A', 'SBSE-BD', 'SBSE-C', 'SBSE-W', 'SC_13D', 'SC_13E1', 'SC_13E3', 'SC_13G', 'SC_14D9', 'SC_14F1', 'SC_14N', 'SC_TO-C', 'SC_TO-I', 'SC_TO-T', 'SC13E4F', 'SC14D1F', 'SC14D9C', 'SC14D9F', 'SD', 'SDR', 'SE', 'SEC_ACTION', 'SEC_STAFF_ACTION', 'SEC_STAFF_LETTER', 'SF-1', 'SF-3', 'SL', 'SP_15D2', 'STOP_ORDER', 'SUPPL', 'T-3', 'TA-1', 'TA-2', 'TA-W', 'TACO', 'TH', 'TTW', 'UNDER', 'UPLOAD', 'WDL-REQ', 'X-17A-5'], str]", "description": "Type of the SEC filing form.", "default": null, "optional": true, @@ -23997,6 +24360,22 @@ "optional": true, "choices": null }, + { + "name": "start_date", + "type": "Union[date, str]", + "description": "Start date of the data, in YYYY-MM-DD format.", + "default": null, + "optional": true, + "choices": null + }, + { + "name": "end_date", + "type": "Union[date, str]", + "description": "End date of the data, in YYYY-MM-DD format.", + "default": null, + "optional": true, + "choices": null + }, { "name": "use_cache", "type": "bool", diff --git a/openbb_platform/openbb/package/equity_fundamental.py b/openbb_platform/openbb/package/equity_fundamental.py index 55da41cb9522..d77b02b4b92d 100644 --- a/openbb_platform/openbb/package/equity_fundamental.py +++ b/openbb_platform/openbb/package/equity_fundamental.py @@ -1197,9 +1197,9 @@ def filings( Optional[str], OpenBBField(description="Symbol to get data for.") ] = None, form_type: Annotated[ - Optional[str], + Union[str, None, List[Optional[str]]], OpenBBField( - description="Filter by form type. Check the data provider for available types." + description="Filter by form type. Check the data provider for available types. Multiple comma separated items allowed for provider(s): sec." ), ] = None, limit: Annotated[ @@ -1225,16 +1225,16 @@ def filings( ---------- symbol : Optional[str] Symbol to get data for. - form_type : Optional[str] - Filter by form type. Check the data provider for available types. + form_type : Union[str, None, List[Optional[str]]] + Filter by form type. Check the data provider for available types. Multiple comma separated items allowed for provider(s): sec. limit : int The number of data entries to return. provider : Optional[Literal['fmp', 'intrinio', 'sec']] The provider to use, by default None. If None, the priority list configured in the settings is used. Default priority: fmp, intrinio, sec. start_date : Optional[datetime.date] - Start date of the data, in YYYY-MM-DD format. (provider: intrinio) + Start date of the data, in YYYY-MM-DD format. (provider: intrinio, sec) end_date : Optional[datetime.date] - End date of the data, in YYYY-MM-DD format. (provider: intrinio) + End date of the data, in YYYY-MM-DD format. (provider: intrinio, sec) thea_enabled : Optional[bool] Return filings that have been read by Intrinio's Thea NLP. (provider: intrinio) cik : Optional[Union[int, str]] @@ -1334,6 +1334,377 @@ def filings( "limit": limit, }, extra_params=kwargs, + info={ + "form_type": { + "sec": { + "multiple_items_allowed": True, + "choices": [ + "1", + "1-A", + "1-A_POS", + "1-A-W", + "1-E", + "1-E_AD", + "1-K", + "1-SA", + "1-U", + "1-Z", + "1-Z-W", + "10-12B", + "10-12G", + "10-D", + "10-K", + "10-KT", + "10-Q", + "10-QT", + "11-K", + "11-KT", + "13F-HR", + "13F-NT", + "13FCONP", + "144", + "15-12B", + "15-12G", + "15-15D", + "15F-12B", + "15F-12G", + "15F-15D", + "18-12B", + "18-K", + "19B-4E", + "2-A", + "2-AF", + "2-E", + "20-F", + "20FR12B", + "20FR12G", + "24F-2NT", + "25", + "25-NSE", + "253G1", + "253G2", + "253G3", + "253G4", + "3", + "305B2", + "34-12H", + "4", + "40-17F1", + "40-17F2", + "40-17G", + "40-17GCS", + "40-202A", + "40-203A", + "40-206A", + "40-24B2", + "40-33", + "40-6B", + "40-8B25", + "40-8F-2", + "40-APP", + "40-F", + "40-OIP", + "40FR12B", + "40FR12G", + "424A", + "424B1", + "424B2", + "424B3", + "424B4", + "424B5", + "424B7", + "424B8", + "424H", + "425", + "485APOS", + "485BPOS", + "485BXT", + "486APOS", + "486BPOS", + "486BXT", + "487", + "497", + "497AD", + "497H2", + "497J", + "497K", + "497VPI", + "497VPU", + "5", + "6-K", + "6B_NTC", + "6B_ORDR", + "8-A12B", + "8-A12G", + "8-K", + "8-K12B", + "8-K12G3", + "8-K15D5", + "8-M", + "8F-2_NTC", + "8F-2_ORDR", + "9-M", + "ABS-15G", + "ABS-EE", + "ADN-MTL", + "ADV-E", + "ADV-H-C", + "ADV-H-T", + "ADV-NR", + "ANNLRPT", + "APP_NTC", + "APP_ORDR", + "APP_WD", + "APP_WDG", + "ARS", + "ATS-N", + "ATS-N-C", + "ATS-N/UA", + "AW", + "AW_WD", + "C", + "C-AR", + "C-AR-W", + "C-TR", + "C-TR-W", + "C-U", + "C-U-W", + "C-W", + "CB", + "CERT", + "CERTARCA", + "CERTBATS", + "CERTCBO", + "CERTNAS", + "CERTNYS", + "CERTPAC", + "CFPORTAL", + "CFPORTAL-W", + "CORRESP", + "CT_ORDER", + "D", + "DEF_14A", + "DEF_14C", + "DEFA14A", + "DEFA14C", + "DEFC14A", + "DEFC14C", + "DEFM14A", + "DEFM14C", + "DEFN14A", + "DEFR14A", + "DEFR14C", + "DEL_AM", + "DFAN14A", + "DFRN14A", + "DOS", + "DOSLTR", + "DRS", + "DRSLTR", + "DSTRBRPT", + "EFFECT", + "F-1", + "F-10", + "F-10EF", + "F-10POS", + "F-1MEF", + "F-3", + "F-3ASR", + "F-3D", + "F-3DPOS", + "F-3MEF", + "F-4", + "F-4_POS", + "F-4MEF", + "F-6", + "F-6_POS", + "F-6EF", + "F-7", + "F-7_POS", + "F-8", + "F-8_POS", + "F-80", + "F-80POS", + "F-9", + "F-9_POS", + "F-N", + "F-X", + "FOCUSN", + "FWP", + "G-405", + "G-405N", + "G-FIN", + "G-FINW", + "IRANNOTICE", + "MA", + "MA-A", + "MA-I", + "MA-W", + "MSD", + "MSDCO", + "MSDW", + "N-1", + "N-14", + "N-14_8C", + "N-14MEF", + "N-18F1", + "N-1A", + "N-2", + "N-2_POSASR", + "N-23C-2", + "N-23C3A", + "N-23C3B", + "N-23C3C", + "N-2ASR", + "N-2MEF", + "N-30B-2", + "N-30D", + "N-4", + "N-5", + "N-54A", + "N-54C", + "N-6", + "N-6F", + "N-8A", + "N-8B-2", + "N-8F", + "N-8F_NTC", + "N-8F_ORDR", + "N-CEN", + "N-CR", + "N-CSR", + "N-CSRS", + "N-MFP", + "N-MFP1", + "N-MFP2", + "N-PX", + "N-Q", + "N-VP", + "N-VPFS", + "NO_ACT", + "NPORT-EX", + "NPORT-NP", + "NPORT-P", + "NRSRO-CE", + "NRSRO-UPD", + "NSAR-A", + "NSAR-AT", + "NSAR-B", + "NSAR-BT", + "NSAR-U", + "NT_10-D", + "NT_10-K", + "NT_10-Q", + "NT_11-K", + "NT_20-F", + "NT_N-CEN", + "NT_N-MFP", + "NT_N-MFP1", + "NT_N-MFP2", + "NT_NPORT-EX", + "NT_NPORT-P", + "NT-NCEN", + "NT-NCSR", + "NT-NSAR", + "NTFNCEN", + "NTFNCSR", + "NTFNSAR", + "NTN_10D", + "NTN_10K", + "NTN_10Q", + "NTN_20F", + "OIP_NTC", + "OIP_ORDR", + "POS_8C", + "POS_AM", + "POS_AMI", + "POS_EX", + "POS462B", + "POS462C", + "POSASR", + "PRE_14A", + "PRE_14C", + "PREC14A", + "PREC14C", + "PREM14A", + "PREM14C", + "PREN14A", + "PRER14A", + "PRER14C", + "PRRN14A", + "PX14A6G", + "PX14A6N", + "QRTLYRPT", + "QUALIF", + "REG-NR", + "REVOKED", + "RW", + "RW_WD", + "S-1", + "S-11", + "S-11MEF", + "S-1MEF", + "S-20", + "S-3", + "S-3ASR", + "S-3D", + "S-3DPOS", + "S-3MEF", + "S-4", + "S-4_POS", + "S-4EF", + "S-4MEF", + "S-6", + "S-8", + "S-8_POS", + "S-B", + "S-BMEF", + "SBSE", + "SBSE-A", + "SBSE-BD", + "SBSE-C", + "SBSE-W", + "SC_13D", + "SC_13E1", + "SC_13E3", + "SC_13G", + "SC_14D9", + "SC_14F1", + "SC_14N", + "SC_TO-C", + "SC_TO-I", + "SC_TO-T", + "SC13E4F", + "SC14D1F", + "SC14D9C", + "SC14D9F", + "SD", + "SDR", + "SE", + "SEC_ACTION", + "SEC_STAFF_ACTION", + "SEC_STAFF_LETTER", + "SF-1", + "SF-3", + "SL", + "SP_15D2", + "STOP_ORDER", + "SUPPL", + "T-3", + "TA-1", + "TA-2", + "TA-W", + "TACO", + "TH", + "TTW", + "UNDER", + "UPLOAD", + "WDL-REQ", + "X-17A-5", + ], + } + } + }, ) ) diff --git a/openbb_platform/providers/sec/openbb_sec/models/company_filings.py b/openbb_platform/providers/sec/openbb_sec/models/company_filings.py index 020060c752bf..835206a23aad 100644 --- a/openbb_platform/providers/sec/openbb_sec/models/company_filings.py +++ b/openbb_platform/providers/sec/openbb_sec/models/company_filings.py @@ -7,6 +7,7 @@ datetime, ) from typing import Any, Dict, List, Optional, Union +from warnings import warn from openbb_core.app.model.abstract.error import OpenBBError from openbb_core.provider.abstract.fetcher import Fetcher @@ -16,7 +17,7 @@ ) from openbb_core.provider.utils.descriptions import QUERY_DESCRIPTIONS from openbb_core.provider.utils.errors import EmptyDataError -from openbb_sec.utils.definitions import FORM_TYPES, HEADERS +from openbb_sec.utils.definitions import FORM_LIST, FORM_TYPES, HEADERS from pydantic import Field, field_validator @@ -26,6 +27,13 @@ class SecCompanyFilingsQueryParams(CompanyFilingsQueryParams): Source: https://sec.gov/ """ + __json_schema_extra__ = { + "form_type": { + "multiple_items_allowed": True, + "choices": FORM_LIST, + } + } + symbol: Optional[str] = Field( description=QUERY_DESCRIPTIONS.get("symbol", ""), default=None, @@ -34,7 +42,15 @@ class SecCompanyFilingsQueryParams(CompanyFilingsQueryParams): description="Lookup filings by Central Index Key (CIK) instead of by symbol.", default=None, ) - form_type: Optional[FORM_TYPES] = Field( + start_date: Optional[dateType] = Field( + default=None, + description=QUERY_DESCRIPTIONS.get("start_date", ""), + ) + end_date: Optional[dateType] = Field( + default=None, + description=QUERY_DESCRIPTIONS.get("end_date", ""), + ) + form_type: Optional[Union[FORM_TYPES, str]] = Field( description="Type of the SEC filing form.", default=None, ) @@ -43,6 +59,34 @@ class SecCompanyFilingsQueryParams(CompanyFilingsQueryParams): default=True, ) + @field_validator("form_type", mode="before", check_fields=False) + @classmethod + def validate_form_type(cls, v): + """Validate form_type.""" + if not v: + return None + if isinstance(v, str): + forms = v.split(",") + elif isinstance(v, list): + forms = v + else: + raise OpenBBError("Unexpected form_type value.") + new_forms: list = [] + messages: list = [] + for form in forms: + if form.upper().replace("_", " ") in FORM_LIST: + new_forms.append(form.upper().replace("_", " ")) + else: + messages.append(f"Invalid form type: {form}") + + if not new_forms: + raise OpenBBError(f"No valid forms provided -> {', '.join(messages)}") + + if new_forms and messages: + warn("\n ".join(messages)) + + return ",".join(new_forms) if len(new_forms) > 1 else new_forms[0] + class SecCompanyFilingsData(CompanyFilingsData): """SEC Company Filings Data.""" @@ -239,7 +283,7 @@ def transform_data( ) -> List[SecCompanyFilingsData]: """Transform the data.""" # pylint: disable=import-outside-toplevel - from pandas import DataFrame + from pandas import DataFrame, to_datetime if not data: raise EmptyDataError( @@ -267,7 +311,13 @@ def transform_data( .replace("N/A", None) .astype(str) ) + filings["reportDate"] = to_datetime(filings["reportDate"]).dt.date + filings["filingDate"] = to_datetime(filings["filingDate"]).dt.date filings = filings.sort_values(by=["reportDate", "filingDate"], ascending=False) + if query.start_date: + filings = filings[filings["reportDate"] >= query.start_date] + if query.end_date: + filings = filings[filings["reportDate"] <= query.end_date] base_url = f"https://www.sec.gov/Archives/edgar/data/{query.cik}/" filings["primaryDocumentUrl"] = ( base_url @@ -282,7 +332,11 @@ def transform_data( base_url + filings["accessionNumber"] + "-index.htm" ) if query.form_type: - filings = filings[filings["form"] == query.form_type.replace("_", " ")] + form_types = query.form_type.replace("_", " ").replace(",", "|") + + filings = filings[ + filings.form.str.contains(form_types, case=False, regex=True, na=False) + ] if query.limit: filings = filings.head(query.limit) if query.limit != 0 else filings diff --git a/openbb_platform/providers/sec/openbb_sec/utils/definitions.py b/openbb_platform/providers/sec/openbb_sec/utils/definitions.py index fe6adf33264e..ac35ae712061 100644 --- a/openbb_platform/providers/sec/openbb_sec/utils/definitions.py +++ b/openbb_platform/providers/sec/openbb_sec/utils/definitions.py @@ -1,5 +1,7 @@ """SEC Definitions and Models.""" +# pylint: disable=too-many-lines + from typing import Dict, Literal QUARTERS = Literal[1, 2, 3, 4] @@ -383,6 +385,371 @@ "X-17A-5", ] +FORM_LIST = [ + "1", + "1-A", + "1-A_POS", + "1-A-W", + "1-E", + "1-E_AD", + "1-K", + "1-SA", + "1-U", + "1-Z", + "1-Z-W", + "10-12B", + "10-12G", + "10-D", + "10-K", + "10-KT", + "10-Q", + "10-QT", + "11-K", + "11-KT", + "13F-HR", + "13F-NT", + "13FCONP", + "144", + "15-12B", + "15-12G", + "15-15D", + "15F-12B", + "15F-12G", + "15F-15D", + "18-12B", + "18-K", + "19B-4E", + "2-A", + "2-AF", + "2-E", + "20-F", + "20FR12B", + "20FR12G", + "24F-2NT", + "25", + "25-NSE", + "253G1", + "253G2", + "253G3", + "253G4", + "3", + "305B2", + "34-12H", + "4", + "40-17F1", + "40-17F2", + "40-17G", + "40-17GCS", + "40-202A", + "40-203A", + "40-206A", + "40-24B2", + "40-33", + "40-6B", + "40-8B25", + "40-8F-2", + "40-APP", + "40-F", + "40-OIP", + "40FR12B", + "40FR12G", + "424A", + "424B1", + "424B2", + "424B3", + "424B4", + "424B5", + "424B7", + "424B8", + "424H", + "425", + "485APOS", + "485BPOS", + "485BXT", + "486APOS", + "486BPOS", + "486BXT", + "487", + "497", + "497AD", + "497H2", + "497J", + "497K", + "497VPI", + "497VPU", + "5", + "6-K", + "6B_NTC", + "6B_ORDR", + "8-A12B", + "8-A12G", + "8-K", + "8-K12B", + "8-K12G3", + "8-K15D5", + "8-M", + "8F-2_NTC", + "8F-2_ORDR", + "9-M", + "ABS-15G", + "ABS-EE", + "ADN-MTL", + "ADV-E", + "ADV-H-C", + "ADV-H-T", + "ADV-NR", + "ANNLRPT", + "APP_NTC", + "APP_ORDR", + "APP_WD", + "APP_WDG", + "ARS", + "ATS-N", + "ATS-N-C", + "ATS-N/UA", + "AW", + "AW_WD", + "C", + "C-AR", + "C-AR-W", + "C-TR", + "C-TR-W", + "C-U", + "C-U-W", + "C-W", + "CB", + "CERT", + "CERTARCA", + "CERTBATS", + "CERTCBO", + "CERTNAS", + "CERTNYS", + "CERTPAC", + "CFPORTAL", + "CFPORTAL-W", + "CORRESP", + "CT_ORDER", + "D", + "DEF_14A", + "DEF_14C", + "DEFA14A", + "DEFA14C", + "DEFC14A", + "DEFC14C", + "DEFM14A", + "DEFM14C", + "DEFN14A", + "DEFR14A", + "DEFR14C", + "DEL_AM", + "DFAN14A", + "DFRN14A", + "DOS", + "DOSLTR", + "DRS", + "DRSLTR", + "DSTRBRPT", + "EFFECT", + "F-1", + "F-10", + "F-10EF", + "F-10POS", + "F-1MEF", + "F-3", + "F-3ASR", + "F-3D", + "F-3DPOS", + "F-3MEF", + "F-4", + "F-4_POS", + "F-4MEF", + "F-6", + "F-6_POS", + "F-6EF", + "F-7", + "F-7_POS", + "F-8", + "F-8_POS", + "F-80", + "F-80POS", + "F-9", + "F-9_POS", + "F-N", + "F-X", + "FOCUSN", + "FWP", + "G-405", + "G-405N", + "G-FIN", + "G-FINW", + "IRANNOTICE", + "MA", + "MA-A", + "MA-I", + "MA-W", + "MSD", + "MSDCO", + "MSDW", + "N-1", + "N-14", + "N-14_8C", + "N-14MEF", + "N-18F1", + "N-1A", + "N-2", + "N-2_POSASR", + "N-23C-2", + "N-23C3A", + "N-23C3B", + "N-23C3C", + "N-2ASR", + "N-2MEF", + "N-30B-2", + "N-30D", + "N-4", + "N-5", + "N-54A", + "N-54C", + "N-6", + "N-6F", + "N-8A", + "N-8B-2", + "N-8F", + "N-8F_NTC", + "N-8F_ORDR", + "N-CEN", + "N-CR", + "N-CSR", + "N-CSRS", + "N-MFP", + "N-MFP1", + "N-MFP2", + "N-PX", + "N-Q", + "N-VP", + "N-VPFS", + "NO_ACT", + "NPORT-EX", + "NPORT-NP", + "NPORT-P", + "NRSRO-CE", + "NRSRO-UPD", + "NSAR-A", + "NSAR-AT", + "NSAR-B", + "NSAR-BT", + "NSAR-U", + "NT_10-D", + "NT_10-K", + "NT_10-Q", + "NT_11-K", + "NT_20-F", + "NT_N-CEN", + "NT_N-MFP", + "NT_N-MFP1", + "NT_N-MFP2", + "NT_NPORT-EX", + "NT_NPORT-P", + "NT-NCEN", + "NT-NCSR", + "NT-NSAR", + "NTFNCEN", + "NTFNCSR", + "NTFNSAR", + "NTN_10D", + "NTN_10K", + "NTN_10Q", + "NTN_20F", + "OIP_NTC", + "OIP_ORDR", + "POS_8C", + "POS_AM", + "POS_AMI", + "POS_EX", + "POS462B", + "POS462C", + "POSASR", + "PRE_14A", + "PRE_14C", + "PREC14A", + "PREC14C", + "PREM14A", + "PREM14C", + "PREN14A", + "PRER14A", + "PRER14C", + "PRRN14A", + "PX14A6G", + "PX14A6N", + "QRTLYRPT", + "QUALIF", + "REG-NR", + "REVOKED", + "RW", + "RW_WD", + "S-1", + "S-11", + "S-11MEF", + "S-1MEF", + "S-20", + "S-3", + "S-3ASR", + "S-3D", + "S-3DPOS", + "S-3MEF", + "S-4", + "S-4_POS", + "S-4EF", + "S-4MEF", + "S-6", + "S-8", + "S-8_POS", + "S-B", + "S-BMEF", + "SBSE", + "SBSE-A", + "SBSE-BD", + "SBSE-C", + "SBSE-W", + "SC_13D", + "SC_13E1", + "SC_13E3", + "SC_13G", + "SC_14D9", + "SC_14F1", + "SC_14N", + "SC_TO-C", + "SC_TO-I", + "SC_TO-T", + "SC13E4F", + "SC14D1F", + "SC14D9C", + "SC14D9F", + "SD", + "SDR", + "SE", + "SEC_ACTION", + "SEC_STAFF_ACTION", + "SEC_STAFF_LETTER", + "SF-1", + "SF-3", + "SL", + "SP_15D2", + "STOP_ORDER", + "SUPPL", + "T-3", + "TA-1", + "TA-2", + "TA-W", + "TACO", + "TH", + "TTW", + "UNDER", + "UPLOAD", + "WDL-REQ", + "X-17A-5", +] + TAXONOMIES = Literal["us-gaap", "dei", "ifrs-full", "srt"] FACTS = [