publicdotcom-cli 1.2.2__tar.gz → 1.3.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (213) hide show
  1. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/CHANGELOG.md +39 -0
  2. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/PKG-INFO +41 -1
  3. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/README.md +40 -0
  4. publicdotcom_cli-1.3.1/examples/order.single-leg.tax-lot-matching.json +24 -0
  5. publicdotcom_cli-1.3.1/examples/strategy-quote.request.json +22 -0
  6. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/pyproject.toml +1 -1
  7. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/__init__.py +1 -1
  8. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/api/list_accounts/get_accounts.py +0 -4
  9. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/api/market_data/get_bars_v2.py +20 -0
  10. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/api/market_data/get_bars_v2_with_aggregation.py +22 -0
  11. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/api/option_details/get_strategy_quote.py +194 -0
  12. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/api/order_placement/preflight_multi_leg.py +12 -0
  13. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/api/tax_lot_selling/__init__.py +1 -0
  14. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/api/tax_lot_selling/get_unrealized_tax_lots.py +177 -0
  15. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/api/tax_lot_selling/get_unrealized_tax_lots_csv.py +171 -0
  16. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/api/tax_lot_selling/get_unrealized_tax_lots_for_symbol.py +210 -0
  17. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/__init__.py +124 -0
  18. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/bars_response.py +32 -0
  19. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/models/com_hellopublic_core_dto_base_64_file.py +70 -0
  20. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/models/com_hellopublic_hstier_2_service_taxlots_api_instrument_specific_tax_lot_details.py +61 -0
  21. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/models/com_hellopublic_hstier_2_service_taxlots_api_option_specific_tax_lot_details.py +100 -0
  22. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/models/com_hellopublic_hstier_2_service_taxlots_api_option_specific_tax_lot_details_option_type.py +9 -0
  23. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/models/com_hellopublic_hstier_2_service_taxlots_api_order_reference.py +70 -0
  24. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/models/com_hellopublic_hstier_2_service_taxlots_api_out_of_date_status.py +121 -0
  25. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/models/com_hellopublic_hstier_2_service_taxlots_api_out_of_date_status_description.py +70 -0
  26. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/models/com_hellopublic_hstier_2_service_taxlots_api_out_of_date_status_type.py +12 -0
  27. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/models/com_hellopublic_hstier_2_service_taxlots_api_unrealized_lot.py +201 -0
  28. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/models/com_hellopublic_hstier_2_service_taxlots_api_unrealized_lot_summary.py +220 -0
  29. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/models/com_hellopublic_hstier_2_service_taxlots_api_unrealized_lots_detail_response.py +138 -0
  30. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/models/com_hellopublic_hstier_2_service_taxlots_api_unrealized_lots_summary_response.py +123 -0
  31. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/models/com_hellopublic_trading_core_quote_bond_quote_detail.py +99 -0
  32. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/models/com_hellopublic_trading_core_quote_quote_specific_detail.py +61 -0
  33. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/models/com_hellopublic_trading_core_quote_signed_quote.py +246 -0
  34. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/models/com_hellopublic_trading_core_quote_signed_quote_uptick_rule.py +9 -0
  35. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_account_account_settings_account_type.py +1 -0
  36. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_history_gateway_history_response_page.py +2 -3
  37. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_history_gateway_history_transaction.py +1 -2
  38. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_marketdata_quote_bond_details.py +125 -0
  39. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_marketdata_quote_gateway_option_chain_request.py +1 -2
  40. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_marketdata_quote_gateway_option_expirations_response.py +1 -2
  41. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_marketdata_quote_gateway_quote.py +28 -4
  42. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_api_multileg_order_request.py +11 -0
  43. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_api_order_request.py +49 -0
  44. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_api_order_request_equity_market_session.py +1 -0
  45. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_gateway_order.py +2 -3
  46. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_gateway_tax_lot_matching_instruction.py +82 -0
  47. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_order_expiration.py +1 -2
  48. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_portfolio_gain.py +1 -2
  49. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_portfolio_gateway_available_to_withdraw_type_0.py +77 -0
  50. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_portfolio_gateway_cost_basis.py +1 -2
  51. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_portfolio_gateway_portfolio_account_v2.py +99 -0
  52. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_portfolio_gateway_portfolio_account_v2_account_type.py +1 -0
  53. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_portfolio_gateway_portfolio_position.py +1 -2
  54. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_portfolio_price.py +1 -2
  55. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_preflight_gateway_option_details.py +1 -2
  56. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_preflight_preflight_multi_leg_request.py +12 -0
  57. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_preflight_preflight_single_leg_request.py +49 -0
  58. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_preflight_preflight_single_leg_request_equity_market_session.py +1 -0
  59. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/models/com_matadorapp_shared_customerordergateway_dto_order_leg_type_0.py +111 -0
  60. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/models/com_matadorapp_shared_customerordergateway_dto_order_leg_type_0_open_close_indicator.py +9 -0
  61. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/models/com_matadorapp_shared_customerordergateway_dto_order_leg_type_0_side.py +9 -0
  62. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/models/com_matadorapp_shared_customerordergateway_dto_strategy_leg_dto.py +145 -0
  63. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/models/com_matadorapp_shared_customerordergateway_dto_strategy_leg_dto_open_close_indicator.py +9 -0
  64. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/models/com_matadorapp_shared_customerordergateway_dto_strategy_leg_dto_side.py +9 -0
  65. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/models/com_matadorapp_shared_customerordergateway_dto_strategy_leg_instrument_dto.py +119 -0
  66. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/models/com_matadorapp_shared_customerordergateway_dto_strategy_leg_instrument_dto_type.py +9 -0
  67. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/models/com_matadorapp_shared_customerordergateway_dto_strategy_quote_dto.py +186 -0
  68. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/models/com_matadorapp_shared_customerordergateway_dto_strategy_quote_dto_debit_credit.py +10 -0
  69. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/models/com_matadorapp_shared_customerordergateway_dto_strategy_quote_request.py +157 -0
  70. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/get_bars_v2_period.py +2 -0
  71. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/models/get_bars_v2_trading_session_toggle.py +10 -0
  72. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/get_bars_v2_with_aggregation_period.py +2 -0
  73. publicdotcom_cli-1.3.1/src/publicdotcom_cli/_generated/models/get_bars_v2_with_aggregation_trading_session_toggle.py +10 -0
  74. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/cli.py +87 -0
  75. publicdotcom_cli-1.3.1/tests/test_cli.py +27 -0
  76. publicdotcom_cli-1.3.1/tests/test_generated_enums.py +30 -0
  77. publicdotcom_cli-1.3.1/tests/test_output.py +33 -0
  78. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/uv.lock +1 -1
  79. publicdotcom_cli-1.2.2/tests/test_cli.py +0 -11
  80. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/.gitattributes +0 -0
  81. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/.github/workflows/ci.yml +0 -0
  82. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/.github/workflows/release.yml +0 -0
  83. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/.gitignore +0 -0
  84. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/LICENSE +0 -0
  85. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/examples/order.single-leg.cash-only.json +0 -0
  86. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/examples/order.single-leg.market-buy.json +0 -0
  87. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/scripts/generate_client.py +0 -0
  88. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/__main__.py +0 -0
  89. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/__init__.py +0 -0
  90. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/api/__init__.py +0 -0
  91. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/api/account_details/__init__.py +0 -0
  92. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/api/account_details/get_account_portfolio_v2.py +0 -0
  93. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/api/account_details/get_history.py +0 -0
  94. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/api/authorization/__init__.py +0 -0
  95. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/api/authorization/create_personal_access_token.py +0 -0
  96. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/api/instrument_details/__init__.py +0 -0
  97. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/api/instrument_details/get_all_instruments.py +0 -0
  98. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/api/instrument_details/get_instrument.py +0 -0
  99. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/api/list_accounts/__init__.py +0 -0
  100. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/api/market_data/__init__.py +0 -0
  101. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/api/market_data/get_option_chain.py +0 -0
  102. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/api/market_data/get_option_expirations.py +0 -0
  103. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/api/market_data/get_quotes.py +0 -0
  104. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/api/option_details/__init__.py +0 -0
  105. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/api/option_details/get_option_greeks.py +0 -0
  106. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/api/order_placement/__init__.py +0 -0
  107. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/api/order_placement/cancel_order.py +0 -0
  108. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/api/order_placement/get_order.py +0 -0
  109. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/api/order_placement/place_multileg_order.py +0 -0
  110. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/api/order_placement/place_order.py +0 -0
  111. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/api/order_placement/preflight_single_leg.py +0 -0
  112. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/api/order_placement/replace_order.py +0 -0
  113. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/client.py +0 -0
  114. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/errors.py +0 -0
  115. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/bar.py +0 -0
  116. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_holdingsystem_core_types_option_price_increment.py +0 -0
  117. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapiauthservice_api_personal_create_access_token_request.py +0 -0
  118. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapiauthservice_api_personal_create_access_token_response.py +0 -0
  119. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapiauthservice_domain_error_error_body.py +0 -0
  120. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_account_account_settings.py +0 -0
  121. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_account_account_settings_brokerage_account_type.py +0 -0
  122. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_account_account_settings_options_level.py +0 -0
  123. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_account_account_settings_response.py +0 -0
  124. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_account_account_settings_trade_permissions.py +0 -0
  125. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_history_gateway_history_transaction_direction.py +0 -0
  126. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_history_gateway_history_transaction_security_type.py +0 -0
  127. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_history_gateway_history_transaction_side.py +0 -0
  128. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_history_gateway_history_transaction_sub_type.py +0 -0
  129. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_history_gateway_history_transaction_type.py +0 -0
  130. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_marketdata_quote_gateway_option_chain_response.py +0 -0
  131. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_marketdata_quote_gateway_option_expirations_request.py +0 -0
  132. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_marketdata_quote_gateway_quote_outcome.py +0 -0
  133. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_marketdata_quote_gateway_quote_request.py +0 -0
  134. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_marketdata_quote_gateway_quote_response.py +0 -0
  135. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_marketdata_quote_one_day_change.py +0 -0
  136. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_marketdata_quote_option_details.py +0 -0
  137. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_options_greek_response.py +0 -0
  138. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_options_greeks_response.py +0 -0
  139. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_options_option_greeks_type_0.py +0 -0
  140. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_api_cancel_replace_order_request.py +0 -0
  141. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_api_cancel_replace_order_request_order_type.py +0 -0
  142. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_api_instrument_dto.py +0 -0
  143. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_api_instrument_dto_fractional_trading.py +0 -0
  144. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_api_instrument_dto_option_spread_trading.py +0 -0
  145. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_api_instrument_dto_option_trading.py +0 -0
  146. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_api_instrument_dto_shorting_availability.py +0 -0
  147. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_api_instrument_dto_trading.py +0 -0
  148. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_api_instrument_response.py +0 -0
  149. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_api_multileg_order_request_type.py +0 -0
  150. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_api_order_request_open_close_indicator.py +0 -0
  151. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_api_order_request_order_side.py +0 -0
  152. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_api_order_request_order_type.py +0 -0
  153. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_api_order_result.py +0 -0
  154. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_gateway_leg_instrument.py +0 -0
  155. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_gateway_leg_instrument_type.py +0 -0
  156. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_gateway_order_instrument.py +0 -0
  157. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_gateway_order_instrument_type.py +0 -0
  158. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_gateway_order_leg.py +0 -0
  159. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_gateway_order_leg_open_close_indicator.py +0 -0
  160. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_gateway_order_leg_side.py +0 -0
  161. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_gateway_order_open_close_indicator.py +0 -0
  162. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_gateway_order_side.py +0 -0
  163. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_gateway_order_status.py +0 -0
  164. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_gateway_order_type.py +0 -0
  165. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_gateway_short_selling.py +0 -0
  166. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_gateway_short_selling_availability.py +0 -0
  167. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_gateway_short_selling_uptick_rule.py +0 -0
  168. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_instrumentdetails_api_instrument_details.py +0 -0
  169. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_instrumentdetails_api_instrument_details_bond.py +0 -0
  170. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_instrumentdetails_api_instrument_details_crypto.py +0 -0
  171. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_order_order_expiration_time_in_force.py +0 -0
  172. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_portfolio_gateway_buying_power.py +0 -0
  173. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_portfolio_gateway_portfolio_equity_v2.py +0 -0
  174. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_portfolio_gateway_portfolio_equity_v2_type.py +0 -0
  175. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_portfolio_gateway_portfolio_instrument.py +0 -0
  176. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_portfolio_gateway_portfolio_instrument_type.py +0 -0
  177. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_portfolio_gateway_strategy.py +0 -0
  178. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_portfolio_gateway_strategy_leg.py +0 -0
  179. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_preflight_gateway_margin_impact.py +0 -0
  180. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_preflight_gateway_margin_requirement.py +0 -0
  181. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_preflight_gateway_option_details_type.py +0 -0
  182. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_preflight_gateway_option_rebate.py +0 -0
  183. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_preflight_gateway_price_increment.py +0 -0
  184. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_preflight_gateway_regulatory_fees.py +0 -0
  185. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_preflight_preflight_leg_response.py +0 -0
  186. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_preflight_preflight_leg_response_open_close_indicator.py +0 -0
  187. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_preflight_preflight_leg_response_side.py +0 -0
  188. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_preflight_preflight_multi_leg_request_order_type.py +0 -0
  189. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_preflight_preflight_multi_leg_response.py +0 -0
  190. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_preflight_preflight_single_leg_request_open_close_indicator.py +0 -0
  191. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_preflight_preflight_single_leg_request_order_side.py +0 -0
  192. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_preflight_preflight_single_leg_request_order_type.py +0 -0
  193. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/com_hellopublic_userapigateway_api_rest_preflight_preflight_single_leg_response.py +0 -0
  194. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/get_all_instruments_fractional_trading_filter_item.py +0 -0
  195. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/get_all_instruments_option_spread_trading_filter_item.py +0 -0
  196. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/get_all_instruments_option_trading_filter_item.py +0 -0
  197. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/get_all_instruments_trading_filter_item.py +0 -0
  198. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/get_all_instruments_type_filter_item.py +0 -0
  199. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/get_bars_v2_type.py +0 -0
  200. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/get_bars_v2_with_aggregation_aggregation.py +0 -0
  201. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/get_bars_v2_with_aggregation_type.py +0 -0
  202. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/get_instrument_type.py +0 -0
  203. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/last_session_close.py +0 -0
  204. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/market_session_bars.py +0 -0
  205. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/models/regular_session_closing_data.py +0 -0
  206. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/_generated/types.py +0 -0
  207. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/client.py +0 -0
  208. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/config.py +0 -0
  209. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/output.py +0 -0
  210. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/src/publicdotcom_cli/payloads.py +0 -0
  211. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/tests/test_client.py +0 -0
  212. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/tests/test_config.py +0 -0
  213. {publicdotcom_cli-1.2.2 → publicdotcom_cli-1.3.1}/tests/test_payloads.py +0 -0
@@ -5,6 +5,45 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.3.1] - 2026-07-24
9
+
10
+ ### Changed
11
+ - Regenerated `_generated/` API client from the updated `spec.yaml`:
12
+ - `ENTITY` added to the `accountType` enums on `GatewayPortfolioAccountV2` and
13
+ `AccountSettings`. Additive and non-breaking — the CLI treats `accountType`
14
+ as an opaque string (`public accounts` renders it in a table, `public
15
+ portfolio` emits raw JSON), so entity accounts already display correctly.
16
+ - The three `taxlots` endpoints now document `trading.read` (was `portfolio`)
17
+ as their required scope, matching the corrected spec. Behaviour is
18
+ unchanged; only the stated scope was wrong.
19
+
20
+ ### Added
21
+ - `tests/test_generated_enums.py` asserting both regenerated `accountType`
22
+ enums parse `ENTITY` and match the spec's full member set.
23
+ - `tests/test_output.py` covering `print_accounts` rendering of an `ENTITY`
24
+ account, guarding against a future regression to strict enum parsing.
25
+
26
+ ## [1.3.0] - 2026-07-20
27
+
28
+ ### Added
29
+ - `public taxlots` command group covering the new unrealized tax-lot endpoints:
30
+ `taxlots list` (`GET /userapigateway/trading/{accountId}/taxlots/unrealized`),
31
+ `taxlots symbol SYMBOL [--price]`
32
+ (`GET /userapigateway/trading/{accountId}/taxlots/unrealized/{symbol}`), and
33
+ `taxlots csv [--output PATH]`
34
+ (`GET /userapigateway/trading/{accountId}/taxlots/csv/unrealized`), which can
35
+ decode the returned base64 CSV to a file.
36
+ - `public options strategy-quote --file FILE` command covering
37
+ `POST /userapigateway/option-details/{accountId}/strategy-details/quote`.
38
+ - `examples/order.single-leg.tax-lot-matching.json` demonstrating the optional
39
+ `taxLotMatchingInstructions` field now accepted on order-placement and
40
+ single-leg preflight request payloads.
41
+ - `examples/strategy-quote.request.json` sample `StrategyQuoteRequest` body.
42
+ - README sections documenting the tax-lot and strategy-quote commands.
43
+
44
+ ### Changed
45
+ - Regenerated `_generated/` API client from the updated `spec.yaml`.
46
+
8
47
  ## [1.2.1] - 2026-06-17
9
48
 
10
49
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: publicdotcom-cli
3
- Version: 1.2.2
3
+ Version: 1.3.1
4
4
  Summary: Command-line client for the Public.com Trading API
5
5
  Project-URL: Homepage, https://github.com/publicdotcom/publicdotcom-cli
6
6
  Project-URL: Repository, https://github.com/publicdotcom/publicdotcom-cli
@@ -186,9 +186,13 @@ public market quotes AAPL MSFT --type EQUITY
186
186
  public market option-expirations AAPL
187
187
  public market option-chain AAPL 2026-05-15
188
188
  public options greeks "AAPL 260515C00200000"
189
+ public options strategy-quote --file examples/strategy-quote.request.json
189
190
  public historicdata bars EQUITY AAPL YEAR
190
191
  public historicdata bars EQUITY AAPL DAY --aggregation FIVE_MINUTES
191
192
  public historicdata bars EQUITY AAPL SINCE_PURCHASE --purchase-date 2024-01-15
193
+ public taxlots list
194
+ public taxlots symbol AAPL
195
+ public taxlots csv --output taxlots.csv
192
196
  ```
193
197
 
194
198
  ## Historic Bar Data
@@ -236,6 +240,42 @@ Order payloads accept optional fields beyond the basics shown above. For example
236
240
  omitted it defaults to `true` (margin applied where the account allows). See
237
241
  `examples/order.single-leg.cash-only.json` for a sample.
238
242
 
243
+ Order-placement and single-leg preflight payloads also accept an optional
244
+ `taxLotMatchingInstructions` array (up to 8 entries of `{taxLotId, quantity}`) to specify
245
+ which tax lots to close when selling equity. See
246
+ `examples/order.single-leg.tax-lot-matching.json` for a sample.
247
+
248
+ ## Tax Lots
249
+
250
+ Inspect unrealized tax lots for the configured (or `--account-id`) account:
251
+
252
+ ```bash
253
+ public taxlots list
254
+ public taxlots symbol AAPL
255
+ public taxlots symbol AAPL --price 150.00
256
+ ```
257
+
258
+ `taxlots symbol` accepts an optional `--price` used to value the lots. Export the full set
259
+ as CSV — by default the base64-encoded response is printed, or pass `--output` to decode
260
+ and write the CSV file directly:
261
+
262
+ ```bash
263
+ public taxlots csv
264
+ public taxlots csv --output taxlots.csv
265
+ ```
266
+
267
+ ## Strategy Quote
268
+
269
+ Request a quote for a multi-leg options strategy from a JSON request file:
270
+
271
+ ```bash
272
+ public options strategy-quote --file examples/strategy-quote.request.json
273
+ ```
274
+
275
+ The request body is a `StrategyQuoteRequest` with a `baseSymbol` and an `optionLegs` array
276
+ (each leg is `{symbol, side, openCloseIndicator, ratioQuantity}`), plus an optional
277
+ `equityLeg`. See `examples/strategy-quote.request.json` for a sample.
278
+
239
279
  ## JSON Output
240
280
 
241
281
  Use `--json` before the command group to print raw JSON:
@@ -148,9 +148,13 @@ public market quotes AAPL MSFT --type EQUITY
148
148
  public market option-expirations AAPL
149
149
  public market option-chain AAPL 2026-05-15
150
150
  public options greeks "AAPL 260515C00200000"
151
+ public options strategy-quote --file examples/strategy-quote.request.json
151
152
  public historicdata bars EQUITY AAPL YEAR
152
153
  public historicdata bars EQUITY AAPL DAY --aggregation FIVE_MINUTES
153
154
  public historicdata bars EQUITY AAPL SINCE_PURCHASE --purchase-date 2024-01-15
155
+ public taxlots list
156
+ public taxlots symbol AAPL
157
+ public taxlots csv --output taxlots.csv
154
158
  ```
155
159
 
156
160
  ## Historic Bar Data
@@ -198,6 +202,42 @@ Order payloads accept optional fields beyond the basics shown above. For example
198
202
  omitted it defaults to `true` (margin applied where the account allows). See
199
203
  `examples/order.single-leg.cash-only.json` for a sample.
200
204
 
205
+ Order-placement and single-leg preflight payloads also accept an optional
206
+ `taxLotMatchingInstructions` array (up to 8 entries of `{taxLotId, quantity}`) to specify
207
+ which tax lots to close when selling equity. See
208
+ `examples/order.single-leg.tax-lot-matching.json` for a sample.
209
+
210
+ ## Tax Lots
211
+
212
+ Inspect unrealized tax lots for the configured (or `--account-id`) account:
213
+
214
+ ```bash
215
+ public taxlots list
216
+ public taxlots symbol AAPL
217
+ public taxlots symbol AAPL --price 150.00
218
+ ```
219
+
220
+ `taxlots symbol` accepts an optional `--price` used to value the lots. Export the full set
221
+ as CSV — by default the base64-encoded response is printed, or pass `--output` to decode
222
+ and write the CSV file directly:
223
+
224
+ ```bash
225
+ public taxlots csv
226
+ public taxlots csv --output taxlots.csv
227
+ ```
228
+
229
+ ## Strategy Quote
230
+
231
+ Request a quote for a multi-leg options strategy from a JSON request file:
232
+
233
+ ```bash
234
+ public options strategy-quote --file examples/strategy-quote.request.json
235
+ ```
236
+
237
+ The request body is a `StrategyQuoteRequest` with a `baseSymbol` and an `optionLegs` array
238
+ (each leg is `{symbol, side, openCloseIndicator, ratioQuantity}`), plus an optional
239
+ `equityLeg`. See `examples/strategy-quote.request.json` for a sample.
240
+
201
241
  ## JSON Output
202
242
 
203
243
  Use `--json` before the command group to print raw JSON:
@@ -0,0 +1,24 @@
1
+ {
2
+ "instrument": {
3
+ "symbol": "AAPL",
4
+ "type": "EQUITY"
5
+ },
6
+ "orderSide": "SELL",
7
+ "orderType": "LIMIT",
8
+ "expiration": {
9
+ "timeInForce": "DAY"
10
+ },
11
+ "quantity": "3",
12
+ "limitPrice": "150.00",
13
+ "openCloseIndicator": "CLOSE",
14
+ "taxLotMatchingInstructions": [
15
+ {
16
+ "taxLotId": "lot-00000000-0000-0000-0000-000000000001",
17
+ "quantity": "2"
18
+ },
19
+ {
20
+ "taxLotId": "lot-00000000-0000-0000-0000-000000000002",
21
+ "quantity": "1"
22
+ }
23
+ ]
24
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "baseSymbol": "AAPL",
3
+ "optionLegs": [
4
+ {
5
+ "symbol": "AAPL 260515C00200000",
6
+ "side": "BUY",
7
+ "openCloseIndicator": "OPEN",
8
+ "ratioQuantity": 1
9
+ },
10
+ {
11
+ "symbol": "AAPL 260515C00210000",
12
+ "side": "SELL",
13
+ "openCloseIndicator": "OPEN",
14
+ "ratioQuantity": 1
15
+ }
16
+ ],
17
+ "equityLeg": {
18
+ "symbol": "AAPL",
19
+ "side": "BUY",
20
+ "ratioQuantity": 100
21
+ }
22
+ }
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "publicdotcom-cli"
3
- version = "1.2.2"
3
+ version = "1.3.1"
4
4
  description = "Command-line client for the Public.com Trading API"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -1,3 +1,3 @@
1
1
  """Command-line tools for the Public API."""
2
2
 
3
- __version__ = "1.2.2"
3
+ __version__ = "1.3.1"
@@ -35,10 +35,6 @@ def _parse_response(
35
35
  response_401 = cast(Any, None)
36
36
  return response_401
37
37
 
38
- if response.status_code == 404:
39
- response_404 = cast(Any, None)
40
- return response_404
41
-
42
38
  if client.raise_on_unexpected_status:
43
39
  raise errors.UnexpectedStatus(response.status_code, response.content)
44
40
  else:
@@ -8,6 +8,7 @@ from ... import errors
8
8
  from ...client import AuthenticatedClient, Client
9
9
  from ...models.bars_response import BarsResponse
10
10
  from ...models.get_bars_v2_period import GetBarsV2Period
11
+ from ...models.get_bars_v2_trading_session_toggle import GetBarsV2TradingSessionToggle
11
12
  from ...models.get_bars_v2_type import GetBarsV2Type
12
13
  from ...types import UNSET, Response, Unset
13
14
 
@@ -18,12 +19,19 @@ def _get_kwargs(
18
19
  period: GetBarsV2Period,
19
20
  *,
20
21
  purchase_date: str | Unset = UNSET,
22
+ trading_session_toggle: GetBarsV2TradingSessionToggle | Unset = UNSET,
21
23
  ) -> dict[str, Any]:
22
24
 
23
25
  params: dict[str, Any] = {}
24
26
 
25
27
  params["purchaseDate"] = purchase_date
26
28
 
29
+ json_trading_session_toggle: str | Unset = UNSET
30
+ if not isinstance(trading_session_toggle, Unset):
31
+ json_trading_session_toggle = trading_session_toggle.value
32
+
33
+ params["tradingSessionToggle"] = json_trading_session_toggle
34
+
27
35
  params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
28
36
 
29
37
  _kwargs: dict[str, Any] = {
@@ -71,6 +79,7 @@ def sync_detailed(
71
79
  *,
72
80
  client: AuthenticatedClient | Client,
73
81
  purchase_date: str | Unset = UNSET,
82
+ trading_session_toggle: GetBarsV2TradingSessionToggle | Unset = UNSET,
74
83
  ) -> Response[BarsResponse]:
75
84
  """Fetch bar data for a given symbol and period
76
85
 
@@ -79,6 +88,7 @@ def sync_detailed(
79
88
  symbol (str):
80
89
  period (GetBarsV2Period):
81
90
  purchase_date (str | Unset): Example: 2025-02-24.
91
+ trading_session_toggle (GetBarsV2TradingSessionToggle | Unset):
82
92
 
83
93
  Raises:
84
94
  errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
@@ -93,6 +103,7 @@ def sync_detailed(
93
103
  symbol=symbol,
94
104
  period=period,
95
105
  purchase_date=purchase_date,
106
+ trading_session_toggle=trading_session_toggle,
96
107
  )
97
108
 
98
109
  response = client.get_httpx_client().request(
@@ -109,6 +120,7 @@ def sync(
109
120
  *,
110
121
  client: AuthenticatedClient | Client,
111
122
  purchase_date: str | Unset = UNSET,
123
+ trading_session_toggle: GetBarsV2TradingSessionToggle | Unset = UNSET,
112
124
  ) -> BarsResponse | None:
113
125
  """Fetch bar data for a given symbol and period
114
126
 
@@ -117,6 +129,7 @@ def sync(
117
129
  symbol (str):
118
130
  period (GetBarsV2Period):
119
131
  purchase_date (str | Unset): Example: 2025-02-24.
132
+ trading_session_toggle (GetBarsV2TradingSessionToggle | Unset):
120
133
 
121
134
  Raises:
122
135
  errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
@@ -132,6 +145,7 @@ def sync(
132
145
  period=period,
133
146
  client=client,
134
147
  purchase_date=purchase_date,
148
+ trading_session_toggle=trading_session_toggle,
135
149
  ).parsed
136
150
 
137
151
 
@@ -142,6 +156,7 @@ async def asyncio_detailed(
142
156
  *,
143
157
  client: AuthenticatedClient | Client,
144
158
  purchase_date: str | Unset = UNSET,
159
+ trading_session_toggle: GetBarsV2TradingSessionToggle | Unset = UNSET,
145
160
  ) -> Response[BarsResponse]:
146
161
  """Fetch bar data for a given symbol and period
147
162
 
@@ -150,6 +165,7 @@ async def asyncio_detailed(
150
165
  symbol (str):
151
166
  period (GetBarsV2Period):
152
167
  purchase_date (str | Unset): Example: 2025-02-24.
168
+ trading_session_toggle (GetBarsV2TradingSessionToggle | Unset):
153
169
 
154
170
  Raises:
155
171
  errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
@@ -164,6 +180,7 @@ async def asyncio_detailed(
164
180
  symbol=symbol,
165
181
  period=period,
166
182
  purchase_date=purchase_date,
183
+ trading_session_toggle=trading_session_toggle,
167
184
  )
168
185
 
169
186
  response = await client.get_async_httpx_client().request(**kwargs)
@@ -178,6 +195,7 @@ async def asyncio(
178
195
  *,
179
196
  client: AuthenticatedClient | Client,
180
197
  purchase_date: str | Unset = UNSET,
198
+ trading_session_toggle: GetBarsV2TradingSessionToggle | Unset = UNSET,
181
199
  ) -> BarsResponse | None:
182
200
  """Fetch bar data for a given symbol and period
183
201
 
@@ -186,6 +204,7 @@ async def asyncio(
186
204
  symbol (str):
187
205
  period (GetBarsV2Period):
188
206
  purchase_date (str | Unset): Example: 2025-02-24.
207
+ trading_session_toggle (GetBarsV2TradingSessionToggle | Unset):
189
208
 
190
209
  Raises:
191
210
  errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
@@ -202,5 +221,6 @@ async def asyncio(
202
221
  period=period,
203
222
  client=client,
204
223
  purchase_date=purchase_date,
224
+ trading_session_toggle=trading_session_toggle,
205
225
  )
206
226
  ).parsed
@@ -9,6 +9,9 @@ from ...client import AuthenticatedClient, Client
9
9
  from ...models.bars_response import BarsResponse
10
10
  from ...models.get_bars_v2_with_aggregation_aggregation import GetBarsV2WithAggregationAggregation
11
11
  from ...models.get_bars_v2_with_aggregation_period import GetBarsV2WithAggregationPeriod
12
+ from ...models.get_bars_v2_with_aggregation_trading_session_toggle import (
13
+ GetBarsV2WithAggregationTradingSessionToggle,
14
+ )
12
15
  from ...models.get_bars_v2_with_aggregation_type import GetBarsV2WithAggregationType
13
16
  from ...types import UNSET, Response, Unset
14
17
 
@@ -20,12 +23,19 @@ def _get_kwargs(
20
23
  aggregation: GetBarsV2WithAggregationAggregation,
21
24
  *,
22
25
  purchase_date: str | Unset = UNSET,
26
+ trading_session_toggle: GetBarsV2WithAggregationTradingSessionToggle | Unset = UNSET,
23
27
  ) -> dict[str, Any]:
24
28
 
25
29
  params: dict[str, Any] = {}
26
30
 
27
31
  params["purchaseDate"] = purchase_date
28
32
 
33
+ json_trading_session_toggle: str | Unset = UNSET
34
+ if not isinstance(trading_session_toggle, Unset):
35
+ json_trading_session_toggle = trading_session_toggle.value
36
+
37
+ params["tradingSessionToggle"] = json_trading_session_toggle
38
+
29
39
  params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
30
40
 
31
41
  _kwargs: dict[str, Any] = {
@@ -75,6 +85,7 @@ def sync_detailed(
75
85
  *,
76
86
  client: AuthenticatedClient | Client,
77
87
  purchase_date: str | Unset = UNSET,
88
+ trading_session_toggle: GetBarsV2WithAggregationTradingSessionToggle | Unset = UNSET,
78
89
  ) -> Response[BarsResponse]:
79
90
  """Fetch bar data for a given symbol and period
80
91
 
@@ -84,6 +95,7 @@ def sync_detailed(
84
95
  period (GetBarsV2WithAggregationPeriod):
85
96
  aggregation (GetBarsV2WithAggregationAggregation):
86
97
  purchase_date (str | Unset): Example: 2025-02-24.
98
+ trading_session_toggle (GetBarsV2WithAggregationTradingSessionToggle | Unset):
87
99
 
88
100
  Raises:
89
101
  errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
@@ -99,6 +111,7 @@ def sync_detailed(
99
111
  period=period,
100
112
  aggregation=aggregation,
101
113
  purchase_date=purchase_date,
114
+ trading_session_toggle=trading_session_toggle,
102
115
  )
103
116
 
104
117
  response = client.get_httpx_client().request(
@@ -116,6 +129,7 @@ def sync(
116
129
  *,
117
130
  client: AuthenticatedClient | Client,
118
131
  purchase_date: str | Unset = UNSET,
132
+ trading_session_toggle: GetBarsV2WithAggregationTradingSessionToggle | Unset = UNSET,
119
133
  ) -> BarsResponse | None:
120
134
  """Fetch bar data for a given symbol and period
121
135
 
@@ -125,6 +139,7 @@ def sync(
125
139
  period (GetBarsV2WithAggregationPeriod):
126
140
  aggregation (GetBarsV2WithAggregationAggregation):
127
141
  purchase_date (str | Unset): Example: 2025-02-24.
142
+ trading_session_toggle (GetBarsV2WithAggregationTradingSessionToggle | Unset):
128
143
 
129
144
  Raises:
130
145
  errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
@@ -141,6 +156,7 @@ def sync(
141
156
  aggregation=aggregation,
142
157
  client=client,
143
158
  purchase_date=purchase_date,
159
+ trading_session_toggle=trading_session_toggle,
144
160
  ).parsed
145
161
 
146
162
 
@@ -152,6 +168,7 @@ async def asyncio_detailed(
152
168
  *,
153
169
  client: AuthenticatedClient | Client,
154
170
  purchase_date: str | Unset = UNSET,
171
+ trading_session_toggle: GetBarsV2WithAggregationTradingSessionToggle | Unset = UNSET,
155
172
  ) -> Response[BarsResponse]:
156
173
  """Fetch bar data for a given symbol and period
157
174
 
@@ -161,6 +178,7 @@ async def asyncio_detailed(
161
178
  period (GetBarsV2WithAggregationPeriod):
162
179
  aggregation (GetBarsV2WithAggregationAggregation):
163
180
  purchase_date (str | Unset): Example: 2025-02-24.
181
+ trading_session_toggle (GetBarsV2WithAggregationTradingSessionToggle | Unset):
164
182
 
165
183
  Raises:
166
184
  errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
@@ -176,6 +194,7 @@ async def asyncio_detailed(
176
194
  period=period,
177
195
  aggregation=aggregation,
178
196
  purchase_date=purchase_date,
197
+ trading_session_toggle=trading_session_toggle,
179
198
  )
180
199
 
181
200
  response = await client.get_async_httpx_client().request(**kwargs)
@@ -191,6 +210,7 @@ async def asyncio(
191
210
  *,
192
211
  client: AuthenticatedClient | Client,
193
212
  purchase_date: str | Unset = UNSET,
213
+ trading_session_toggle: GetBarsV2WithAggregationTradingSessionToggle | Unset = UNSET,
194
214
  ) -> BarsResponse | None:
195
215
  """Fetch bar data for a given symbol and period
196
216
 
@@ -200,6 +220,7 @@ async def asyncio(
200
220
  period (GetBarsV2WithAggregationPeriod):
201
221
  aggregation (GetBarsV2WithAggregationAggregation):
202
222
  purchase_date (str | Unset): Example: 2025-02-24.
223
+ trading_session_toggle (GetBarsV2WithAggregationTradingSessionToggle | Unset):
203
224
 
204
225
  Raises:
205
226
  errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
@@ -217,5 +238,6 @@ async def asyncio(
217
238
  aggregation=aggregation,
218
239
  client=client,
219
240
  purchase_date=purchase_date,
241
+ trading_session_toggle=trading_session_toggle,
220
242
  )
221
243
  ).parsed
@@ -0,0 +1,194 @@
1
+ from http import HTTPStatus
2
+ from typing import Any
3
+ from urllib.parse import quote
4
+
5
+ import httpx
6
+
7
+ from ... import errors
8
+ from ...client import AuthenticatedClient, Client
9
+ from ...models.com_matadorapp_shared_customerordergateway_dto_strategy_quote_dto import (
10
+ ComMatadorappSharedCustomerordergatewayDtoStrategyQuoteDto,
11
+ )
12
+ from ...models.com_matadorapp_shared_customerordergateway_dto_strategy_quote_request import (
13
+ ComMatadorappSharedCustomerordergatewayDtoStrategyQuoteRequest,
14
+ )
15
+ from ...types import Response
16
+
17
+
18
+ def _get_kwargs(
19
+ account_id: str,
20
+ *,
21
+ body: ComMatadorappSharedCustomerordergatewayDtoStrategyQuoteRequest,
22
+ ) -> dict[str, Any]:
23
+ headers: dict[str, Any] = {}
24
+
25
+ _kwargs: dict[str, Any] = {
26
+ "method": "post",
27
+ "url": "/userapigateway/option-details/{account_id}/strategy-details/quote".format(
28
+ account_id=quote(str(account_id), safe=""),
29
+ ),
30
+ }
31
+
32
+ _kwargs["json"] = body.to_dict()
33
+
34
+ headers["Content-Type"] = "application/json"
35
+
36
+ _kwargs["headers"] = headers
37
+ return _kwargs
38
+
39
+
40
+ def _parse_response(
41
+ *, client: AuthenticatedClient | Client, response: httpx.Response
42
+ ) -> ComMatadorappSharedCustomerordergatewayDtoStrategyQuoteDto | None:
43
+ if response.status_code == 200:
44
+ response_200 = ComMatadorappSharedCustomerordergatewayDtoStrategyQuoteDto.from_dict(
45
+ response.json()
46
+ )
47
+
48
+ return response_200
49
+
50
+ if client.raise_on_unexpected_status:
51
+ raise errors.UnexpectedStatus(response.status_code, response.content)
52
+ else:
53
+ return None
54
+
55
+
56
+ def _build_response(
57
+ *, client: AuthenticatedClient | Client, response: httpx.Response
58
+ ) -> Response[ComMatadorappSharedCustomerordergatewayDtoStrategyQuoteDto]:
59
+ return Response(
60
+ status_code=HTTPStatus(response.status_code),
61
+ content=response.content,
62
+ headers=response.headers,
63
+ parsed=_parse_response(client=client, response=response),
64
+ )
65
+
66
+
67
+ def sync_detailed(
68
+ account_id: str,
69
+ *,
70
+ client: AuthenticatedClient | Client,
71
+ body: ComMatadorappSharedCustomerordergatewayDtoStrategyQuoteRequest,
72
+ ) -> Response[ComMatadorappSharedCustomerordergatewayDtoStrategyQuoteDto]:
73
+ """Get quote for multi-leg option strategy
74
+
75
+ Get a quote for a multi-leg option strategy including all legs and combined pricing
76
+
77
+ Args:
78
+ account_id (str):
79
+ body (ComMatadorappSharedCustomerordergatewayDtoStrategyQuoteRequest): Request quote for a
80
+ multi leg strategy.
81
+
82
+ Raises:
83
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
84
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
85
+
86
+ Returns:
87
+ Response[ComMatadorappSharedCustomerordergatewayDtoStrategyQuoteDto]
88
+ """
89
+
90
+ kwargs = _get_kwargs(
91
+ account_id=account_id,
92
+ body=body,
93
+ )
94
+
95
+ response = client.get_httpx_client().request(
96
+ **kwargs,
97
+ )
98
+
99
+ return _build_response(client=client, response=response)
100
+
101
+
102
+ def sync(
103
+ account_id: str,
104
+ *,
105
+ client: AuthenticatedClient | Client,
106
+ body: ComMatadorappSharedCustomerordergatewayDtoStrategyQuoteRequest,
107
+ ) -> ComMatadorappSharedCustomerordergatewayDtoStrategyQuoteDto | None:
108
+ """Get quote for multi-leg option strategy
109
+
110
+ Get a quote for a multi-leg option strategy including all legs and combined pricing
111
+
112
+ Args:
113
+ account_id (str):
114
+ body (ComMatadorappSharedCustomerordergatewayDtoStrategyQuoteRequest): Request quote for a
115
+ multi leg strategy.
116
+
117
+ Raises:
118
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
119
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
120
+
121
+ Returns:
122
+ ComMatadorappSharedCustomerordergatewayDtoStrategyQuoteDto
123
+ """
124
+
125
+ return sync_detailed(
126
+ account_id=account_id,
127
+ client=client,
128
+ body=body,
129
+ ).parsed
130
+
131
+
132
+ async def asyncio_detailed(
133
+ account_id: str,
134
+ *,
135
+ client: AuthenticatedClient | Client,
136
+ body: ComMatadorappSharedCustomerordergatewayDtoStrategyQuoteRequest,
137
+ ) -> Response[ComMatadorappSharedCustomerordergatewayDtoStrategyQuoteDto]:
138
+ """Get quote for multi-leg option strategy
139
+
140
+ Get a quote for a multi-leg option strategy including all legs and combined pricing
141
+
142
+ Args:
143
+ account_id (str):
144
+ body (ComMatadorappSharedCustomerordergatewayDtoStrategyQuoteRequest): Request quote for a
145
+ multi leg strategy.
146
+
147
+ Raises:
148
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
149
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
150
+
151
+ Returns:
152
+ Response[ComMatadorappSharedCustomerordergatewayDtoStrategyQuoteDto]
153
+ """
154
+
155
+ kwargs = _get_kwargs(
156
+ account_id=account_id,
157
+ body=body,
158
+ )
159
+
160
+ response = await client.get_async_httpx_client().request(**kwargs)
161
+
162
+ return _build_response(client=client, response=response)
163
+
164
+
165
+ async def asyncio(
166
+ account_id: str,
167
+ *,
168
+ client: AuthenticatedClient | Client,
169
+ body: ComMatadorappSharedCustomerordergatewayDtoStrategyQuoteRequest,
170
+ ) -> ComMatadorappSharedCustomerordergatewayDtoStrategyQuoteDto | None:
171
+ """Get quote for multi-leg option strategy
172
+
173
+ Get a quote for a multi-leg option strategy including all legs and combined pricing
174
+
175
+ Args:
176
+ account_id (str):
177
+ body (ComMatadorappSharedCustomerordergatewayDtoStrategyQuoteRequest): Request quote for a
178
+ multi leg strategy.
179
+
180
+ Raises:
181
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
182
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
183
+
184
+ Returns:
185
+ ComMatadorappSharedCustomerordergatewayDtoStrategyQuoteDto
186
+ """
187
+
188
+ return (
189
+ await asyncio_detailed(
190
+ account_id=account_id,
191
+ client=client,
192
+ body=body,
193
+ )
194
+ ).parsed