finatic-server-python 0.2.1__py3-none-any.whl → 0.9.1__py3-none-any.whl
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.
- custom/FinaticServer.py +31 -0
- custom/__init__.py +15 -0
- custom/wrappers/brokers.py +21 -0
- custom/wrappers/company.py +19 -0
- custom/wrappers/session.py +23 -0
- finatic_server_python-0.9.1.dist-info/METADATA +356 -0
- finatic_server_python-0.9.1.dist-info/RECORD +183 -0
- {finatic_server_python-0.2.1.dist-info → finatic_server_python-0.9.1.dist-info}/WHEEL +1 -2
- finatic_server_python-0.9.1.dist-info/licenses/LICENSE +39 -0
- generated/FinaticServer.py +2855 -0
- generated/__init__.py +340 -0
- generated/api/__init__.py +7 -0
- generated/api/brokers_api.py +4540 -0
- generated/api/company_api.py +565 -0
- generated/api/session_api.py +1221 -0
- generated/api_client.py +807 -0
- generated/api_response.py +21 -0
- generated/config.py +111 -0
- generated/configuration.py +581 -0
- generated/exceptions.py +216 -0
- generated/models/__init__.py +160 -0
- generated/models/account_status.py +37 -0
- generated/models/accountstatus0.py +142 -0
- generated/models/accounttype.py +142 -0
- generated/models/assettype.py +136 -0
- generated/models/availablebalance.py +144 -0
- generated/models/availabletowithdraw.py +144 -0
- generated/models/averagebuyprice.py +144 -0
- generated/models/averagefillprice.py +144 -0
- generated/models/averagesellprice.py +144 -0
- generated/models/balancetype.py +136 -0
- generated/models/broker_data_account_type_enum.py +38 -0
- generated/models/broker_data_asset_type_enum.py +41 -0
- generated/models/broker_data_order_side_enum.py +37 -0
- generated/models/broker_data_order_status_enum.py +46 -0
- generated/models/broker_data_position_status_enum.py +38 -0
- generated/models/broker_info.py +127 -0
- generated/models/buyingpower.py +144 -0
- generated/models/cashbalance.py +144 -0
- generated/models/closedquantity.py +138 -0
- generated/models/closepriceavg.py +144 -0
- generated/models/commission.py +144 -0
- generated/models/commissionshare.py +144 -0
- generated/models/company_response.py +140 -0
- generated/models/costbasis.py +144 -0
- generated/models/costbasis1.py +138 -0
- generated/models/costbasiswithcommission.py +144 -0
- generated/models/costbasiswithcommission1.py +138 -0
- generated/models/currentbalance.py +144 -0
- generated/models/currentprice.py +144 -0
- generated/models/disconnect_action_result.py +109 -0
- generated/models/eventtype.py +136 -0
- generated/models/fdx_account_status.py +40 -0
- generated/models/fdx_account_type.py +46 -0
- generated/models/fdx_asset_type.py +41 -0
- generated/models/fdx_balance_type.py +46 -0
- generated/models/fdx_broker_account.py +255 -0
- generated/models/fdx_broker_balance.py +267 -0
- generated/models/fdx_broker_order.py +224 -0
- generated/models/fdx_broker_order_event.py +206 -0
- generated/models/fdx_broker_order_fill.py +185 -0
- generated/models/fdx_broker_order_group.py +161 -0
- generated/models/fdx_broker_position.py +333 -0
- generated/models/fdx_broker_position_lot.py +216 -0
- generated/models/fdx_broker_position_lot_fill.py +139 -0
- generated/models/fdx_order_class.py +41 -0
- generated/models/fdx_order_event_type.py +53 -0
- generated/models/fdx_order_group_order.py +133 -0
- generated/models/fdx_order_group_type.py +40 -0
- generated/models/fdx_order_leg.py +253 -0
- generated/models/fdx_order_side.py +37 -0
- generated/models/fdx_order_status.py +45 -0
- generated/models/fdx_order_type.py +40 -0
- generated/models/fdx_position_side.py +37 -0
- generated/models/fdx_position_status.py +37 -0
- generated/models/fdx_security_id_type.py +39 -0
- generated/models/fdx_time_in_force.py +40 -0
- generated/models/filledquantity.py +144 -0
- generated/models/fillprice.py +138 -0
- generated/models/fillquantity.py +138 -0
- generated/models/finatic_error.py +107 -0
- generated/models/finatic_response_company_response.py +120 -0
- generated/models/finatic_response_disconnect_action_result.py +120 -0
- generated/models/finatic_response_list_broker_info.py +120 -0
- generated/models/finatic_response_list_fdx_broker_account.py +120 -0
- generated/models/finatic_response_list_fdx_broker_balance.py +120 -0
- generated/models/finatic_response_list_fdx_broker_order.py +120 -0
- generated/models/finatic_response_list_fdx_broker_order_event.py +120 -0
- generated/models/finatic_response_list_fdx_broker_order_fill.py +120 -0
- generated/models/finatic_response_list_fdx_broker_order_group.py +120 -0
- generated/models/finatic_response_list_fdx_broker_position.py +120 -0
- generated/models/finatic_response_list_fdx_broker_position_lot.py +120 -0
- generated/models/finatic_response_list_fdx_broker_position_lot_fill.py +120 -0
- generated/models/finatic_response_list_user_broker_connection_with_permissions.py +120 -0
- generated/models/finatic_response_portal_url_response.py +120 -0
- generated/models/finatic_response_session_response_data.py +120 -0
- generated/models/finatic_response_session_user_response.py +120 -0
- generated/models/finatic_response_token_response_data.py +120 -0
- generated/models/futureunderlyingassettype.py +142 -0
- generated/models/grouptype.py +142 -0
- generated/models/http_validation_error.py +108 -0
- generated/models/initialmargin.py +144 -0
- generated/models/limitprice.py +144 -0
- generated/models/maintenancemargin.py +144 -0
- generated/models/marketvalue.py +144 -0
- generated/models/netliquidationvalue.py +144 -0
- generated/models/openprice.py +138 -0
- generated/models/openquantity.py +138 -0
- generated/models/orderclass.py +142 -0
- generated/models/orderstatus.py +142 -0
- generated/models/ordertype.py +142 -0
- generated/models/pendingbalance.py +144 -0
- generated/models/portal_url_response.py +100 -0
- generated/models/previousstatus.py +142 -0
- generated/models/price.py +138 -0
- generated/models/quantity.py +138 -0
- generated/models/quantity1.py +138 -0
- generated/models/quantity2.py +138 -0
- generated/models/realizedprofitloss.py +144 -0
- generated/models/realizedprofitloss1.py +138 -0
- generated/models/realizedprofitlosspercent.py +144 -0
- generated/models/realizedprofitlosswithcommission.py +144 -0
- generated/models/realizedprofitlosswithcommission1.py +138 -0
- generated/models/remainingquantity.py +144 -0
- generated/models/remainingquantity1.py +138 -0
- generated/models/securityidtype.py +136 -0
- generated/models/session_response_data.py +115 -0
- generated/models/session_start_request.py +105 -0
- generated/models/session_status.py +40 -0
- generated/models/session_user_response.py +112 -0
- generated/models/side.py +136 -0
- generated/models/side1.py +142 -0
- generated/models/side2.py +136 -0
- generated/models/side3.py +142 -0
- generated/models/status.py +136 -0
- generated/models/status1.py +142 -0
- generated/models/stopprice.py +144 -0
- generated/models/strikeprice.py +144 -0
- generated/models/success_payload_company_response.py +118 -0
- generated/models/success_payload_disconnect_action_result.py +118 -0
- generated/models/success_payload_list_broker_info.py +122 -0
- generated/models/success_payload_list_fdx_broker_account.py +122 -0
- generated/models/success_payload_list_fdx_broker_balance.py +122 -0
- generated/models/success_payload_list_fdx_broker_order.py +122 -0
- generated/models/success_payload_list_fdx_broker_order_event.py +122 -0
- generated/models/success_payload_list_fdx_broker_order_fill.py +122 -0
- generated/models/success_payload_list_fdx_broker_order_group.py +122 -0
- generated/models/success_payload_list_fdx_broker_position.py +122 -0
- generated/models/success_payload_list_fdx_broker_position_lot.py +122 -0
- generated/models/success_payload_list_fdx_broker_position_lot_fill.py +122 -0
- generated/models/success_payload_list_user_broker_connection_with_permissions.py +122 -0
- generated/models/success_payload_portal_url_response.py +118 -0
- generated/models/success_payload_session_response_data.py +118 -0
- generated/models/success_payload_session_user_response.py +118 -0
- generated/models/success_payload_token_response_data.py +118 -0
- generated/models/timeinforce.py +142 -0
- generated/models/token_response_data.py +103 -0
- generated/models/totalcashvalue.py +144 -0
- generated/models/totalrealizedpnl.py +144 -0
- generated/models/units.py +144 -0
- generated/models/unrealizedprofitloss.py +144 -0
- generated/models/unrealizedprofitlosspercent.py +144 -0
- generated/models/user_broker_connection_with_permissions.py +138 -0
- generated/models/validation_error.py +112 -0
- generated/models/validation_error_loc_inner.py +138 -0
- generated/rest.py +213 -0
- generated/types.py +22 -0
- generated/utils/__init__.py +48 -0
- generated/utils/cache.py +72 -0
- generated/utils/enum_coercion.py +63 -0
- generated/utils/error_handling.py +129 -0
- generated/utils/interceptors.py +102 -0
- generated/utils/logger.py +69 -0
- generated/utils/pagination.py +289 -0
- generated/utils/plain_object.py +74 -0
- generated/utils/request_id.py +12 -0
- generated/utils/retry.py +99 -0
- generated/utils/url_utils.py +74 -0
- generated/utils/validation.py +46 -0
- generated/wrappers/__init__.py +15 -0
- generated/wrappers/brokers.py +3399 -0
- generated/wrappers/company.py +297 -0
- generated/wrappers/session.py +1025 -0
- finatic_server/__init__.py +0 -143
- finatic_server/core/__init__.py +0 -6
- finatic_server/core/api_client.py +0 -1884
- finatic_server/core/client.py +0 -1044
- finatic_server/types/__init__.py +0 -137
- finatic_server/types/auth.py +0 -142
- finatic_server/types/broker.py +0 -381
- finatic_server/types/common.py +0 -177
- finatic_server/types/orders.py +0 -93
- finatic_server/types/portfolio.py +0 -61
- finatic_server/types/webhook.py +0 -21
- finatic_server/utils/__init__.py +0 -27
- finatic_server/utils/errors.py +0 -94
- finatic_server_python-0.2.1.dist-info/METADATA +0 -489
- finatic_server_python-0.2.1.dist-info/RECORD +0 -17
- finatic_server_python-0.2.1.dist-info/top_level.txt +0 -1
custom/FinaticServer.py
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Custom FinaticServer extension.
|
|
3
|
+
|
|
4
|
+
This file is protected and will not be overwritten during regeneration.
|
|
5
|
+
Add custom logic to extend or override generated FinaticServer behavior.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from src.generated.FinaticServer import FinaticServer as GeneratedFinaticServer
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class FinaticServer(GeneratedFinaticServer):
|
|
12
|
+
"""Custom FinaticServer class that extends the generated class.
|
|
13
|
+
|
|
14
|
+
Use this to add custom initialization logic or override methods.
|
|
15
|
+
|
|
16
|
+
NOTE: All convenience methods (get_open_positions, get_pending_orders, get_active_accounts, etc.)
|
|
17
|
+
are now generated by the generator with proper enum coercion.
|
|
18
|
+
No custom code needed - this is just a stub for future customizations.
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
# Marker to verify custom class is being used
|
|
22
|
+
__CUSTOM_CLASS__ = True
|
|
23
|
+
|
|
24
|
+
# Generator now handles:
|
|
25
|
+
# - All convenience methods (get_open_positions, get_pending_orders, get_active_accounts, etc.)
|
|
26
|
+
# - Session headers for broker endpoints
|
|
27
|
+
# - Portal URL no-cache handling
|
|
28
|
+
# - Metadata transformation for with_metadata parameter
|
|
29
|
+
# - init_session() method (Phase 2C - now generated)
|
|
30
|
+
# - Enum coercion (case-insensitive, no aliases)
|
|
31
|
+
# No custom code needed - this is just a stub for future customizations
|
custom/__init__.py
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Custom code exports.
|
|
3
|
+
|
|
4
|
+
This file is protected - add your custom exports here.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
# Core - Export custom FinaticServer that extends generated class
|
|
8
|
+
from .FinaticServer import FinaticServer
|
|
9
|
+
from .wrappers.brokers import CustomBrokersWrapper
|
|
10
|
+
|
|
11
|
+
# Wrappers
|
|
12
|
+
from .wrappers.session import CustomSessionWrapper
|
|
13
|
+
|
|
14
|
+
# Utils
|
|
15
|
+
# from .utils.errors import *
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Custom brokers wrapper - Extends generated wrapper.
|
|
3
|
+
|
|
4
|
+
This file is protected and will not be overwritten during regeneration.
|
|
5
|
+
Add your custom brokers logic here.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from src.generated.wrappers.brokers import BrokersWrapper
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class CustomBrokersWrapper(BrokersWrapper):
|
|
12
|
+
"""Custom wrapper for brokers operations.
|
|
13
|
+
|
|
14
|
+
Extend or override generated functions as needed.
|
|
15
|
+
|
|
16
|
+
NOTE: Session headers and metadata transformation are now handled in the generator.
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
# Session headers are now automatically added by the generator for all broker endpoints
|
|
20
|
+
# Metadata transformation is now handled by the generator for methods with with_metadata parameter
|
|
21
|
+
# No custom overrides needed
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Custom company wrapper - Extends generated wrapper.
|
|
3
|
+
|
|
4
|
+
This file is protected and will not be overwritten during regeneration.
|
|
5
|
+
Add your custom company logic here.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from ..generated.wrappers.company import CompanyWrapper
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class CustomCompanyWrapper(CompanyWrapper):
|
|
12
|
+
"""Custom wrapper for company operations.
|
|
13
|
+
|
|
14
|
+
Extend or override generated functions as needed.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
# TODO: Add your custom implementation
|
|
18
|
+
# You can override generated methods or add new ones
|
|
19
|
+
pass
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Custom session wrapper - Extends generated wrapper.
|
|
3
|
+
|
|
4
|
+
This file is protected and will not be overwritten during regeneration.
|
|
5
|
+
Add your custom session logic here.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from src.generated.wrappers.session import SessionWrapper
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class CustomSessionWrapper(SessionWrapper):
|
|
12
|
+
"""Custom wrapper for session operations.
|
|
13
|
+
|
|
14
|
+
Extend or override generated functions as needed.
|
|
15
|
+
|
|
16
|
+
NOTE:
|
|
17
|
+
- Portal URL caching is now handled in the generator (no-cache for get_portal_url)
|
|
18
|
+
- Session creation methods (init_session, start_session) no longer have auth checks in generator
|
|
19
|
+
- Response unwrapping is handled by the generator
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
# All session wrapper functionality is now handled by the generator
|
|
23
|
+
# No custom overrides needed
|
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: finatic-server-python
|
|
3
|
+
Version: 0.9.1
|
|
4
|
+
Summary: Python SDK for Finatic Server API
|
|
5
|
+
Project-URL: Homepage, https://github.com/FinaticORG/FinaticServerSDK-Python
|
|
6
|
+
Project-URL: Documentation, https://docs.finatic.com/python
|
|
7
|
+
Project-URL: Repository, https://github.com/FinaticORG/FinaticServerSDK-Python
|
|
8
|
+
Project-URL: Issues, https://github.com/FinaticORG/FinaticServerSDK-Python/issues
|
|
9
|
+
Author-email: Finatic <support@finatic.dev>
|
|
10
|
+
License: PROPRIETARY
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Keywords: api,finance,finatic,sdk,trading
|
|
13
|
+
Classifier: Development Status :: 3 - Alpha
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: License :: Other/Proprietary License
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Topic :: Office/Business :: Financial
|
|
23
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
24
|
+
Requires-Python: >=3.8.1
|
|
25
|
+
Requires-Dist: aiohttp-retry>=2.8.0
|
|
26
|
+
Requires-Dist: aiohttp>=3.8.0
|
|
27
|
+
Requires-Dist: cachetools>=5.3.0
|
|
28
|
+
Requires-Dist: pydantic>=2.0.0
|
|
29
|
+
Requires-Dist: python-dateutil>=2.8.0
|
|
30
|
+
Requires-Dist: structlog>=23.2.0
|
|
31
|
+
Requires-Dist: tenacity>=8.2.0
|
|
32
|
+
Requires-Dist: typing-extensions>=4.0.0
|
|
33
|
+
Requires-Dist: urllib3>=1.25.0
|
|
34
|
+
Provides-Extra: dev
|
|
35
|
+
Requires-Dist: black>=23.0.0; extra == 'dev'
|
|
36
|
+
Requires-Dist: flake8>=6.0.0; extra == 'dev'
|
|
37
|
+
Requires-Dist: isort>=5.12.0; extra == 'dev'
|
|
38
|
+
Requires-Dist: mypy>=1.0.0; extra == 'dev'
|
|
39
|
+
Requires-Dist: pre-commit>=3.0.0; extra == 'dev'
|
|
40
|
+
Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
|
|
41
|
+
Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
|
|
42
|
+
Requires-Dist: pytest>=7.0.0; extra == 'dev'
|
|
43
|
+
Requires-Dist: types-cachetools>=5.3.0; extra == 'dev'
|
|
44
|
+
Requires-Dist: types-python-dateutil>=2.8.0; extra == 'dev'
|
|
45
|
+
Description-Content-Type: text/markdown
|
|
46
|
+
|
|
47
|
+
# Finatic Python Server SDK
|
|
48
|
+
|
|
49
|
+
Python SDK for the Finatic Server API. Connect your Python applications to multiple brokerages through a unified, standardized interface.
|
|
50
|
+
|
|
51
|
+
**Finatic is a brokerage first aggregator. We simplify, standardize and enhance broker data.**
|
|
52
|
+
|
|
53
|
+
## Installation
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
pip install finatic-server-python
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Or using uv:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
uv pip install finatic-server-python
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Quick Start (5 Minutes)
|
|
66
|
+
|
|
67
|
+
### 1. Initialize the SDK
|
|
68
|
+
|
|
69
|
+
```python
|
|
70
|
+
from finatic_server_python import FinaticServer
|
|
71
|
+
|
|
72
|
+
# Initialize with your API key
|
|
73
|
+
finatic = await FinaticServer.init(
|
|
74
|
+
api_key='your-api-key',
|
|
75
|
+
user_id=None, # Optional user ID
|
|
76
|
+
sdk_config={
|
|
77
|
+
'base_url': 'https://api.finatic.dev', # Optional, defaults to production
|
|
78
|
+
'log_level': 'debug', # Optional: 'debug' | 'info' | 'warn' | 'error'
|
|
79
|
+
'structured_logging': True, # Optional: Enable structured JSON logging
|
|
80
|
+
}
|
|
81
|
+
)
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**Note:** The `init()` method automatically starts a session, so you're ready to use the SDK immediately.
|
|
85
|
+
|
|
86
|
+
### 2. Get Portal URL for Authentication
|
|
87
|
+
|
|
88
|
+
The portal allows users to connect their broker accounts. Get the URL and redirect users to it:
|
|
89
|
+
|
|
90
|
+
```python
|
|
91
|
+
# Get portal URL
|
|
92
|
+
portal_url = await finatic.get_portal_url(
|
|
93
|
+
theme='dark', # Theme: 'light' | 'dark' | theme dict
|
|
94
|
+
brokers=['alpaca', 'tradier'], # Optional: Filter specific brokers
|
|
95
|
+
email='user@example.com', # Optional: Pre-fill email
|
|
96
|
+
mode='dark' # Mode: 'light' | 'dark'
|
|
97
|
+
)
|
|
98
|
+
|
|
99
|
+
print(f'Portal URL: {portal_url}')
|
|
100
|
+
# Redirect user to this URL for authentication
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### 3. Check Authentication Status
|
|
104
|
+
|
|
105
|
+
```python
|
|
106
|
+
# Check if user is authenticated
|
|
107
|
+
is_authenticated = finatic.is_authed()
|
|
108
|
+
|
|
109
|
+
# Get current user ID
|
|
110
|
+
user_id = finatic.get_user_id()
|
|
111
|
+
|
|
112
|
+
# Get session user details
|
|
113
|
+
session_user = await finatic.get_session_user()
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### 4. Fetch Data
|
|
117
|
+
|
|
118
|
+
Once users have authenticated via the portal, you can fetch broker data:
|
|
119
|
+
|
|
120
|
+
```python
|
|
121
|
+
# Get all orders (automatically paginates through all pages)
|
|
122
|
+
all_orders = await finatic.get_all_orders()
|
|
123
|
+
|
|
124
|
+
# Get orders with filters (single page)
|
|
125
|
+
orders = await finatic.get_orders(
|
|
126
|
+
broker_id='alpaca',
|
|
127
|
+
account_id='123456789',
|
|
128
|
+
order_status='filled',
|
|
129
|
+
limit=100,
|
|
130
|
+
offset=0
|
|
131
|
+
)
|
|
132
|
+
|
|
133
|
+
# Get all positions
|
|
134
|
+
all_positions = await finatic.get_all_positions()
|
|
135
|
+
|
|
136
|
+
# Get positions with filters
|
|
137
|
+
positions = await finatic.get_positions(
|
|
138
|
+
broker_id='alpaca',
|
|
139
|
+
symbol='AAPL',
|
|
140
|
+
limit=50
|
|
141
|
+
)
|
|
142
|
+
|
|
143
|
+
# Get all accounts
|
|
144
|
+
all_accounts = await finatic.get_all_accounts()
|
|
145
|
+
|
|
146
|
+
# Get balances
|
|
147
|
+
balances = await finatic.get_balances(
|
|
148
|
+
broker_id='alpaca',
|
|
149
|
+
account_id='123456789'
|
|
150
|
+
)
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## Complete Example
|
|
154
|
+
|
|
155
|
+
```python
|
|
156
|
+
import asyncio
|
|
157
|
+
import os
|
|
158
|
+
from finatic_server_python import FinaticServer
|
|
159
|
+
|
|
160
|
+
async def main():
|
|
161
|
+
# 1. Initialize SDK
|
|
162
|
+
finatic = await FinaticServer.init(
|
|
163
|
+
api_key=os.getenv('FINATIC_API_KEY'),
|
|
164
|
+
user_id=None, # Optional user ID
|
|
165
|
+
sdk_config={
|
|
166
|
+
'base_url': os.getenv('FINATIC_API_URL', 'https://api.finatic.dev'),
|
|
167
|
+
'log_level': 'info',
|
|
168
|
+
}
|
|
169
|
+
)
|
|
170
|
+
|
|
171
|
+
# 2. Get portal URL for user authentication
|
|
172
|
+
portal_url = await finatic.get_portal_url('dark')
|
|
173
|
+
print('Please visit this URL to authenticate:')
|
|
174
|
+
print(portal_url)
|
|
175
|
+
|
|
176
|
+
# Wait for user to authenticate (in a real app, you'd handle this via webhook or polling)
|
|
177
|
+
# For demo purposes, we'll assume authentication is complete
|
|
178
|
+
|
|
179
|
+
# 3. Fetch data
|
|
180
|
+
orders = await finatic.get_all_orders()
|
|
181
|
+
positions = await finatic.get_all_positions()
|
|
182
|
+
accounts = await finatic.get_all_accounts()
|
|
183
|
+
|
|
184
|
+
print('Orders:', orders.success.data if orders.success else None)
|
|
185
|
+
print('Positions:', positions.success.data if positions.success else None)
|
|
186
|
+
print('Accounts:', accounts.success.data if accounts.success else None)
|
|
187
|
+
|
|
188
|
+
if __name__ == '__main__':
|
|
189
|
+
asyncio.run(main())
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
## Generate One-Time Tokens for Client SDK
|
|
193
|
+
|
|
194
|
+
If you need to generate tokens for the Client SDK:
|
|
195
|
+
|
|
196
|
+
```python
|
|
197
|
+
# Get a one-time token (useful for passing to client-side applications)
|
|
198
|
+
token = await finatic.get_token()
|
|
199
|
+
|
|
200
|
+
# Or with a custom API key
|
|
201
|
+
token = await finatic.get_token(api_key='custom-api-key')
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
## Available Data Methods
|
|
205
|
+
|
|
206
|
+
### Orders
|
|
207
|
+
|
|
208
|
+
- `get_orders(**params)` - Get single page of orders
|
|
209
|
+
- `get_all_orders(**params)` - Get all orders (auto-paginated)
|
|
210
|
+
- `get_order_fills(order_id, **params)` - Get fills for a specific order
|
|
211
|
+
- `get_all_order_fills(order_id, **params)` - Get all fills (auto-paginated)
|
|
212
|
+
- `get_order_events(order_id, **params)` - Get events for a specific order
|
|
213
|
+
- `get_all_order_events(order_id, **params)` - Get all events (auto-paginated)
|
|
214
|
+
- `get_order_groups(**params)` - Get order groups
|
|
215
|
+
- `get_all_order_groups(**params)` - Get all order groups (auto-paginated)
|
|
216
|
+
|
|
217
|
+
### Positions
|
|
218
|
+
|
|
219
|
+
- `get_positions(**params)` - Get single page of positions
|
|
220
|
+
- `get_all_positions(**params)` - Get all positions (auto-paginated)
|
|
221
|
+
- `get_position_lots(**params)` - Get position lots
|
|
222
|
+
- `get_all_position_lots(**params)` - Get all position lots (auto-paginated)
|
|
223
|
+
- `get_position_lot_fills(lot_id, **params)` - Get fills for a specific lot
|
|
224
|
+
- `get_all_position_lot_fills(lot_id, **params)` - Get all fills (auto-paginated)
|
|
225
|
+
|
|
226
|
+
### Accounts & Balances
|
|
227
|
+
|
|
228
|
+
- `get_accounts(**params)` - Get single page of accounts
|
|
229
|
+
- `get_all_accounts(**params)` - Get all accounts (auto-paginated)
|
|
230
|
+
- `get_balances(**params)` - Get balances
|
|
231
|
+
- `get_all_balances(**params)` - Get all balances (auto-paginated)
|
|
232
|
+
|
|
233
|
+
### Broker Management
|
|
234
|
+
|
|
235
|
+
- `get_brokers()` - Get available brokers
|
|
236
|
+
- `get_broker_connections()` - Get connected broker accounts
|
|
237
|
+
- `disconnect_company_from_broker(connection_id)` - Disconnect a broker
|
|
238
|
+
|
|
239
|
+
### Company
|
|
240
|
+
|
|
241
|
+
- `get_company(company_id)` - Get company information
|
|
242
|
+
|
|
243
|
+
## Method Parameters
|
|
244
|
+
|
|
245
|
+
Most data methods accept optional keyword arguments:
|
|
246
|
+
|
|
247
|
+
```python
|
|
248
|
+
{
|
|
249
|
+
'broker_id': 'alpaca', # Filter by broker (e.g., 'alpaca', 'tradier')
|
|
250
|
+
'connection_id': 'uuid', # Filter by connection ID
|
|
251
|
+
'account_id': '123456789', # Filter by account ID
|
|
252
|
+
'symbol': 'AAPL', # Filter by symbol
|
|
253
|
+
'order_status': 'filled', # Filter by order status
|
|
254
|
+
'side': 'buy', # Filter by side ('buy' | 'sell')
|
|
255
|
+
'asset_type': 'equity', # Filter by asset type
|
|
256
|
+
'limit': 100, # Page size (default: varies by endpoint)
|
|
257
|
+
'offset': 0, # Pagination offset (default: 0)
|
|
258
|
+
'include_metadata': True, # Include metadata in response
|
|
259
|
+
# ... other filters specific to each method
|
|
260
|
+
}
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
## Response Format
|
|
264
|
+
|
|
265
|
+
All data methods return a `FinaticResponse` object:
|
|
266
|
+
|
|
267
|
+
```python
|
|
268
|
+
{
|
|
269
|
+
'success': {
|
|
270
|
+
'data': [...], # List of data items
|
|
271
|
+
# ... other metadata
|
|
272
|
+
},
|
|
273
|
+
'error': {
|
|
274
|
+
'message': 'Error message',
|
|
275
|
+
'code': 'ERROR_CODE'
|
|
276
|
+
},
|
|
277
|
+
'warning': [...]
|
|
278
|
+
}
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
Access the data:
|
|
282
|
+
|
|
283
|
+
```python
|
|
284
|
+
result = await finatic.get_orders()
|
|
285
|
+
if result.success:
|
|
286
|
+
orders = result.success.data
|
|
287
|
+
# Use orders...
|
|
288
|
+
else:
|
|
289
|
+
print(f'Error: {result.error.message}')
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
## Session Management
|
|
293
|
+
|
|
294
|
+
```python
|
|
295
|
+
# Start a new session (usually done automatically in init())
|
|
296
|
+
session_result = await finatic.start_session()
|
|
297
|
+
|
|
298
|
+
# Get session user
|
|
299
|
+
session_user = await finatic.get_session_user()
|
|
300
|
+
|
|
301
|
+
# Get session ID
|
|
302
|
+
session_id = finatic.get_session_id()
|
|
303
|
+
|
|
304
|
+
# Get company ID
|
|
305
|
+
company_id = finatic.get_company_id()
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
## Configuration Options
|
|
309
|
+
|
|
310
|
+
```python
|
|
311
|
+
finatic = await FinaticServer.init(
|
|
312
|
+
api_key='your-api-key',
|
|
313
|
+
user_id=None,
|
|
314
|
+
sdk_config={
|
|
315
|
+
'base_url': 'https://api.finatic.dev', # API base URL
|
|
316
|
+
'log_level': 'info', # 'debug' | 'info' | 'warn' | 'error'
|
|
317
|
+
'structured_logging': False, # Enable structured JSON logging
|
|
318
|
+
# ... other options
|
|
319
|
+
}
|
|
320
|
+
)
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
## Development
|
|
324
|
+
|
|
325
|
+
```bash
|
|
326
|
+
# Install dependencies
|
|
327
|
+
uv pip install -e .
|
|
328
|
+
|
|
329
|
+
# Build
|
|
330
|
+
python -m build
|
|
331
|
+
|
|
332
|
+
# Run tests
|
|
333
|
+
pytest
|
|
334
|
+
|
|
335
|
+
# Lint
|
|
336
|
+
ruff check .
|
|
337
|
+
|
|
338
|
+
# Format
|
|
339
|
+
ruff format .
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
## Documentation
|
|
343
|
+
|
|
344
|
+
Full API documentation is available at [docs.finatic.com/server/python](https://docs.finatic.com/server/python).
|
|
345
|
+
|
|
346
|
+
## License
|
|
347
|
+
|
|
348
|
+
MIT
|
|
349
|
+
|
|
350
|
+
## Copyright
|
|
351
|
+
|
|
352
|
+
© Copyright 2025 Finatic. All Rights Reserved.
|
|
353
|
+
|
|
354
|
+
---
|
|
355
|
+
|
|
356
|
+
**Finatic** - Fast. Secure. Standardized.
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
custom/FinaticServer.py,sha256=LzpLDKNyb1s-rsnIy5Vt82qAr2_H3z19VhHsFhNsdkg,1241
|
|
2
|
+
custom/__init__.py,sha256=zdktVMzdVnAITwF7oaXnT2erkZ6a1_SntZpHx1S0kVM,346
|
|
3
|
+
custom/wrappers/brokers.py,sha256=2xiFeyzq8EMUjn8zwzWQAeb4Z4uaGUG_-Vw8TFz7Upc,701
|
|
4
|
+
custom/wrappers/company.py,sha256=1PJRPBlI4jEDYObdGDCTpx3UA8PGUeE_inj7fcKtguw,499
|
|
5
|
+
custom/wrappers/session.py,sha256=A0nxuheGAKRmKAo_hHApS3iImkV0dpu4JEKGh8zKUb8,742
|
|
6
|
+
generated/FinaticServer.py,sha256=1Auj9TyQIGt4Eck4mpo-Rlwtx2y6kV_s1FQQblb6oIk,123207
|
|
7
|
+
generated/__init__.py,sha256=CnZqM1n70v0pD2JRsZ3hOjJhlwmjQRiIF4hJZKLCHzY,17979
|
|
8
|
+
generated/api_client.py,sha256=pzlq8bdPqGpU6cVhOfY4edVyK9sGmB1xb7bzElu2sMc,27748
|
|
9
|
+
generated/api_response.py,sha256=eMxw1mpmJcoGZ3gs9z6jM4oYoZ10Gjk333s9sKxGv7s,652
|
|
10
|
+
generated/config.py,sha256=w1twv6Z9qMZN51X2bi-Tb8nLo6xHaPS9SuC1Hm1wBkE,8527
|
|
11
|
+
generated/configuration.py,sha256=l8q-4jry-u1kxTBKrzWkjdwMu9MWRRKkZyxt0o2ciNM,18090
|
|
12
|
+
generated/exceptions.py,sha256=cKaX05hDYJ3bNnEmxvsVFscLebkSUMX8lru3DBkI6vg,6400
|
|
13
|
+
generated/rest.py,sha256=0q9rU4Oa8DCB9vNo4tVph3E7-OtB4RuwVjWTSBZEI8A,7207
|
|
14
|
+
generated/types.py,sha256=AmvnZJ1T4D4xLN6zt_9ogcPhE7KqkxF5fxANjb6IQGY,662
|
|
15
|
+
generated/api/__init__.py,sha256=OQ7i5hzANRJS0Qh-zpEeHgHtXXDIuiXZjXdzoXojX6Q,156
|
|
16
|
+
generated/api/brokers_api.py,sha256=bDrOaU2wh_Am9cp1cvjDWhod6297AxyBtJwAR4Voa8Y,203505
|
|
17
|
+
generated/api/company_api.py,sha256=atalIyQe2YdIQN_2azG8pdztt57IjSPz5LeXRWqRXF8,21989
|
|
18
|
+
generated/api/session_api.py,sha256=2brB5UEqksnn76u7Hjk6oai8LsRg2U2Aw6KwzRkdM6w,51087
|
|
19
|
+
generated/models/__init__.py,sha256=iCumamEDFeX27-aLESqThwk3O2r1FgKOyty-HxymmAk,8573
|
|
20
|
+
generated/models/account_status.py,sha256=I_BltolCAWxTm8IKUygS_UQzP0LIlujepnRXrYpzIIQ,685
|
|
21
|
+
generated/models/accountstatus0.py,sha256=vKlPl4DpKYyBP0iG14giI0NjlFOyExY3J17fFyIvFB8,4938
|
|
22
|
+
generated/models/accounttype.py,sha256=cqNr1iM7UoK5ZjDk9OM06ZQkz2N7W0D8mYfhHHwpzpY,4889
|
|
23
|
+
generated/models/assettype.py,sha256=wSYUbPl0TXQEnX9ehofjN3sj9-LCN9BrIfTQnyHt1_c,4719
|
|
24
|
+
generated/models/availablebalance.py,sha256=PrF0gyIzUtnFKtd64GOfGYxNOi3bKdWcpGrR7nVYbsc,4937
|
|
25
|
+
generated/models/availabletowithdraw.py,sha256=LJ9nG4jj1q118MiOb-NQYPXmb3Ycs2X4OfbDSkWiilA,4952
|
|
26
|
+
generated/models/averagebuyprice.py,sha256=FaFeqHtxXdJqYui6SSQD4LT2HU7-DF4yJg0sSZiliRU,4928
|
|
27
|
+
generated/models/averagefillprice.py,sha256=6WEK4xs--0-MHIIJ7GvQmDM8vuF9iycgWtNZrQWPkME,4941
|
|
28
|
+
generated/models/averagesellprice.py,sha256=xCj3JKyzPS1eZU5q5wfuFxpXggjd0sK1BwC0k3gS3jA,4934
|
|
29
|
+
generated/models/balancetype.py,sha256=NpMLcHTUYRegoQP7baMfBcT89O4I2-2HllFKZQpZxJg,4802
|
|
30
|
+
generated/models/broker_data_account_type_enum.py,sha256=8KSPHa6NXJeW8-pVPWJuRPoYs0s8nhMmru2WyVE-Zts,735
|
|
31
|
+
generated/models/broker_data_asset_type_enum.py,sha256=yJwgynojSowS35hMVzMaeRer5hDxoofeiDvqT5tiFfQ,825
|
|
32
|
+
generated/models/broker_data_order_side_enum.py,sha256=GvKuxANQ-Xe_4JRyy6Qw0UVGy-EO-WJTnie59tddwck,701
|
|
33
|
+
generated/models/broker_data_order_status_enum.py,sha256=z0wEN10Qi8AfF07jI62O3altLMy_1NKmn99tfkWjKNk,969
|
|
34
|
+
generated/models/broker_data_position_status_enum.py,sha256=p-ZAT-eGIr6FEFNlApB245aK9FOrDQ5f9mw_JuGP-G8,752
|
|
35
|
+
generated/models/broker_info.py,sha256=imxW5kFOhDKPtDXbOTjmcYcrA4Olxnvbyl3GGwqGpAE,4379
|
|
36
|
+
generated/models/buyingpower.py,sha256=r1xmqDRJGX0rMGtSck1UMGuQiPe_xLEj6XApkwqW2XM,4910
|
|
37
|
+
generated/models/cashbalance.py,sha256=vgKLoJfet4OEpI-xNwwtWtrtl4oTdlK5L9FyodXAMsU,4903
|
|
38
|
+
generated/models/closedquantity.py,sha256=3WlikPuJYxnjTTaWl_FNRs79aA6ZierZNnAh8P5XzEc,4819
|
|
39
|
+
generated/models/closepriceavg.py,sha256=iNwcPtg-vCcp_ZDbSrYWJssF1sKsImQzv4TIs7tcgmY,4920
|
|
40
|
+
generated/models/commission.py,sha256=zUdtIFXqdefvIQBsAI0EKsQ1AF6ZjKHyddWUDYn6HpU,4930
|
|
41
|
+
generated/models/commissionshare.py,sha256=ESyghsPK2q1BI0jast2KNplRyal_ozx7svXW6yKxeFU,4941
|
|
42
|
+
generated/models/company_response.py,sha256=pcgEcb-TXG_lN6BQEDB7vQ5c46_RoLNFbEawgRMTgsU,5100
|
|
43
|
+
generated/models/costbasis.py,sha256=QLz5e4o4Z3ABMLj9Oba8v92_bMcN8cxE2soT_TwVHHk,4897
|
|
44
|
+
generated/models/costbasis1.py,sha256=uVMfu8DjP0fTD-S83gRHS6sd9OTIatZebUDNW0efFdg,4798
|
|
45
|
+
generated/models/costbasiswithcommission.py,sha256=t-njCJ-VDjwPGB600C_TJRkU4lbqtZcrzoR_kvnvkdg,4978
|
|
46
|
+
generated/models/costbasiswithcommission1.py,sha256=Sq_sZD1Beb0GAdezpa7Vlra3Bru8zPY6bA1gfoefZLU,4881
|
|
47
|
+
generated/models/currentbalance.py,sha256=bOPDPm5CaJc5G8cfwTtlH3nrqEfpDk8aYjXBRzC0_WA,4929
|
|
48
|
+
generated/models/currentprice.py,sha256=7s2UPpGbOgaP56IEQu52IqBEVVxRHpRRT0cTRTMTa7I,4916
|
|
49
|
+
generated/models/disconnect_action_result.py,sha256=ijbQMKWGAl73K9gYdoeEFkm1_qewC0i828OhNuFWKMY,3552
|
|
50
|
+
generated/models/eventtype.py,sha256=AkxgyXOxpBwyu-3Dc-ZQerGwlpzJ7sit4-lyNIN2rPE,4795
|
|
51
|
+
generated/models/fdx_account_status.py,sha256=6ElOulHYytJBwSCpIhFUhHaJ2i-Hl_24FB8Mj1yVfHw,780
|
|
52
|
+
generated/models/fdx_account_type.py,sha256=v0xXfSzruRboEEb2fihg8yg3CQZ-dhSlHc9jYT7eASU,925
|
|
53
|
+
generated/models/fdx_asset_type.py,sha256=gntKHooRgh5hsMaj4JW3Jfcb-hu7cTV29U18v2Po7_c,789
|
|
54
|
+
generated/models/fdx_balance_type.py,sha256=k1LmEd-ALnRuTAJMxYVTxa7q9HwzPGho4vXNbL56s7s,1007
|
|
55
|
+
generated/models/fdx_broker_account.py,sha256=OB7B95U5JMLMx2ioTcgkiZG9cNS32Du8qlg2wq5bKro,12117
|
|
56
|
+
generated/models/fdx_broker_balance.py,sha256=XIVJAUemDZxETCRvrj8fPBA5aEdzmHjPYhBk1Y2m6qc,13899
|
|
57
|
+
generated/models/fdx_broker_order.py,sha256=4uaz3kyVvnCanPXj-abc46FRR74ima96gA6uea2verc,10094
|
|
58
|
+
generated/models/fdx_broker_order_event.py,sha256=3CpXKYHbfOtqNwxkhTa8SMG9Ae6tPmcmUi8vKRz6Ff0,9269
|
|
59
|
+
generated/models/fdx_broker_order_fill.py,sha256=j37YAo0M73FnpqwuXWpvIUdiCyH3312634qT2Fj3MGE,7788
|
|
60
|
+
generated/models/fdx_broker_order_group.py,sha256=jxYhoOMTV2VaL5XaLRhGDBprz9ifJXrAE1Dqp4C_o9w,6581
|
|
61
|
+
generated/models/fdx_broker_position.py,sha256=rHa5oys_uIUK46M5Jhor17k8RmddIZOHYRbJMaRovXY,18470
|
|
62
|
+
generated/models/fdx_broker_position_lot.py,sha256=nXQl29laoxwjUGcd1ekhpZO9kPnOTBkaDRaxmudlbmQ,11241
|
|
63
|
+
generated/models/fdx_broker_position_lot_fill.py,sha256=Sfbbx8BcXQFkvS8AvqrhkESf9nwKM6AFSReRzPeyFX4,5700
|
|
64
|
+
generated/models/fdx_order_class.py,sha256=Zii0CAArj6yozA1C4CYXAFNSi6oJsA9NuaRlDlG8SaA,806
|
|
65
|
+
generated/models/fdx_order_event_type.py,sha256=BbilZYx4a-FDjC8mx0eFgRi13AJu_-e5ErydAnEZ6yo,1249
|
|
66
|
+
generated/models/fdx_order_group_order.py,sha256=114QcFQ3KRAdhdUQK17QvuupdZnS5SDFZkg9E0-_Abc,4842
|
|
67
|
+
generated/models/fdx_order_group_type.py,sha256=n-b7byIdhwtGID6zIudpvZ_gSOq3yIYv4_DpKvV6j_E,769
|
|
68
|
+
generated/models/fdx_order_leg.py,sha256=-SeMoosVacrq4T-oezW049VVi2EmveU1PrtxSGmwySg,12839
|
|
69
|
+
generated/models/fdx_order_side.py,sha256=VQSwFw9nTKSrRJQPk3iD8F_0pFWG9Zv-o52X5QTQMWc,678
|
|
70
|
+
generated/models/fdx_order_status.py,sha256=H-P40sHSG8xY40YQLLkgc4dMJFGIfDD_QcW1cbKERXQ,924
|
|
71
|
+
generated/models/fdx_order_type.py,sha256=vkejg-RZ8hXxEtyJw6b3XZrOfncyjpYOEJ2hTgp0Va8,771
|
|
72
|
+
generated/models/fdx_position_side.py,sha256=vSeb-_0pswClv62HpAY9IDJm00P2cbd1QYyV_lHFTzo,691
|
|
73
|
+
generated/models/fdx_position_status.py,sha256=lY_t9cjCDYfEiuLhLRyDBDmRBASIIi-FQ9P-tpaPjA8,699
|
|
74
|
+
generated/models/fdx_security_id_type.py,sha256=LWp0WE0GdZeQb2if4onMYeeFA4oXmvQ4AT8cCVxvIGM,758
|
|
75
|
+
generated/models/fdx_time_in_force.py,sha256=wOzSiAnEMJQQLXUs0eEkGsFFzeVd1o4WmI7aAFRLnGY,731
|
|
76
|
+
generated/models/filledquantity.py,sha256=UAPA4BVelLdjQGgjWsLGNAP_SmsDkZ891y-vCxN-plw,4921
|
|
77
|
+
generated/models/fillprice.py,sha256=4oQLnlwtYj2zajObaCdc8kqm1ep30KTv_1bHt0yzB3U,4789
|
|
78
|
+
generated/models/fillquantity.py,sha256=8ZBQ6YXXo6HbzP7rQveyaj-rULOnLDJGP4tefmLnpPw,4807
|
|
79
|
+
generated/models/finatic_error.py,sha256=1N-YoI8cZAHH1wSPutB3Sav73-ic2qoBO-B4EQD_INI,3546
|
|
80
|
+
generated/models/finatic_response_company_response.py,sha256=qUllOdhrxlBF2kwu-0saY8HHHvRqfW-ggxTGfVMk04k,4368
|
|
81
|
+
generated/models/finatic_response_disconnect_action_result.py,sha256=dky_VdTS6tvsg-ZTNs3C8tuujEiZA4evQnSc1yHxRIU,4425
|
|
82
|
+
generated/models/finatic_response_list_broker_info.py,sha256=G09xs1QI5nozi0BXBJiQ1JLIq8o0jD7yXDU2okKaomg,4361
|
|
83
|
+
generated/models/finatic_response_list_fdx_broker_account.py,sha256=-YjsnepsWmTlo7qrRV8UmeYsFFRHeheNYTcK0TeBQk0,4410
|
|
84
|
+
generated/models/finatic_response_list_fdx_broker_balance.py,sha256=s4AEjdGtdGLERTXLy_oSiMS9qoi9xzZ-XocTrVH4ja8,4410
|
|
85
|
+
generated/models/finatic_response_list_fdx_broker_order.py,sha256=6-LspnGl4N7VWZjfvR-OitPJaITKiYcE1bhHQKsVdsE,4394
|
|
86
|
+
generated/models/finatic_response_list_fdx_broker_order_event.py,sha256=prEDPDnDjDPrN_wOZckHb7Ypcc24Suvd4wo8KZvpBp0,4435
|
|
87
|
+
generated/models/finatic_response_list_fdx_broker_order_fill.py,sha256=_GOkTDThIzHedVJg9K7jR-fsH7g1v0Gxh9ihZOHy-UA,4427
|
|
88
|
+
generated/models/finatic_response_list_fdx_broker_order_group.py,sha256=rZ649te-1EgANkBnDJbwy_icXRdUVGukaFsR04OlMgk,4435
|
|
89
|
+
generated/models/finatic_response_list_fdx_broker_position.py,sha256=xhzedqYCT5tFiQEwL7twC0rwMIhuDBMzuk1r8Y_m73Q,4418
|
|
90
|
+
generated/models/finatic_response_list_fdx_broker_position_lot.py,sha256=YuwZWzEGIQZZb119Bo3AfwL8zfCL0N3etOGSyoTjCBU,4443
|
|
91
|
+
generated/models/finatic_response_list_fdx_broker_position_lot_fill.py,sha256=PnWSkSf33P9jGxCDAKaE7zXCFhZXvLqAJIYwtqPJpC0,4476
|
|
92
|
+
generated/models/finatic_response_list_user_broker_connection_with_permissions.py,sha256=PcMEfI_TFUJFBRIPLbvlrMNLejECJybPMwwgLAVDrsE,4564
|
|
93
|
+
generated/models/finatic_response_portal_url_response.py,sha256=u1qIC1wPIgj9ky4uG6-2Fw26jtavau_DZ61Vg4yhqOA,4385
|
|
94
|
+
generated/models/finatic_response_session_response_data.py,sha256=w8rFDxDZzJQNiHRpOsGzO7KPAyDGrsoyrpf1E_m9paI,4401
|
|
95
|
+
generated/models/finatic_response_session_user_response.py,sha256=Fl2ddMHdFs9U6zoSIVuDWSAKkDqIBgpyZF2H-M8ycfE,4401
|
|
96
|
+
generated/models/finatic_response_token_response_data.py,sha256=dPVDnvpZFNS4dnIfndOB2E8qnzKz-4znILzYgLOAsso,4385
|
|
97
|
+
generated/models/futureunderlyingassettype.py,sha256=AeY6q45CUMdRxngb5F0Xfp3gwJHO1Pq71B_Rue2J5pY,4919
|
|
98
|
+
generated/models/grouptype.py,sha256=wIOnqwcPej0cxIv6unOOvMRyJmzTZ--7GK9sSXXmcBk,4937
|
|
99
|
+
generated/models/http_validation_error.py,sha256=gXTpLSUy2TVIU0ucqNkCQnzFeu_sJ-MudIXcTk5Ev18,3507
|
|
100
|
+
generated/models/initialmargin.py,sha256=QRSssTieRZ12KMCu7OtoIFA1z1trsimOYDzavsivSh4,4927
|
|
101
|
+
generated/models/limitprice.py,sha256=Zxz66r_ttObIEKNMneCeAD_aaciRVWqN2wB7QWS_SLo,4897
|
|
102
|
+
generated/models/maintenancemargin.py,sha256=12j4mXUlWv31zTH8NIfJNRb9emY2RCc55qwZnrBQaeQ,4951
|
|
103
|
+
generated/models/marketvalue.py,sha256=AZl7K3jDP683MHQHOTIl7dNKdPTB8bZFNn6BqeSpYmE,4911
|
|
104
|
+
generated/models/netliquidationvalue.py,sha256=w_SAjrzVSulJheCAv9XrBpjO7kCiUS9ScuIQHle-h7c,4952
|
|
105
|
+
generated/models/openprice.py,sha256=QGUMs7fbiGgcPi8GG55YBk-Q9oGvLOontlmlFC2AiVk,4793
|
|
106
|
+
generated/models/openquantity.py,sha256=FYl5gfwUGHXWFpuTWl3GeIVsg9g1svoIxV2F1CvUrcA,4815
|
|
107
|
+
generated/models/orderclass.py,sha256=Yxf2CJYctouzAbPHpHAUZDgsRt4E64R7C7Jt2oXRKyY,4876
|
|
108
|
+
generated/models/orderstatus.py,sha256=OGfb68Ou40s1_PN0kSDbBmJNOt2r_p6FYxwEMiGQC4Q,4880
|
|
109
|
+
generated/models/ordertype.py,sha256=PoQqDT5n7KTQ80xplkrlyLdZOb4hpwnHUEYqAv7SQWs,4849
|
|
110
|
+
generated/models/pendingbalance.py,sha256=cTpfDTE2apbxxxJR-6x_FN7ZbHrxcVrFa0B-S54h9xc,4926
|
|
111
|
+
generated/models/portal_url_response.py,sha256=-31Jh5rxP-KSHdZ74nQ1JXqvu65SXuU8EpqgSuSjkIM,3097
|
|
112
|
+
generated/models/previousstatus.py,sha256=QJFu2VDm9HA4pAHW15Q1miIEytxfd0AjOP0R2Imru3g,4899
|
|
113
|
+
generated/models/price.py,sha256=Mqxe_HcbLTywIt2pIZP-3_FbBUnbbmhs7Ea8Al0hqmA,4774
|
|
114
|
+
generated/models/quantity.py,sha256=ppAzDUJUYRBZX25KFbdLstGoxm4GfRSi0aDllqqTeq0,4792
|
|
115
|
+
generated/models/quantity1.py,sha256=Lznv9WOgUtGhTtK0fj9vw7mjFQtTWevEXpmyKJJLmGs,4832
|
|
116
|
+
generated/models/quantity2.py,sha256=geoaNm_fVdkQDGLIfQ5CXmqygGGJO_rHsuGemzrTbCs,4794
|
|
117
|
+
generated/models/realizedprofitloss.py,sha256=r-md0E-5aoapIL3QAg7BpDpUCma_39qqB0kcX1wZrqY,4946
|
|
118
|
+
generated/models/realizedprofitloss1.py,sha256=yUZdnPP_KOkiMWZqAwHruJuLFjwwrjtOBv8k5G6t3Xc,4849
|
|
119
|
+
generated/models/realizedprofitlosspercent.py,sha256=zIMw46i2SNx5oCbuiGoKe5fp-2wqa8XJQBWMGLvWU9I,4984
|
|
120
|
+
generated/models/realizedprofitlosswithcommission.py,sha256=AGuqeGwVspQNKV7ByVIbpM0gIs-89JwWlERq7l0Qf5k,5025
|
|
121
|
+
generated/models/realizedprofitlosswithcommission1.py,sha256=tfs9IJUrQLFZpzxqLF8uQg9zsObFAo33ELFP6A31OXo,4928
|
|
122
|
+
generated/models/remainingquantity.py,sha256=T0-HBvlm_ULJz6ekbLreJ6PK0DbXFGhowad99qXgVzg,4944
|
|
123
|
+
generated/models/remainingquantity1.py,sha256=CQRl6gGb4eAE8BUxbQLOuwQj6AAkdry2iGX0V85LYyE,4847
|
|
124
|
+
generated/models/securityidtype.py,sha256=Yz9wxiVzZc2EuynHd6_YPUQ08u1WE8bFkC4p6ePU3ng,4854
|
|
125
|
+
generated/models/session_response_data.py,sha256=1ds2K5xszSDSQv7gukugAN0pkosw17kyM2kK9ecquWo,3859
|
|
126
|
+
generated/models/session_start_request.py,sha256=0H2UOCTUUthLjzW3KhN9kQat-frziRynCVBdtisKtTs,3279
|
|
127
|
+
generated/models/session_status.py,sha256=9dvNB5lrkzXVvgP8R7gxqTzBo9W3QRdWr4TffFRUJE8,780
|
|
128
|
+
generated/models/session_user_response.py,sha256=ynQEx1o_-_tcrxqCqXDsE7-1cQFuFsklRQ55ZMJJI3M,4086
|
|
129
|
+
generated/models/side.py,sha256=yrg2jGlI9BGa0P3jKr8S-airPFS0AoAML7SXg2Bp0Aw,4706
|
|
130
|
+
generated/models/side1.py,sha256=Lgm7eYIDyfUtRYMoinZ_NQdx2R9zhez5xgqHELBzE2s,4863
|
|
131
|
+
generated/models/side2.py,sha256=myEbmTDTJwJOs3dJ-bmIeTckSpr0uWYb_Nz8YD5d-E8,4715
|
|
132
|
+
generated/models/side3.py,sha256=86Cgi_aoQbkv7Bs7RuiPrNuNeqLDkaEzAacQgnpQH_s,4858
|
|
133
|
+
generated/models/status.py,sha256=3e8NIjMdonGyR1zhDqNW59Hj8ITTbJmDOKy0-5s0JqQ,4736
|
|
134
|
+
generated/models/status1.py,sha256=WGwUH8Ib5RtPR2kBslo-yaIn2JKEzAXSJIMqmnHAZ-8,4906
|
|
135
|
+
generated/models/stopprice.py,sha256=MoSR_IkyRG2ozxzVbrf-fJPD9G1fB5w8DvKVmt0Y-rg,4891
|
|
136
|
+
generated/models/strikeprice.py,sha256=ZUt5BrJ8VEI2Ecy3XsCfWYzg2QJy4Xi0ZPMGzma9Sgg,4903
|
|
137
|
+
generated/models/success_payload_company_response.py,sha256=fnpqr-edmty8Gi1NgxX9Dz-mVkPkIXObBlzJ5oAJfE8,3949
|
|
138
|
+
generated/models/success_payload_disconnect_action_result.py,sha256=t3-291OleZ5YJ3iGdSMuLZYT4rf7GYRvgWf2W9z35Ts,4006
|
|
139
|
+
generated/models/success_payload_list_broker_info.py,sha256=cqNP8r4HQXoH4ailLQZCNOBHsm18ID5MgC6jl5kwD9k,4107
|
|
140
|
+
generated/models/success_payload_list_fdx_broker_account.py,sha256=YwXtc1P3Cb-qIhEhfFaZxNVXtrRQLf7_4Zhikw-roV4,4156
|
|
141
|
+
generated/models/success_payload_list_fdx_broker_balance.py,sha256=67oNGFKQqOnST2TlfuQNWzF3Ah3uBxqk0KZfuCgnYXo,4156
|
|
142
|
+
generated/models/success_payload_list_fdx_broker_order.py,sha256=Y8WI_hLxQiupB5uOoCNOPFHZLhDqdczEM6STYqQ4VJM,4140
|
|
143
|
+
generated/models/success_payload_list_fdx_broker_order_event.py,sha256=p5guZPUuIYjSqTo3Hex9zctEno1cTXh4-dckr7SEA9k,4181
|
|
144
|
+
generated/models/success_payload_list_fdx_broker_order_fill.py,sha256=lHrvM1xwBZGAgL0kvhI1BDRzsZfNFB98SKO0Z7MxmOI,4173
|
|
145
|
+
generated/models/success_payload_list_fdx_broker_order_group.py,sha256=Pn8wwiJPbeFZPzaOZ09tVIJECz9Vf4jWeeEXFp9VRio,4181
|
|
146
|
+
generated/models/success_payload_list_fdx_broker_position.py,sha256=fuvYmccn2MkCF9PSFpnQlmhCSJjT2Tr_qdQkEfgSBIA,4164
|
|
147
|
+
generated/models/success_payload_list_fdx_broker_position_lot.py,sha256=QcwSah05fPROLPGrcPqbaB895cYfG-9OY6PNSajTW6M,4189
|
|
148
|
+
generated/models/success_payload_list_fdx_broker_position_lot_fill.py,sha256=xRanttKbqWlxbMZPB043l73yp6ADMrxOxHNWTSazUGQ,4222
|
|
149
|
+
generated/models/success_payload_list_user_broker_connection_with_permissions.py,sha256=1ijT1nzRNS3sMx6CUFXsz56zE4cq73IfaEKfvN2R0Dw,4310
|
|
150
|
+
generated/models/success_payload_portal_url_response.py,sha256=_LD7XBLFGDsT6253OR39ww688rVxZOcR6pNdrch0Dzk,3966
|
|
151
|
+
generated/models/success_payload_session_response_data.py,sha256=hCUpbG3q6ZUNcU0-3fRIJNxPOk3G2Y-oaDm1J3jnf7c,3982
|
|
152
|
+
generated/models/success_payload_session_user_response.py,sha256=v2Wjkqdfr9VnX7Rd4L_eVhH_TLGHNlDJP_O3uIhbrnE,3982
|
|
153
|
+
generated/models/success_payload_token_response_data.py,sha256=0U092YSRy6dJmYugkrlbheihHxk5WyA-kcMPvMFJVMo,3966
|
|
154
|
+
generated/models/timeinforce.py,sha256=AVBGvDv_gAbHn1PuDyXk8fW5UT-g4sAFkvdGYPd8UkE,4891
|
|
155
|
+
generated/models/token_response_data.py,sha256=Uw-JyYFH1-ZswQJx6sWSSCBbV5OeY8H55c4-mv3ZgoY,3278
|
|
156
|
+
generated/models/totalcashvalue.py,sha256=8Uk9c69AhPwIvfpljuyu0wN4x2MTIxFs87uwUX1_ONw,4922
|
|
157
|
+
generated/models/totalrealizedpnl.py,sha256=JALWAonYmPqLztOEfZX5LNsritguhylaJVDu8KJcRpI,4964
|
|
158
|
+
generated/models/units.py,sha256=OKnVZ3AfwQQUPe1HqNir8HjF1RM6vAHJ6T4futNJQ18,4890
|
|
159
|
+
generated/models/unrealizedprofitloss.py,sha256=Z9ERXFBo55Xx_r5bZNalTPy_bi8w7BVhra4kLZzKTUE,4958
|
|
160
|
+
generated/models/unrealizedprofitlosspercent.py,sha256=b3fnGrCu9I7ZXKBIc154_c42Y6i-S_ahrsL4_MVCBMo,4996
|
|
161
|
+
generated/models/user_broker_connection_with_permissions.py,sha256=66fA647d8XAChWxVz86oG82OyzqXxbxzAiLig0PtBwk,5404
|
|
162
|
+
generated/models/validation_error.py,sha256=xRwAbOaDu6RlPc2r21icYpvlZoZ1m1Bdk55GdaB2zw4,3599
|
|
163
|
+
generated/models/validation_error_loc_inner.py,sha256=DDYQAlYzyN2AQogF9JI-9ylQ1xD5tewaP1RXMjrbgNU,4814
|
|
164
|
+
generated/utils/__init__.py,sha256=bV1jrD9d4qP9SERt7ftKWAgCz5l27PsJeyXss9KHJlM,1346
|
|
165
|
+
generated/utils/cache.py,sha256=Kdu3JOb0W6Qfl59rRUkOMPyYqi-DQu_QsozB5t7a50Y,1889
|
|
166
|
+
generated/utils/enum_coercion.py,sha256=jqY3zgA3irCjtlrERrRr9bXDqLvNBWlP26UtJBHkIgo,1965
|
|
167
|
+
generated/utils/error_handling.py,sha256=D5_6DqzPZ01xaeLdmLCTXHiKb5cXysBGI95rjtPKP2M,4168
|
|
168
|
+
generated/utils/interceptors.py,sha256=ZPO_Ib6JL9SGmxkfAn2GgVw-Me2cjEjfLw_DCjuGOkI,2709
|
|
169
|
+
generated/utils/logger.py,sha256=DWPzqeNwqdzAtJeq1jqduTiOXD4EPMlsrRWXgyRRuSM,2188
|
|
170
|
+
generated/utils/pagination.py,sha256=O4KZwIVcarUokxXGJlevK02bC43UXYV9Pl-DxyAtZt4,9691
|
|
171
|
+
generated/utils/plain_object.py,sha256=eKfWNsrN6aybVlYpjF-GtaX5YJG01ZakkevqnP4NCI0,2935
|
|
172
|
+
generated/utils/request_id.py,sha256=O_d8WEQnaLJgaHbGR5HZhhdgQ0djMNpTIi7mBONfhpc,201
|
|
173
|
+
generated/utils/retry.py,sha256=eWAXk0Y2iZRuTyduzr2_no41LMJLMh0XGw10yZuMZKs,3785
|
|
174
|
+
generated/utils/url_utils.py,sha256=Twv4F604Fqvyvttqa9cnuSUwkHPNAFOijQdPFhbVCBw,2538
|
|
175
|
+
generated/utils/validation.py,sha256=EOyaIDyhI_CgQZe7-_h9SrBI8KPNyV1PTiy4JjZKnWU,1303
|
|
176
|
+
generated/wrappers/__init__.py,sha256=qKfVNJFWu3TWcsSHsBd4wT9_ayvjzh6sxshkvMtluF4,289
|
|
177
|
+
generated/wrappers/brokers.py,sha256=x9Zc1-d0PkV5Po1h7E0CWCfFUcnV3RwPjvnKDd9houM,177155
|
|
178
|
+
generated/wrappers/company.py,sha256=tALDm0TDYWQbOdajK3ZXvU5W0nV-MMER641AMPEQwDs,14350
|
|
179
|
+
generated/wrappers/session.py,sha256=2n2p7QFa_UP6DbFLiA3EC6hw_lEhOSF8V9QBo1ylk-g,52316
|
|
180
|
+
finatic_server_python-0.9.1.dist-info/METADATA,sha256=qFEKojWuYaX80QpoflkcdcAmw7gmu0Kp4QAGR9rCl0M,10004
|
|
181
|
+
finatic_server_python-0.9.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
182
|
+
finatic_server_python-0.9.1.dist-info/licenses/LICENSE,sha256=hE35tOCe7uZCeYglYc-sjRSjad4jPyB3i53-QW1YfLk,3590
|
|
183
|
+
finatic_server_python-0.9.1.dist-info/RECORD,,
|