Skip to content

Commit 593e576

Browse files
committed
Sync client-python with OpenAPI spec
1 parent 7179fdc commit 593e576

2 files changed

Lines changed: 385 additions & 0 deletions

File tree

massive/rest/models/financials.py

Lines changed: 254 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -922,6 +922,60 @@ def from_dict(d):
922922
)
923923

924924

925+
@modelclass
926+
@dataclass
927+
class Filing13F:
928+
"""SEC Form 13F filings data showing institutional investment manager holdings."""
929+
930+
accession_number: Optional[str] = None
931+
cusip: Optional[str] = None
932+
file_number: Optional[str] = None
933+
filer_cik: Optional[str] = None
934+
filing_date: Optional[str] = None
935+
filing_url: Optional[str] = None
936+
film_number: Optional[str] = None
937+
form_type: Optional[str] = None
938+
investment_discretion: Optional[str] = None
939+
issuer_name: Optional[str] = None
940+
market_value: Optional[int] = None
941+
other_managers: Optional[List[str]] = None
942+
period: Optional[str] = None
943+
put_call: Optional[str] = None
944+
shares_or_principal_amount: Optional[int] = None
945+
shares_or_principal_type: Optional[str] = None
946+
title_of_class: Optional[str] = None
947+
voting_authority_none: Optional[int] = None
948+
voting_authority_shared: Optional[int] = None
949+
voting_authority_sole: Optional[int] = None
950+
951+
@staticmethod
952+
def from_dict(d: Optional[Dict[str, Any]]) -> "Filing13F":
953+
if not d:
954+
return Filing13F()
955+
return Filing13F(
956+
accession_number=d.get("accession_number"),
957+
cusip=d.get("cusip"),
958+
file_number=d.get("file_number"),
959+
filer_cik=d.get("filer_cik"),
960+
filing_date=d.get("filing_date"),
961+
filing_url=d.get("filing_url"),
962+
film_number=d.get("film_number"),
963+
form_type=d.get("form_type"),
964+
investment_discretion=d.get("investment_discretion"),
965+
issuer_name=d.get("issuer_name"),
966+
market_value=d.get("market_value"),
967+
other_managers=d.get("other_managers"),
968+
period=d.get("period"),
969+
put_call=d.get("put_call"),
970+
shares_or_principal_amount=d.get("shares_or_principal_amount"),
971+
shares_or_principal_type=d.get("shares_or_principal_type"),
972+
title_of_class=d.get("title_of_class"),
973+
voting_authority_none=d.get("voting_authority_none"),
974+
voting_authority_shared=d.get("voting_authority_shared"),
975+
voting_authority_sole=d.get("voting_authority_sole"),
976+
)
977+
978+
925979
@modelclass
926980
class FilingSection:
927981
"""SEC document text section from a 10-K/10-Q (raw text content)."""
@@ -947,6 +1001,206 @@ def from_dict(d):
9471001
)
9481002

9491003

1004+
@modelclass
1005+
@dataclass
1006+
class FilingFootnote:
1007+
"""Footnote from SEC Form 3/4 filings."""
1008+
1009+
id: Optional[str] = None
1010+
description: Optional[str] = None
1011+
1012+
@staticmethod
1013+
def from_dict(d: Optional[Dict[str, Any]]) -> "FilingFootnote":
1014+
if not d:
1015+
return FilingFootnote()
1016+
return FilingFootnote(
1017+
id=d.get("id"),
1018+
description=d.get("description"),
1019+
)
1020+
1021+
1022+
@modelclass
1023+
@dataclass
1024+
class FilingForm3:
1025+
"""SEC Form 3 filings reporting initial statements of beneficial ownership of securities.
1026+
Filed by corporate insiders (directors, officers, and 10%+ shareholders) when they first acquire a position.
1027+
"""
1028+
1029+
accession_number: Optional[str] = None
1030+
aff_10b5_one: Optional[bool] = None
1031+
date_of_original_submission: Optional[str] = None
1032+
direct_or_indirect: Optional[str] = None
1033+
exercise_date: Optional[str] = None
1034+
exercise_price: Optional[float] = None
1035+
filing_date: Optional[str] = None
1036+
filing_url: Optional[str] = None
1037+
footnotes: Optional[List[FilingFootnote]] = None
1038+
form_type: Optional[str] = None
1039+
is_director: Optional[bool] = None
1040+
is_officer: Optional[bool] = None
1041+
is_other: Optional[bool] = None
1042+
is_ten_percent_owner: Optional[bool] = None
1043+
issuer_cik: Optional[str] = None
1044+
issuer_name: Optional[str] = None
1045+
nature_of_ownership: Optional[str] = None
1046+
not_subject_to_section_16: Optional[bool] = None
1047+
officer_title: Optional[str] = None
1048+
owner_cik: Optional[str] = None
1049+
owner_name: Optional[str] = None
1050+
period_of_report: Optional[str] = None
1051+
remarks: Optional[str] = None
1052+
security_title: Optional[str] = None
1053+
security_type: Optional[str] = None
1054+
shares_owned: Optional[float] = None
1055+
tickers: Optional[List[str]] = None
1056+
underlying_security_shares: Optional[float] = None
1057+
underlying_security_title: Optional[str] = None
1058+
1059+
@staticmethod
1060+
def from_dict(d: Optional[Dict[str, Any]]) -> "FilingForm3":
1061+
if not d:
1062+
return FilingForm3()
1063+
footnotes = d.get("footnotes")
1064+
return FilingForm3(
1065+
accession_number=d.get("accession_number"),
1066+
aff_10b5_one=d.get("aff_10b5_one"),
1067+
date_of_original_submission=d.get("date_of_original_submission"),
1068+
direct_or_indirect=d.get("direct_or_indirect"),
1069+
exercise_date=d.get("exercise_date"),
1070+
exercise_price=d.get("exercise_price"),
1071+
filing_date=d.get("filing_date"),
1072+
filing_url=d.get("filing_url"),
1073+
footnotes=(
1074+
[FilingFootnote.from_dict(f) for f in footnotes]
1075+
if footnotes is not None
1076+
else None
1077+
),
1078+
form_type=d.get("form_type"),
1079+
is_director=d.get("is_director"),
1080+
is_officer=d.get("is_officer"),
1081+
is_other=d.get("is_other"),
1082+
is_ten_percent_owner=d.get("is_ten_percent_owner"),
1083+
issuer_cik=d.get("issuer_cik"),
1084+
issuer_name=d.get("issuer_name"),
1085+
nature_of_ownership=d.get("nature_of_ownership"),
1086+
not_subject_to_section_16=d.get("not_subject_to_section_16"),
1087+
officer_title=d.get("officer_title"),
1088+
owner_cik=d.get("owner_cik"),
1089+
owner_name=d.get("owner_name"),
1090+
period_of_report=d.get("period_of_report"),
1091+
remarks=d.get("remarks"),
1092+
security_title=d.get("security_title"),
1093+
security_type=d.get("security_type"),
1094+
shares_owned=d.get("shares_owned"),
1095+
tickers=d.get("tickers"),
1096+
underlying_security_shares=d.get("underlying_security_shares"),
1097+
underlying_security_title=d.get("underlying_security_title"),
1098+
)
1099+
1100+
1101+
@modelclass
1102+
@dataclass
1103+
class FilingForm4:
1104+
"""SEC Form 4 filings reporting changes in beneficial ownership of securities.
1105+
Filed by corporate insiders (directors, officers, and 10%+ shareholders) within two business days of a transaction.
1106+
"""
1107+
1108+
accession_number: Optional[str] = None
1109+
aff_10b5_one: Optional[bool] = None
1110+
date_of_original_submission: Optional[str] = None
1111+
deemed_execution_date: Optional[str] = None
1112+
direct_or_indirect: Optional[str] = None
1113+
equity_swap_involved: Optional[bool] = None
1114+
exercise_date: Optional[str] = None
1115+
exercise_price: Optional[float] = None
1116+
expiration_date: Optional[str] = None
1117+
filing_date: Optional[str] = None
1118+
filing_url: Optional[str] = None
1119+
footnotes: Optional[List[FilingFootnote]] = None
1120+
form_type: Optional[str] = None
1121+
is_director: Optional[bool] = None
1122+
is_officer: Optional[bool] = None
1123+
is_other: Optional[bool] = None
1124+
is_ten_percent_owner: Optional[bool] = None
1125+
issuer_cik: Optional[str] = None
1126+
issuer_name: Optional[str] = None
1127+
nature_of_ownership: Optional[str] = None
1128+
not_subject_to_section_16: Optional[bool] = None
1129+
officer_title: Optional[str] = None
1130+
owner_cik: Optional[str] = None
1131+
owner_name: Optional[str] = None
1132+
period_of_report: Optional[str] = None
1133+
record_type: Optional[str] = None
1134+
remarks: Optional[str] = None
1135+
security_title: Optional[str] = None
1136+
security_type: Optional[str] = None
1137+
shares_owned_following_transaction: Optional[float] = None
1138+
tickers: Optional[List[str]] = None
1139+
transaction_acquired_disposed: Optional[str] = None
1140+
transaction_code: Optional[str] = None
1141+
transaction_date: Optional[str] = None
1142+
transaction_price_per_share: Optional[float] = None
1143+
transaction_shares: Optional[float] = None
1144+
transaction_timeliness: Optional[str] = None
1145+
transaction_value: Optional[float] = None
1146+
underlying_security_shares: Optional[float] = None
1147+
underlying_security_title: Optional[str] = None
1148+
1149+
@staticmethod
1150+
def from_dict(d: Optional[Dict[str, Any]]) -> "FilingForm4":
1151+
if not d:
1152+
return FilingForm4()
1153+
footnotes = d.get("footnotes")
1154+
return FilingForm4(
1155+
accession_number=d.get("accession_number"),
1156+
aff_10b5_one=d.get("aff_10b5_one"),
1157+
date_of_original_submission=d.get("date_of_original_submission"),
1158+
deemed_execution_date=d.get("deemed_execution_date"),
1159+
direct_or_indirect=d.get("direct_or_indirect"),
1160+
equity_swap_involved=d.get("equity_swap_involved"),
1161+
exercise_date=d.get("exercise_date"),
1162+
exercise_price=d.get("exercise_price"),
1163+
expiration_date=d.get("expiration_date"),
1164+
filing_date=d.get("filing_date"),
1165+
filing_url=d.get("filing_url"),
1166+
footnotes=(
1167+
[FilingFootnote.from_dict(f) for f in footnotes]
1168+
if footnotes is not None
1169+
else None
1170+
),
1171+
form_type=d.get("form_type"),
1172+
is_director=d.get("is_director"),
1173+
is_officer=d.get("is_officer"),
1174+
is_other=d.get("is_other"),
1175+
is_ten_percent_owner=d.get("is_ten_percent_owner"),
1176+
issuer_cik=d.get("issuer_cik"),
1177+
issuer_name=d.get("issuer_name"),
1178+
nature_of_ownership=d.get("nature_of_ownership"),
1179+
not_subject_to_section_16=d.get("not_subject_to_section_16"),
1180+
officer_title=d.get("officer_title"),
1181+
owner_cik=d.get("owner_cik"),
1182+
owner_name=d.get("owner_name"),
1183+
period_of_report=d.get("period_of_report"),
1184+
record_type=d.get("record_type"),
1185+
remarks=d.get("remarks"),
1186+
security_title=d.get("security_title"),
1187+
security_type=d.get("security_type"),
1188+
shares_owned_following_transaction=d.get(
1189+
"shares_owned_following_transaction"
1190+
),
1191+
tickers=d.get("tickers"),
1192+
transaction_acquired_disposed=d.get("transaction_acquired_disposed"),
1193+
transaction_code=d.get("transaction_code"),
1194+
transaction_date=d.get("transaction_date"),
1195+
transaction_price_per_share=d.get("transaction_price_per_share"),
1196+
transaction_shares=d.get("transaction_shares"),
1197+
transaction_timeliness=d.get("transaction_timeliness"),
1198+
transaction_value=d.get("transaction_value"),
1199+
underlying_security_shares=d.get("underlying_security_shares"),
1200+
underlying_security_title=d.get("underlying_security_title"),
1201+
)
1202+
1203+
9501204
@modelclass
9511205
class Filing8K:
9521206
"""Parsed 8-K filing with item-level text content."""

0 commit comments

Comments
 (0)