Skip to content

feat(insider-trading)!: make FMP-omittable members optional - #391

Merged
benbenbang merged 1 commit into
mainfrom
feat/368-ownership-nullable
Sep 30, 2026
Merged

benbenbang merged 1 commit into
mainfrom
feat/368-ownership-nullable

Conversation

@benbenbang

Copy link
Copy Markdown
Member

Members that FMP can omit from the insider-trading and institutional-ownership
feeds are now optional across the Rust models, Python bindings, and Go SDK, so
callers must handle their absence.

  • InsiderTrade transaction_type, securities_owned, and direct_or_indirect
    now decode a null or empty value to None; a whitespace-only transaction type
    is still rejected.
  • BeneficialOwnershipAcquisition cusip, citizenship_or_place_of_organization,
    and shared_voting_power decode null to None.
  • InstitutionalHolding symbol decodes null to None.
  • HolderIndustryBreakdown industry_title, change_in_weight_percentage, and
    performance_percentage decode null to None, while an empty industry title
    stays "".
  • Contract tests now take an explicit nullable-member list rather than treating
    every member as required and non-null, and re-encode these members as null.

BREAKING CHANGE: InsiderTrade, BeneficialOwnershipAcquisition, InstitutionalHolding and HolderIndustryBreakdown members FMP can omit are now optional (Option / pointer / Optional); handle None.

Members that FMP can omit from the insider-trading and institutional-ownership
feeds are now optional across the Rust models, Python bindings, and Go SDK, so
callers must handle their absence.

* InsiderTrade `transaction_type`, `securities_owned`, and `direct_or_indirect`
  now decode a null or empty value to None; a whitespace-only transaction type
  is still rejected.
* BeneficialOwnershipAcquisition `cusip`, `citizenship_or_place_of_organization`,
  and `shared_voting_power` decode null to None.
* InstitutionalHolding `symbol` decodes null to None.
* HolderIndustryBreakdown `industry_title`, `change_in_weight_percentage`, and
  `performance_percentage` decode null to None, while an empty industry title
  stays "".
* Contract tests now take an explicit nullable-member list rather than treating
  every member as required and non-null, and re-encode these members as null.

BREAKING CHANGE: InsiderTrade, BeneficialOwnershipAcquisition, InstitutionalHolding and HolderIndustryBreakdown members FMP can omit are now optional (Option / pointer / Optional); handle None.
@benbenbang
benbenbang enabled auto-merge (rebase) September 30, 2026 13:33
@github-actions github-actions Bot added the enhancement New feature or request label Sep 30, 2026
@benbenbang
benbenbang merged commit 9c96061 into main Sep 30, 2026
9 checks passed
@benbenbang
benbenbang deleted the feat/368-ownership-nullable branch September 30, 2026 13:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant