@finatic/client 0.9.0 → 0.9.2
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.
- package/CHANGELOG.md +16 -0
- package/LICENSE +39 -0
- package/README.md +188 -363
- package/dist/index.d.ts +7335 -1579
- package/dist/index.js +8124 -6102
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +8067 -6079
- package/dist/index.mjs.map +1 -1
- package/package.json +69 -33
- package/dist/custom/FinaticConnect.d.ts +0 -19
- package/dist/custom/FinaticConnect.d.ts.map +0 -1
- package/dist/custom/FinaticConnect.js +0 -24
- package/dist/custom/FinaticConnect.js.map +0 -1
- package/dist/custom/index.d.ts +0 -8
- package/dist/custom/index.d.ts.map +0 -1
- package/dist/custom/index.js +0 -20
- package/dist/custom/index.js.map +0 -1
- package/dist/custom/utils/logger-patch.d.ts +0 -13
- package/dist/custom/utils/logger-patch.d.ts.map +0 -1
- package/dist/custom/utils/logger-patch.js +0 -72
- package/dist/custom/utils/logger-patch.js.map +0 -1
- package/dist/custom/wrappers/brokers.d.ts +0 -17
- package/dist/custom/wrappers/brokers.d.ts.map +0 -1
- package/dist/custom/wrappers/brokers.js +0 -22
- package/dist/custom/wrappers/brokers.js.map +0 -1
- package/dist/custom/wrappers/market-data.d.ts +0 -13
- package/dist/custom/wrappers/market-data.d.ts.map +0 -1
- package/dist/custom/wrappers/market-data.js +0 -19
- package/dist/custom/wrappers/market-data.js.map +0 -1
- package/dist/custom/wrappers/session.d.ts +0 -16
- package/dist/custom/wrappers/session.d.ts.map +0 -1
- package/dist/custom/wrappers/session.js +0 -21
- package/dist/custom/wrappers/session.js.map +0 -1
- package/dist/generated/FinaticConnect.d.ts +0 -282
- package/dist/generated/FinaticConnect.d.ts.map +0 -1
- package/dist/generated/FinaticConnect.js +0 -890
- package/dist/generated/FinaticConnect.js.map +0 -1
- package/dist/generated/api/brokers-api.d.ts +0 -1126
- package/dist/generated/api/brokers-api.d.ts.map +0 -1
- package/dist/generated/api/brokers-api.js +0 -1430
- package/dist/generated/api/brokers-api.js.map +0 -1
- package/dist/generated/api/market-data-api.d.ts +0 -118
- package/dist/generated/api/market-data-api.d.ts.map +0 -1
- package/dist/generated/api/market-data-api.js +0 -155
- package/dist/generated/api/market-data-api.js.map +0 -1
- package/dist/generated/api/session-api.d.ts +0 -395
- package/dist/generated/api/session-api.d.ts.map +0 -1
- package/dist/generated/api/session-api.js +0 -577
- package/dist/generated/api/session-api.js.map +0 -1
- package/dist/generated/api.d.ts +0 -14
- package/dist/generated/api.d.ts.map +0 -1
- package/dist/generated/api.js +0 -31
- package/dist/generated/api.js.map +0 -1
- package/dist/generated/base.d.ts +0 -43
- package/dist/generated/base.d.ts.map +0 -1
- package/dist/generated/base.js +0 -48
- package/dist/generated/base.js.map +0 -1
- package/dist/generated/common.d.ts +0 -29
- package/dist/generated/common.d.ts.map +0 -1
- package/dist/generated/common.js +0 -110
- package/dist/generated/common.js.map +0 -1
- package/dist/generated/config.d.ts +0 -89
- package/dist/generated/config.d.ts.map +0 -1
- package/dist/generated/config.js +0 -85
- package/dist/generated/config.js.map +0 -1
- package/dist/generated/configuration.d.ts +0 -99
- package/dist/generated/configuration.d.ts.map +0 -1
- package/dist/generated/configuration.js +0 -50
- package/dist/generated/configuration.js.map +0 -1
- package/dist/generated/models/account-status.d.ts +0 -16
- package/dist/generated/models/account-status.d.ts.map +0 -1
- package/dist/generated/models/account-status.js +0 -22
- package/dist/generated/models/account-status.js.map +0 -1
- package/dist/generated/models/account-type.d.ts +0 -19
- package/dist/generated/models/account-type.d.ts.map +0 -1
- package/dist/generated/models/account-type.js +0 -25
- package/dist/generated/models/account-type.js.map +0 -1
- package/dist/generated/models/accountnumber.d.ts +0 -14
- package/dist/generated/models/accountnumber.d.ts.map +0 -1
- package/dist/generated/models/accountnumber.js +0 -16
- package/dist/generated/models/accountnumber.js.map +0 -1
- package/dist/generated/models/accounts.d.ts +0 -34
- package/dist/generated/models/accounts.d.ts.map +0 -1
- package/dist/generated/models/accounts.js +0 -16
- package/dist/generated/models/accounts.js.map +0 -1
- package/dist/generated/models/asset-type.d.ts +0 -18
- package/dist/generated/models/asset-type.d.ts.map +0 -1
- package/dist/generated/models/asset-type.js +0 -24
- package/dist/generated/models/asset-type.js.map +0 -1
- package/dist/generated/models/balances.d.ts +0 -28
- package/dist/generated/models/balances.d.ts.map +0 -1
- package/dist/generated/models/balances.js +0 -16
- package/dist/generated/models/balances.js.map +0 -1
- package/dist/generated/models/broker-connection-request.d.ts +0 -24
- package/dist/generated/models/broker-connection-request.d.ts.map +0 -1
- package/dist/generated/models/broker-connection-request.js +0 -16
- package/dist/generated/models/broker-connection-request.js.map +0 -1
- package/dist/generated/models/broker-connection-update-request.d.ts +0 -22
- package/dist/generated/models/broker-connection-update-request.d.ts.map +0 -1
- package/dist/generated/models/broker-connection-update-request.js +0 -16
- package/dist/generated/models/broker-connection-update-request.js.map +0 -1
- package/dist/generated/models/broker-info.d.ts +0 -29
- package/dist/generated/models/broker-info.d.ts.map +0 -1
- package/dist/generated/models/broker-info.js +0 -16
- package/dist/generated/models/broker-info.js.map +0 -1
- package/dist/generated/models/broker-permissions.d.ts +0 -25
- package/dist/generated/models/broker-permissions.d.ts.map +0 -1
- package/dist/generated/models/broker-permissions.js +0 -16
- package/dist/generated/models/broker-permissions.js.map +0 -1
- package/dist/generated/models/cancel-order-api-v1-brokers-orders-order-id-delete-request.d.ts +0 -26
- package/dist/generated/models/cancel-order-api-v1-brokers-orders-order-id-delete-request.d.ts.map +0 -1
- package/dist/generated/models/cancel-order-api-v1-brokers-orders-order-id-delete-request.js +0 -16
- package/dist/generated/models/cancel-order-api-v1-brokers-orders-order-id-delete-request.js.map +0 -1
- package/dist/generated/models/day-tif.d.ts +0 -21
- package/dist/generated/models/day-tif.d.ts.map +0 -1
- package/dist/generated/models/day-tif.js +0 -21
- package/dist/generated/models/day-tif.js.map +0 -1
- package/dist/generated/models/direct-auth-request.d.ts +0 -25
- package/dist/generated/models/direct-auth-request.d.ts.map +0 -1
- package/dist/generated/models/direct-auth-request.js +0 -16
- package/dist/generated/models/direct-auth-request.js.map +0 -1
- package/dist/generated/models/disconnect-action-result.d.ts +0 -20
- package/dist/generated/models/disconnect-action-result.d.ts.map +0 -1
- package/dist/generated/models/disconnect-action-result.js +0 -16
- package/dist/generated/models/disconnect-action-result.js.map +0 -1
- package/dist/generated/models/finatic-apiwarning.d.ts +0 -24
- package/dist/generated/models/finatic-apiwarning.d.ts.map +0 -1
- package/dist/generated/models/finatic-apiwarning.js +0 -16
- package/dist/generated/models/finatic-apiwarning.js.map +0 -1
- package/dist/generated/models/finatic-error.d.ts +0 -26
- package/dist/generated/models/finatic-error.d.ts.map +0 -1
- package/dist/generated/models/finatic-error.js +0 -16
- package/dist/generated/models/finatic-error.js.map +0 -1
- package/dist/generated/models/finatic-response-disconnect-action-result.d.ts +0 -38
- package/dist/generated/models/finatic-response-disconnect-action-result.d.ts.map +0 -1
- package/dist/generated/models/finatic-response-disconnect-action-result.js +0 -16
- package/dist/generated/models/finatic-response-disconnect-action-result.js.map +0 -1
- package/dist/generated/models/finatic-response-list-accounts.d.ts +0 -38
- package/dist/generated/models/finatic-response-list-accounts.d.ts.map +0 -1
- package/dist/generated/models/finatic-response-list-accounts.js +0 -16
- package/dist/generated/models/finatic-response-list-accounts.js.map +0 -1
- package/dist/generated/models/finatic-response-list-balances.d.ts +0 -38
- package/dist/generated/models/finatic-response-list-balances.d.ts.map +0 -1
- package/dist/generated/models/finatic-response-list-balances.js +0 -16
- package/dist/generated/models/finatic-response-list-balances.js.map +0 -1
- package/dist/generated/models/finatic-response-list-broker-info.d.ts +0 -38
- package/dist/generated/models/finatic-response-list-broker-info.d.ts.map +0 -1
- package/dist/generated/models/finatic-response-list-broker-info.js +0 -16
- package/dist/generated/models/finatic-response-list-broker-info.js.map +0 -1
- package/dist/generated/models/finatic-response-list-dict.d.ts +0 -41
- package/dist/generated/models/finatic-response-list-dict.d.ts.map +0 -1
- package/dist/generated/models/finatic-response-list-dict.js +0 -16
- package/dist/generated/models/finatic-response-list-dict.js.map +0 -1
- package/dist/generated/models/finatic-response-list-futures-historical-row.d.ts +0 -38
- package/dist/generated/models/finatic-response-list-futures-historical-row.d.ts.map +0 -1
- package/dist/generated/models/finatic-response-list-futures-historical-row.js +0 -16
- package/dist/generated/models/finatic-response-list-futures-historical-row.js.map +0 -1
- package/dist/generated/models/finatic-response-list-order-event-response.d.ts +0 -38
- package/dist/generated/models/finatic-response-list-order-event-response.d.ts.map +0 -1
- package/dist/generated/models/finatic-response-list-order-event-response.js +0 -16
- package/dist/generated/models/finatic-response-list-order-event-response.js.map +0 -1
- package/dist/generated/models/finatic-response-list-order-fill-response.d.ts +0 -38
- package/dist/generated/models/finatic-response-list-order-fill-response.d.ts.map +0 -1
- package/dist/generated/models/finatic-response-list-order-fill-response.js +0 -16
- package/dist/generated/models/finatic-response-list-order-fill-response.js.map +0 -1
- package/dist/generated/models/finatic-response-list-order-group-response.d.ts +0 -38
- package/dist/generated/models/finatic-response-list-order-group-response.d.ts.map +0 -1
- package/dist/generated/models/finatic-response-list-order-group-response.js +0 -16
- package/dist/generated/models/finatic-response-list-order-group-response.js.map +0 -1
- package/dist/generated/models/finatic-response-list-order-response.d.ts +0 -38
- package/dist/generated/models/finatic-response-list-order-response.d.ts.map +0 -1
- package/dist/generated/models/finatic-response-list-order-response.js +0 -16
- package/dist/generated/models/finatic-response-list-order-response.js.map +0 -1
- package/dist/generated/models/finatic-response-list-position-lot-fill-response.d.ts +0 -38
- package/dist/generated/models/finatic-response-list-position-lot-fill-response.d.ts.map +0 -1
- package/dist/generated/models/finatic-response-list-position-lot-fill-response.js +0 -16
- package/dist/generated/models/finatic-response-list-position-lot-fill-response.js.map +0 -1
- package/dist/generated/models/finatic-response-list-position-lot-response.d.ts +0 -38
- package/dist/generated/models/finatic-response-list-position-lot-response.d.ts.map +0 -1
- package/dist/generated/models/finatic-response-list-position-lot-response.js +0 -16
- package/dist/generated/models/finatic-response-list-position-lot-response.js.map +0 -1
- package/dist/generated/models/finatic-response-list-position-response.d.ts +0 -38
- package/dist/generated/models/finatic-response-list-position-response.d.ts.map +0 -1
- package/dist/generated/models/finatic-response-list-position-response.js +0 -16
- package/dist/generated/models/finatic-response-list-position-response.js.map +0 -1
- package/dist/generated/models/finatic-response-list-user-broker-connections.d.ts +0 -38
- package/dist/generated/models/finatic-response-list-user-broker-connections.d.ts.map +0 -1
- package/dist/generated/models/finatic-response-list-user-broker-connections.js +0 -16
- package/dist/generated/models/finatic-response-list-user-broker-connections.js.map +0 -1
- package/dist/generated/models/finatic-response-order-action-result.d.ts +0 -38
- package/dist/generated/models/finatic-response-order-action-result.d.ts.map +0 -1
- package/dist/generated/models/finatic-response-order-action-result.js +0 -16
- package/dist/generated/models/finatic-response-order-action-result.js.map +0 -1
- package/dist/generated/models/finatic-response-portal-url-response.d.ts +0 -18
- package/dist/generated/models/finatic-response-portal-url-response.d.ts.map +0 -1
- package/dist/generated/models/finatic-response-portal-url-response.js +0 -16
- package/dist/generated/models/finatic-response-portal-url-response.js.map +0 -1
- package/dist/generated/models/finatic-response-session-response-data.d.ts +0 -18
- package/dist/generated/models/finatic-response-session-response-data.d.ts.map +0 -1
- package/dist/generated/models/finatic-response-session-response-data.js +0 -16
- package/dist/generated/models/finatic-response-session-response-data.js.map +0 -1
- package/dist/generated/models/finatic-response-session-user-response.d.ts +0 -18
- package/dist/generated/models/finatic-response-session-user-response.d.ts.map +0 -1
- package/dist/generated/models/finatic-response-session-user-response.js +0 -16
- package/dist/generated/models/finatic-response-session-user-response.js.map +0 -1
- package/dist/generated/models/finatic-response-test-webhook-response.d.ts +0 -18
- package/dist/generated/models/finatic-response-test-webhook-response.d.ts.map +0 -1
- package/dist/generated/models/finatic-response-test-webhook-response.js +0 -16
- package/dist/generated/models/finatic-response-test-webhook-response.js.map +0 -1
- package/dist/generated/models/finatic-response-token-data.d.ts +0 -18
- package/dist/generated/models/finatic-response-token-data.d.ts.map +0 -1
- package/dist/generated/models/finatic-response-token-data.js +0 -16
- package/dist/generated/models/finatic-response-token-data.js.map +0 -1
- package/dist/generated/models/finatic-response-token-response-data.d.ts +0 -18
- package/dist/generated/models/finatic-response-token-response-data.d.ts.map +0 -1
- package/dist/generated/models/finatic-response-token-response-data.js +0 -16
- package/dist/generated/models/finatic-response-token-response-data.js.map +0 -1
- package/dist/generated/models/finatic-response-user-broker-connections.d.ts +0 -34
- package/dist/generated/models/finatic-response-user-broker-connections.d.ts.map +0 -1
- package/dist/generated/models/finatic-response-user-broker-connections.js +0 -16
- package/dist/generated/models/finatic-response-user-broker-connections.js.map +0 -1
- package/dist/generated/models/finaticapi-api-v1-routers-session-session-router-test-webhook-request.d.ts +0 -24
- package/dist/generated/models/finaticapi-api-v1-routers-session-session-router-test-webhook-request.d.ts.map +0 -1
- package/dist/generated/models/finaticapi-api-v1-routers-session-session-router-test-webhook-request.js +0 -16
- package/dist/generated/models/finaticapi-api-v1-routers-session-session-router-test-webhook-request.js.map +0 -1
- package/dist/generated/models/finaticapi-core-standard-models-abstract-responses-finatic-response.d.ts +0 -40
- package/dist/generated/models/finaticapi-core-standard-models-abstract-responses-finatic-response.d.ts.map +0 -1
- package/dist/generated/models/finaticapi-core-standard-models-abstract-responses-finatic-response.js +0 -16
- package/dist/generated/models/finaticapi-core-standard-models-abstract-responses-finatic-response.js.map +0 -1
- package/dist/generated/models/finaticapi-core-standard-models-finatic-response.d.ts +0 -20
- package/dist/generated/models/finaticapi-core-standard-models-finatic-response.d.ts.map +0 -1
- package/dist/generated/models/finaticapi-core-standard-models-finatic-response.js +0 -16
- package/dist/generated/models/finaticapi-core-standard-models-finatic-response.js.map +0 -1
- package/dist/generated/models/foktif.d.ts +0 -21
- package/dist/generated/models/foktif.d.ts.map +0 -1
- package/dist/generated/models/foktif.js +0 -21
- package/dist/generated/models/foktif.js.map +0 -1
- package/dist/generated/models/futures-historical-row.d.ts +0 -27
- package/dist/generated/models/futures-historical-row.d.ts.map +0 -1
- package/dist/generated/models/futures-historical-row.js +0 -16
- package/dist/generated/models/futures-historical-row.js.map +0 -1
- package/dist/generated/models/gtctif.d.ts +0 -21
- package/dist/generated/models/gtctif.d.ts.map +0 -1
- package/dist/generated/models/gtctif.js +0 -21
- package/dist/generated/models/gtctif.js.map +0 -1
- package/dist/generated/models/gtdtif.d.ts +0 -25
- package/dist/generated/models/gtdtif.d.ts.map +0 -1
- package/dist/generated/models/gtdtif.js +0 -21
- package/dist/generated/models/gtdtif.js.map +0 -1
- package/dist/generated/models/httpvalidation-error.d.ts +0 -16
- package/dist/generated/models/httpvalidation-error.d.ts.map +0 -1
- package/dist/generated/models/httpvalidation-error.js +0 -16
- package/dist/generated/models/httpvalidation-error.js.map +0 -1
- package/dist/generated/models/index.d.ts +0 -108
- package/dist/generated/models/index.d.ts.map +0 -1
- package/dist/generated/models/index.js +0 -125
- package/dist/generated/models/index.js.map +0 -1
- package/dist/generated/models/ioctif.d.ts +0 -21
- package/dist/generated/models/ioctif.d.ts.map +0 -1
- package/dist/generated/models/ioctif.js +0 -21
- package/dist/generated/models/ioctif.js.map +0 -1
- package/dist/generated/models/limit-order-modify-query-params.d.ts +0 -32
- package/dist/generated/models/limit-order-modify-query-params.d.ts.map +0 -1
- package/dist/generated/models/limit-order-modify-query-params.js +0 -21
- package/dist/generated/models/limit-order-modify-query-params.js.map +0 -1
- package/dist/generated/models/market-order-modify-query-params.d.ts +0 -31
- package/dist/generated/models/market-order-modify-query-params.d.ts.map +0 -1
- package/dist/generated/models/market-order-modify-query-params.js +0 -21
- package/dist/generated/models/market-order-modify-query-params.js.map +0 -1
- package/dist/generated/models/modify-order-api-v1-brokers-orders-order-id-patch-request.d.ts +0 -26
- package/dist/generated/models/modify-order-api-v1-brokers-orders-order-id-patch-request.d.ts.map +0 -1
- package/dist/generated/models/modify-order-api-v1-brokers-orders-order-id-patch-request.js +0 -16
- package/dist/generated/models/modify-order-api-v1-brokers-orders-order-id-patch-request.js.map +0 -1
- package/dist/generated/models/ninja-trader-limit-order-modify-query-params.d.ts +0 -38
- package/dist/generated/models/ninja-trader-limit-order-modify-query-params.d.ts.map +0 -1
- package/dist/generated/models/ninja-trader-limit-order-modify-query-params.js +0 -21
- package/dist/generated/models/ninja-trader-limit-order-modify-query-params.js.map +0 -1
- package/dist/generated/models/ninja-trader-limit-order-place-query-params.d.ts +0 -44
- package/dist/generated/models/ninja-trader-limit-order-place-query-params.d.ts.map +0 -1
- package/dist/generated/models/ninja-trader-limit-order-place-query-params.js +0 -30
- package/dist/generated/models/ninja-trader-limit-order-place-query-params.js.map +0 -1
- package/dist/generated/models/ninja-trader-market-order-modify-query-params.d.ts +0 -37
- package/dist/generated/models/ninja-trader-market-order-modify-query-params.d.ts.map +0 -1
- package/dist/generated/models/ninja-trader-market-order-modify-query-params.js +0 -21
- package/dist/generated/models/ninja-trader-market-order-modify-query-params.js.map +0 -1
- package/dist/generated/models/ninja-trader-market-order-place-query-params.d.ts +0 -43
- package/dist/generated/models/ninja-trader-market-order-place-query-params.d.ts.map +0 -1
- package/dist/generated/models/ninja-trader-market-order-place-query-params.js +0 -30
- package/dist/generated/models/ninja-trader-market-order-place-query-params.js.map +0 -1
- package/dist/generated/models/ninja-trader-order-cancel-query-params.d.ts +0 -26
- package/dist/generated/models/ninja-trader-order-cancel-query-params.d.ts.map +0 -1
- package/dist/generated/models/ninja-trader-order-cancel-query-params.js +0 -16
- package/dist/generated/models/ninja-trader-order-cancel-query-params.js.map +0 -1
- package/dist/generated/models/ninja-trader-order-cancel-request.d.ts +0 -21
- package/dist/generated/models/ninja-trader-order-cancel-request.d.ts.map +0 -1
- package/dist/generated/models/ninja-trader-order-cancel-request.js +0 -21
- package/dist/generated/models/ninja-trader-order-cancel-request.js.map +0 -1
- package/dist/generated/models/ninja-trader-order-modify-request.d.ts +0 -21
- package/dist/generated/models/ninja-trader-order-modify-request.d.ts.map +0 -1
- package/dist/generated/models/ninja-trader-order-modify-request.js +0 -21
- package/dist/generated/models/ninja-trader-order-modify-request.js.map +0 -1
- package/dist/generated/models/ninja-trader-order-place-request.d.ts +0 -24
- package/dist/generated/models/ninja-trader-order-place-request.d.ts.map +0 -1
- package/dist/generated/models/ninja-trader-order-place-request.js +0 -21
- package/dist/generated/models/ninja-trader-order-place-request.js.map +0 -1
- package/dist/generated/models/ninja-trader-stop-order-modify-query-params.d.ts +0 -38
- package/dist/generated/models/ninja-trader-stop-order-modify-query-params.d.ts.map +0 -1
- package/dist/generated/models/ninja-trader-stop-order-modify-query-params.js +0 -21
- package/dist/generated/models/ninja-trader-stop-order-modify-query-params.js.map +0 -1
- package/dist/generated/models/ninja-trader-stop-order-place-query-params.d.ts +0 -44
- package/dist/generated/models/ninja-trader-stop-order-place-query-params.d.ts.map +0 -1
- package/dist/generated/models/ninja-trader-stop-order-place-query-params.js +0 -30
- package/dist/generated/models/ninja-trader-stop-order-place-query-params.js.map +0 -1
- package/dist/generated/models/ninja-trader-trailing-stop-order-modify-query-params.d.ts +0 -38
- package/dist/generated/models/ninja-trader-trailing-stop-order-modify-query-params.d.ts.map +0 -1
- package/dist/generated/models/ninja-trader-trailing-stop-order-modify-query-params.js +0 -21
- package/dist/generated/models/ninja-trader-trailing-stop-order-modify-query-params.js.map +0 -1
- package/dist/generated/models/ninja-trader-trailing-stop-order-place-query-params.d.ts +0 -44
- package/dist/generated/models/ninja-trader-trailing-stop-order-place-query-params.d.ts.map +0 -1
- package/dist/generated/models/ninja-trader-trailing-stop-order-place-query-params.js +0 -30
- package/dist/generated/models/ninja-trader-trailing-stop-order-place-query-params.js.map +0 -1
- package/dist/generated/models/order-action-result.d.ts +0 -21
- package/dist/generated/models/order-action-result.d.ts.map +0 -1
- package/dist/generated/models/order-action-result.js +0 -16
- package/dist/generated/models/order-action-result.js.map +0 -1
- package/dist/generated/models/order-cancel-query-params.d.ts +0 -22
- package/dist/generated/models/order-cancel-query-params.d.ts.map +0 -1
- package/dist/generated/models/order-cancel-query-params.js +0 -16
- package/dist/generated/models/order-cancel-query-params.js.map +0 -1
- package/dist/generated/models/order-event-response.d.ts +0 -25
- package/dist/generated/models/order-event-response.d.ts.map +0 -1
- package/dist/generated/models/order-event-response.js +0 -16
- package/dist/generated/models/order-event-response.js.map +0 -1
- package/dist/generated/models/order-fill-response.d.ts +0 -24
- package/dist/generated/models/order-fill-response.d.ts.map +0 -1
- package/dist/generated/models/order-fill-response.js +0 -16
- package/dist/generated/models/order-fill-response.js.map +0 -1
- package/dist/generated/models/order-group-order.d.ts +0 -24
- package/dist/generated/models/order-group-order.d.ts.map +0 -1
- package/dist/generated/models/order-group-order.js +0 -16
- package/dist/generated/models/order-group-order.js.map +0 -1
- package/dist/generated/models/order-group-response.d.ts +0 -24
- package/dist/generated/models/order-group-response.d.ts.map +0 -1
- package/dist/generated/models/order-group-response.js +0 -16
- package/dist/generated/models/order-group-response.js.map +0 -1
- package/dist/generated/models/order-leg.d.ts +0 -22
- package/dist/generated/models/order-leg.d.ts.map +0 -1
- package/dist/generated/models/order-leg.js +0 -16
- package/dist/generated/models/order-leg.js.map +0 -1
- package/dist/generated/models/order-response.d.ts +0 -27
- package/dist/generated/models/order-response.d.ts.map +0 -1
- package/dist/generated/models/order-response.js +0 -16
- package/dist/generated/models/order-response.js.map +0 -1
- package/dist/generated/models/order-side.d.ts +0 -16
- package/dist/generated/models/order-side.d.ts.map +0 -1
- package/dist/generated/models/order-side.js +0 -22
- package/dist/generated/models/order-side.js.map +0 -1
- package/dist/generated/models/order-status.d.ts +0 -23
- package/dist/generated/models/order-status.d.ts.map +0 -1
- package/dist/generated/models/order-status.js +0 -29
- package/dist/generated/models/order-status.js.map +0 -1
- package/dist/generated/models/order.d.ts +0 -28
- package/dist/generated/models/order.d.ts.map +0 -1
- package/dist/generated/models/order.js +0 -16
- package/dist/generated/models/order.js.map +0 -1
- package/dist/generated/models/order1.d.ts +0 -28
- package/dist/generated/models/order1.d.ts.map +0 -1
- package/dist/generated/models/order1.js +0 -16
- package/dist/generated/models/order1.js.map +0 -1
- package/dist/generated/models/order2.d.ts +0 -28
- package/dist/generated/models/order2.d.ts.map +0 -1
- package/dist/generated/models/order2.js +0 -16
- package/dist/generated/models/order2.js.map +0 -1
- package/dist/generated/models/order3.d.ts +0 -28
- package/dist/generated/models/order3.d.ts.map +0 -1
- package/dist/generated/models/order3.js +0 -16
- package/dist/generated/models/order3.js.map +0 -1
- package/dist/generated/models/order4.d.ts +0 -28
- package/dist/generated/models/order4.d.ts.map +0 -1
- package/dist/generated/models/order4.js +0 -16
- package/dist/generated/models/order4.js.map +0 -1
- package/dist/generated/models/order5.d.ts +0 -28
- package/dist/generated/models/order5.d.ts.map +0 -1
- package/dist/generated/models/order5.js +0 -16
- package/dist/generated/models/order5.js.map +0 -1
- package/dist/generated/models/place-order-api-v1-brokers-orders-post-request.d.ts +0 -26
- package/dist/generated/models/place-order-api-v1-brokers-orders-post-request.d.ts.map +0 -1
- package/dist/generated/models/place-order-api-v1-brokers-orders-post-request.js +0 -16
- package/dist/generated/models/place-order-api-v1-brokers-orders-post-request.js.map +0 -1
- package/dist/generated/models/portal-url-response.d.ts +0 -21
- package/dist/generated/models/portal-url-response.d.ts.map +0 -1
- package/dist/generated/models/portal-url-response.js +0 -16
- package/dist/generated/models/portal-url-response.js.map +0 -1
- package/dist/generated/models/position-lot-fill-response.d.ts +0 -23
- package/dist/generated/models/position-lot-fill-response.d.ts.map +0 -1
- package/dist/generated/models/position-lot-fill-response.js +0 -16
- package/dist/generated/models/position-lot-fill-response.js.map +0 -1
- package/dist/generated/models/position-lot-response.d.ts +0 -27
- package/dist/generated/models/position-lot-response.d.ts.map +0 -1
- package/dist/generated/models/position-lot-response.js +0 -16
- package/dist/generated/models/position-lot-response.js.map +0 -1
- package/dist/generated/models/position-response.d.ts +0 -62
- package/dist/generated/models/position-response.d.ts.map +0 -1
- package/dist/generated/models/position-response.js +0 -16
- package/dist/generated/models/position-response.js.map +0 -1
- package/dist/generated/models/position-status.d.ts +0 -16
- package/dist/generated/models/position-status.d.ts.map +0 -1
- package/dist/generated/models/position-status.js +0 -22
- package/dist/generated/models/position-status.js.map +0 -1
- package/dist/generated/models/public-account-type-enum.d.ts +0 -17
- package/dist/generated/models/public-account-type-enum.d.ts.map +0 -1
- package/dist/generated/models/public-account-type-enum.js +0 -23
- package/dist/generated/models/public-account-type-enum.js.map +0 -1
- package/dist/generated/models/public-asset-type-enum.d.ts +0 -20
- package/dist/generated/models/public-asset-type-enum.d.ts.map +0 -1
- package/dist/generated/models/public-asset-type-enum.js +0 -26
- package/dist/generated/models/public-asset-type-enum.js.map +0 -1
- package/dist/generated/models/public-connection-status-enum.d.ts +0 -20
- package/dist/generated/models/public-connection-status-enum.d.ts.map +0 -1
- package/dist/generated/models/public-connection-status-enum.js +0 -26
- package/dist/generated/models/public-connection-status-enum.js.map +0 -1
- package/dist/generated/models/public-order-side-enum.d.ts +0 -16
- package/dist/generated/models/public-order-side-enum.d.ts.map +0 -1
- package/dist/generated/models/public-order-side-enum.js +0 -22
- package/dist/generated/models/public-order-side-enum.js.map +0 -1
- package/dist/generated/models/public-order-status-enum.d.ts +0 -24
- package/dist/generated/models/public-order-status-enum.d.ts.map +0 -1
- package/dist/generated/models/public-order-status-enum.js +0 -30
- package/dist/generated/models/public-order-status-enum.js.map +0 -1
- package/dist/generated/models/public-position-status-enum.d.ts +0 -17
- package/dist/generated/models/public-position-status-enum.d.ts.map +0 -1
- package/dist/generated/models/public-position-status-enum.js +0 -23
- package/dist/generated/models/public-position-status-enum.js.map +0 -1
- package/dist/generated/models/robinhood-limit-order-place-query-params.d.ts +0 -37
- package/dist/generated/models/robinhood-limit-order-place-query-params.d.ts.map +0 -1
- package/dist/generated/models/robinhood-limit-order-place-query-params.js +0 -30
- package/dist/generated/models/robinhood-limit-order-place-query-params.js.map +0 -1
- package/dist/generated/models/robinhood-market-order-place-query-params.d.ts +0 -36
- package/dist/generated/models/robinhood-market-order-place-query-params.d.ts.map +0 -1
- package/dist/generated/models/robinhood-market-order-place-query-params.js +0 -30
- package/dist/generated/models/robinhood-market-order-place-query-params.js.map +0 -1
- package/dist/generated/models/robinhood-order-cancel-request.d.ts +0 -21
- package/dist/generated/models/robinhood-order-cancel-request.d.ts.map +0 -1
- package/dist/generated/models/robinhood-order-cancel-request.js +0 -21
- package/dist/generated/models/robinhood-order-cancel-request.js.map +0 -1
- package/dist/generated/models/robinhood-order-modify-request.d.ts +0 -21
- package/dist/generated/models/robinhood-order-modify-request.d.ts.map +0 -1
- package/dist/generated/models/robinhood-order-modify-request.js +0 -21
- package/dist/generated/models/robinhood-order-modify-request.js.map +0 -1
- package/dist/generated/models/robinhood-order-place-request.d.ts +0 -24
- package/dist/generated/models/robinhood-order-place-request.d.ts.map +0 -1
- package/dist/generated/models/robinhood-order-place-request.js +0 -21
- package/dist/generated/models/robinhood-order-place-request.js.map +0 -1
- package/dist/generated/models/robinhood-stop-order-place-query-params.d.ts +0 -37
- package/dist/generated/models/robinhood-stop-order-place-query-params.d.ts.map +0 -1
- package/dist/generated/models/robinhood-stop-order-place-query-params.js +0 -30
- package/dist/generated/models/robinhood-stop-order-place-query-params.js.map +0 -1
- package/dist/generated/models/robinhood-trailing-stop-order-place-query-params.d.ts +0 -37
- package/dist/generated/models/robinhood-trailing-stop-order-place-query-params.d.ts.map +0 -1
- package/dist/generated/models/robinhood-trailing-stop-order-place-query-params.js +0 -30
- package/dist/generated/models/robinhood-trailing-stop-order-place-query-params.js.map +0 -1
- package/dist/generated/models/session-link-request.d.ts +0 -19
- package/dist/generated/models/session-link-request.d.ts.map +0 -1
- package/dist/generated/models/session-link-request.js +0 -16
- package/dist/generated/models/session-link-request.js.map +0 -1
- package/dist/generated/models/session-response-data.d.ts +0 -39
- package/dist/generated/models/session-response-data.d.ts.map +0 -1
- package/dist/generated/models/session-response-data.js +0 -16
- package/dist/generated/models/session-response-data.js.map +0 -1
- package/dist/generated/models/session-start-request.d.ts +0 -18
- package/dist/generated/models/session-start-request.d.ts.map +0 -1
- package/dist/generated/models/session-start-request.js +0 -16
- package/dist/generated/models/session-start-request.js.map +0 -1
- package/dist/generated/models/session-status.d.ts +0 -22
- package/dist/generated/models/session-status.d.ts.map +0 -1
- package/dist/generated/models/session-status.js +0 -28
- package/dist/generated/models/session-status.js.map +0 -1
- package/dist/generated/models/session-user-response.d.ts +0 -45
- package/dist/generated/models/session-user-response.d.ts.map +0 -1
- package/dist/generated/models/session-user-response.js +0 -16
- package/dist/generated/models/session-user-response.js.map +0 -1
- package/dist/generated/models/stop-order-modify-query-params.d.ts +0 -32
- package/dist/generated/models/stop-order-modify-query-params.d.ts.map +0 -1
- package/dist/generated/models/stop-order-modify-query-params.js +0 -21
- package/dist/generated/models/stop-order-modify-query-params.js.map +0 -1
- package/dist/generated/models/tasty-trade-limit-order-modify-query-params.d.ts +0 -38
- package/dist/generated/models/tasty-trade-limit-order-modify-query-params.d.ts.map +0 -1
- package/dist/generated/models/tasty-trade-limit-order-modify-query-params.js +0 -21
- package/dist/generated/models/tasty-trade-limit-order-modify-query-params.js.map +0 -1
- package/dist/generated/models/tasty-trade-limit-order-place-query-params.d.ts +0 -55
- package/dist/generated/models/tasty-trade-limit-order-place-query-params.d.ts.map +0 -1
- package/dist/generated/models/tasty-trade-limit-order-place-query-params.js +0 -40
- package/dist/generated/models/tasty-trade-limit-order-place-query-params.js.map +0 -1
- package/dist/generated/models/tasty-trade-market-order-modify-query-params.d.ts +0 -37
- package/dist/generated/models/tasty-trade-market-order-modify-query-params.d.ts.map +0 -1
- package/dist/generated/models/tasty-trade-market-order-modify-query-params.js +0 -21
- package/dist/generated/models/tasty-trade-market-order-modify-query-params.js.map +0 -1
- package/dist/generated/models/tasty-trade-market-order-place-query-params.d.ts +0 -54
- package/dist/generated/models/tasty-trade-market-order-place-query-params.d.ts.map +0 -1
- package/dist/generated/models/tasty-trade-market-order-place-query-params.js +0 -40
- package/dist/generated/models/tasty-trade-market-order-place-query-params.js.map +0 -1
- package/dist/generated/models/tasty-trade-order-cancel-query-params.d.ts +0 -26
- package/dist/generated/models/tasty-trade-order-cancel-query-params.d.ts.map +0 -1
- package/dist/generated/models/tasty-trade-order-cancel-query-params.js +0 -16
- package/dist/generated/models/tasty-trade-order-cancel-query-params.js.map +0 -1
- package/dist/generated/models/tasty-trade-order-cancel-request.d.ts +0 -21
- package/dist/generated/models/tasty-trade-order-cancel-request.d.ts.map +0 -1
- package/dist/generated/models/tasty-trade-order-cancel-request.js +0 -21
- package/dist/generated/models/tasty-trade-order-cancel-request.js.map +0 -1
- package/dist/generated/models/tasty-trade-order-modify-request.d.ts +0 -21
- package/dist/generated/models/tasty-trade-order-modify-request.d.ts.map +0 -1
- package/dist/generated/models/tasty-trade-order-modify-request.js +0 -21
- package/dist/generated/models/tasty-trade-order-modify-request.js.map +0 -1
- package/dist/generated/models/tasty-trade-order-place-request.d.ts +0 -24
- package/dist/generated/models/tasty-trade-order-place-request.d.ts.map +0 -1
- package/dist/generated/models/tasty-trade-order-place-request.js +0 -21
- package/dist/generated/models/tasty-trade-order-place-request.js.map +0 -1
- package/dist/generated/models/tasty-trade-stop-order-modify-query-params.d.ts +0 -38
- package/dist/generated/models/tasty-trade-stop-order-modify-query-params.d.ts.map +0 -1
- package/dist/generated/models/tasty-trade-stop-order-modify-query-params.js +0 -21
- package/dist/generated/models/tasty-trade-stop-order-modify-query-params.js.map +0 -1
- package/dist/generated/models/tasty-trade-stop-order-place-query-params.d.ts +0 -55
- package/dist/generated/models/tasty-trade-stop-order-place-query-params.d.ts.map +0 -1
- package/dist/generated/models/tasty-trade-stop-order-place-query-params.js +0 -40
- package/dist/generated/models/tasty-trade-stop-order-place-query-params.js.map +0 -1
- package/dist/generated/models/tasty-trade-trailing-stop-order-modify-query-params.d.ts +0 -38
- package/dist/generated/models/tasty-trade-trailing-stop-order-modify-query-params.d.ts.map +0 -1
- package/dist/generated/models/tasty-trade-trailing-stop-order-modify-query-params.js +0 -21
- package/dist/generated/models/tasty-trade-trailing-stop-order-modify-query-params.js.map +0 -1
- package/dist/generated/models/tasty-trade-trailing-stop-order-place-query-params.d.ts +0 -55
- package/dist/generated/models/tasty-trade-trailing-stop-order-place-query-params.d.ts.map +0 -1
- package/dist/generated/models/tasty-trade-trailing-stop-order-place-query-params.js +0 -40
- package/dist/generated/models/tasty-trade-trailing-stop-order-place-query-params.js.map +0 -1
- package/dist/generated/models/test-webhook-response.d.ts +0 -35
- package/dist/generated/models/test-webhook-response.d.ts.map +0 -1
- package/dist/generated/models/test-webhook-response.js +0 -16
- package/dist/generated/models/test-webhook-response.js.map +0 -1
- package/dist/generated/models/timeinforce.d.ts +0 -31
- package/dist/generated/models/timeinforce.d.ts.map +0 -1
- package/dist/generated/models/timeinforce.js +0 -16
- package/dist/generated/models/timeinforce.js.map +0 -1
- package/dist/generated/models/token-data.d.ts +0 -45
- package/dist/generated/models/token-data.d.ts.map +0 -1
- package/dist/generated/models/token-data.js +0 -16
- package/dist/generated/models/token-data.js.map +0 -1
- package/dist/generated/models/token-response-data.d.ts +0 -25
- package/dist/generated/models/token-response-data.d.ts.map +0 -1
- package/dist/generated/models/token-response-data.js +0 -16
- package/dist/generated/models/token-response-data.js.map +0 -1
- package/dist/generated/models/trailing-stop-order-modify-query-params.d.ts +0 -32
- package/dist/generated/models/trailing-stop-order-modify-query-params.d.ts.map +0 -1
- package/dist/generated/models/trailing-stop-order-modify-query-params.js +0 -21
- package/dist/generated/models/trailing-stop-order-modify-query-params.js.map +0 -1
- package/dist/generated/models/user-broker-connections.d.ts +0 -28
- package/dist/generated/models/user-broker-connections.d.ts.map +0 -1
- package/dist/generated/models/user-broker-connections.js +0 -16
- package/dist/generated/models/user-broker-connections.js.map +0 -1
- package/dist/generated/models/validation-error-loc-inner.d.ts +0 -14
- package/dist/generated/models/validation-error-loc-inner.d.ts.map +0 -1
- package/dist/generated/models/validation-error-loc-inner.js +0 -16
- package/dist/generated/models/validation-error-loc-inner.js.map +0 -1
- package/dist/generated/models/validation-error.d.ts +0 -18
- package/dist/generated/models/validation-error.d.ts.map +0 -1
- package/dist/generated/models/validation-error.js +0 -16
- package/dist/generated/models/validation-error.js.map +0 -1
- package/dist/generated/portal/PortalUI.d.ts +0 -28
- package/dist/generated/portal/PortalUI.d.ts.map +0 -1
- package/dist/generated/portal/PortalUI.js +0 -139
- package/dist/generated/portal/PortalUI.js.map +0 -1
- package/dist/generated/utils/cache.d.ts +0 -16
- package/dist/generated/utils/cache.d.ts.map +0 -1
- package/dist/generated/utils/cache.js +0 -56
- package/dist/generated/utils/cache.js.map +0 -1
- package/dist/generated/utils/enum-coercion.d.ts +0 -24
- package/dist/generated/utils/enum-coercion.d.ts.map +0 -1
- package/dist/generated/utils/enum-coercion.js +0 -49
- package/dist/generated/utils/enum-coercion.js.map +0 -1
- package/dist/generated/utils/error-handling.d.ts +0 -35
- package/dist/generated/utils/error-handling.d.ts.map +0 -1
- package/dist/generated/utils/error-handling.js +0 -75
- package/dist/generated/utils/error-handling.js.map +0 -1
- package/dist/generated/utils/events.d.ts +0 -18
- package/dist/generated/utils/events.d.ts.map +0 -1
- package/dist/generated/utils/events.js +0 -60
- package/dist/generated/utils/events.js.map +0 -1
- package/dist/generated/utils/index.d.ts +0 -17
- package/dist/generated/utils/index.d.ts.map +0 -1
- package/dist/generated/utils/index.js +0 -33
- package/dist/generated/utils/index.js.map +0 -1
- package/dist/generated/utils/interceptors.d.ts +0 -40
- package/dist/generated/utils/interceptors.d.ts.map +0 -1
- package/dist/generated/utils/interceptors.js +0 -76
- package/dist/generated/utils/interceptors.js.map +0 -1
- package/dist/generated/utils/logger.d.ts +0 -21
- package/dist/generated/utils/logger.d.ts.map +0 -1
- package/dist/generated/utils/logger.js +0 -292
- package/dist/generated/utils/logger.js.map +0 -1
- package/dist/generated/utils/plain-object.d.ts +0 -22
- package/dist/generated/utils/plain-object.d.ts.map +0 -1
- package/dist/generated/utils/plain-object.js +0 -51
- package/dist/generated/utils/plain-object.js.map +0 -1
- package/dist/generated/utils/request-id.d.ts +0 -10
- package/dist/generated/utils/request-id.d.ts.map +0 -1
- package/dist/generated/utils/request-id.js +0 -24
- package/dist/generated/utils/request-id.js.map +0 -1
- package/dist/generated/utils/retry.d.ts +0 -20
- package/dist/generated/utils/retry.d.ts.map +0 -1
- package/dist/generated/utils/retry.js +0 -83
- package/dist/generated/utils/retry.js.map +0 -1
- package/dist/generated/utils/url-utils.d.ts +0 -23
- package/dist/generated/utils/url-utils.d.ts.map +0 -1
- package/dist/generated/utils/url-utils.js +0 -64
- package/dist/generated/utils/url-utils.js.map +0 -1
- package/dist/generated/utils/validation.d.ts +0 -20
- package/dist/generated/utils/validation.d.ts.map +0 -1
- package/dist/generated/utils/validation.js +0 -103
- package/dist/generated/utils/validation.js.map +0 -1
- package/dist/generated/wrappers/brokers.d.ts +0 -1107
- package/dist/generated/wrappers/brokers.d.ts.map +0 -1
- package/dist/generated/wrappers/brokers.js +0 -3076
- package/dist/generated/wrappers/brokers.js.map +0 -1
- package/dist/generated/wrappers/index.d.ts +0 -8
- package/dist/generated/wrappers/index.d.ts.map +0 -1
- package/dist/generated/wrappers/index.js +0 -13
- package/dist/generated/wrappers/index.js.map +0 -1
- package/dist/generated/wrappers/market-data.d.ts +0 -37
- package/dist/generated/wrappers/market-data.d.ts.map +0 -1
- package/dist/generated/wrappers/market-data.js +0 -134
- package/dist/generated/wrappers/market-data.js.map +0 -1
- package/dist/generated/wrappers/session.d.ts +0 -394
- package/dist/generated/wrappers/session.d.ts.map +0 -1
- package/dist/generated/wrappers/session.js +0 -1232
- package/dist/generated/wrappers/session.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/types/core/client/ApiClient.d.ts +0 -270
- package/dist/types/core/client/FinaticConnect.d.ts +0 -332
- package/dist/types/core/portal/PortalUI.d.ts +0 -37
- package/dist/types/index.d.ts +0 -12
- package/dist/types/lib/logger/index.d.ts +0 -2
- package/dist/types/lib/logger/logger.d.ts +0 -4
- package/dist/types/lib/logger/logger.types.d.ts +0 -28
- package/dist/types/mocks/MockApiClient.d.ts +0 -171
- package/dist/types/mocks/MockDataProvider.d.ts +0 -139
- package/dist/types/mocks/MockFactory.d.ts +0 -53
- package/dist/types/mocks/utils.d.ts +0 -24
- package/dist/types/themes/portalPresets.d.ts +0 -9
- package/dist/types/types/api/auth.d.ts +0 -93
- package/dist/types/types/api/broker.d.ts +0 -421
- package/dist/types/types/api/core.d.ts +0 -46
- package/dist/types/types/api/errors.d.ts +0 -31
- package/dist/types/types/api/orders.d.ts +0 -39
- package/dist/types/types/api/portfolio.d.ts +0 -55
- package/dist/types/types/common/pagination.d.ts +0 -33
- package/dist/types/types/connect.d.ts +0 -58
- package/dist/types/types/index.d.ts +0 -13
- package/dist/types/types/portal.d.ts +0 -204
- package/dist/types/types/ui/theme.d.ts +0 -104
- package/dist/types/utils/brokerUtils.d.ts +0 -30
- package/dist/types/utils/errors.d.ts +0 -45
- package/dist/types/utils/events.d.ts +0 -12
- package/dist/types/utils/themeUtils.d.ts +0 -34
- package/src/core/client/ApiClient.ts +0 -2004
- package/src/core/client/FinaticConnect.ts +0 -1606
- package/src/core/portal/PortalUI.ts +0 -335
- package/src/index.d.ts +0 -23
- package/src/index.ts +0 -100
- package/src/lib/logger/index.ts +0 -3
- package/src/lib/logger/logger.ts +0 -332
- package/src/lib/logger/logger.types.ts +0 -34
- package/src/mocks/MockApiClient.ts +0 -1058
- package/src/mocks/MockDataProvider.ts +0 -986
- package/src/mocks/MockFactory.ts +0 -97
- package/src/mocks/utils.ts +0 -133
- package/src/themes/portalPresets.ts +0 -1307
- package/src/types/api/auth.ts +0 -112
- package/src/types/api/broker.ts +0 -461
- package/src/types/api/core.ts +0 -53
- package/src/types/api/errors.ts +0 -35
- package/src/types/api/orders.ts +0 -45
- package/src/types/api/portfolio.ts +0 -59
- package/src/types/common/pagination.ts +0 -164
- package/src/types/connect.ts +0 -56
- package/src/types/index.ts +0 -25
- package/src/types/portal.ts +0 -214
- package/src/types/ui/theme.ts +0 -105
- package/src/utils/brokerUtils.ts +0 -104
- package/src/utils/errors.ts +0 -104
- package/src/utils/events.ts +0 -66
- package/src/utils/themeUtils.ts +0 -165
|
@@ -1,3076 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Generated wrapper functions for brokers operations (Phase 2A).
|
|
4
|
-
*
|
|
5
|
-
* This file is regenerated on each run - do not edit directly.
|
|
6
|
-
* For custom logic, edit src/custom/wrappers/brokers.ts instead.
|
|
7
|
-
*/
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.BrokersWrapper = void 0;
|
|
10
|
-
const request_id_1 = require("../utils/request-id");
|
|
11
|
-
const retry_1 = require("../utils/retry");
|
|
12
|
-
const logger_1 = require("../utils/logger");
|
|
13
|
-
const error_handling_1 = require("../utils/error-handling");
|
|
14
|
-
const cache_1 = require("../utils/cache");
|
|
15
|
-
const interceptors_1 = require("../utils/interceptors");
|
|
16
|
-
const enum_coercion_1 = require("../utils/enum-coercion");
|
|
17
|
-
const plain_object_1 = require("../utils/plain-object");
|
|
18
|
-
const models_1 = require("../models");
|
|
19
|
-
const models_2 = require("../models");
|
|
20
|
-
const models_3 = require("../models");
|
|
21
|
-
const models_4 = require("../models");
|
|
22
|
-
const models_5 = require("../models");
|
|
23
|
-
/**
|
|
24
|
-
* Brokers wrapper functions.
|
|
25
|
-
* Provides simplified method names and response unwrapping.
|
|
26
|
-
*/
|
|
27
|
-
class BrokersWrapper {
|
|
28
|
-
constructor(api, config, sdkConfig) {
|
|
29
|
-
this.api = api;
|
|
30
|
-
if (config !== undefined) {
|
|
31
|
-
this.config = config;
|
|
32
|
-
}
|
|
33
|
-
if (sdkConfig !== undefined) {
|
|
34
|
-
this.sdkConfig = sdkConfig;
|
|
35
|
-
}
|
|
36
|
-
this.logger = (0, logger_1.getLogger)(sdkConfig);
|
|
37
|
-
}
|
|
38
|
-
// Session context setters (called by session management)
|
|
39
|
-
setSessionContext(sessionId, companyId, csrfToken) {
|
|
40
|
-
this.sessionId = sessionId;
|
|
41
|
-
this.companyId = companyId;
|
|
42
|
-
this.csrfToken = csrfToken;
|
|
43
|
-
}
|
|
44
|
-
// Utility methods (Phase 2A)
|
|
45
|
-
_generateRequestId() {
|
|
46
|
-
return (0, request_id_1.generateRequestId)();
|
|
47
|
-
}
|
|
48
|
-
async _retryApiCall(fn) {
|
|
49
|
-
return (0, retry_1.retryApiCall)(fn);
|
|
50
|
-
}
|
|
51
|
-
_handleError(error, requestId) {
|
|
52
|
-
return (0, error_handling_1.handleError)(error, requestId);
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Get Brokers
|
|
56
|
-
*
|
|
57
|
-
* Get all available brokers.
|
|
58
|
-
*
|
|
59
|
-
* This is a fast operation that returns a cached list of available brokers.
|
|
60
|
-
* The list is loaded once at startup and never changes during runtime.
|
|
61
|
-
*
|
|
62
|
-
* Returns
|
|
63
|
-
* -------
|
|
64
|
-
* FinaticResponse[list[BrokerInfo]]
|
|
65
|
-
* list of available brokers with their metadata.
|
|
66
|
-
|
|
67
|
-
* @param params {GetBrokersParams} Input parameters object (empty for methods with no parameters)
|
|
68
|
-
* @returns {Promise<GetBrokersResponse>} Standard response with success/Error/Warning structure
|
|
69
|
-
*
|
|
70
|
-
* Generated from: GET /api/v1/brokers/
|
|
71
|
-
* @methodId get_brokers_api_v1_brokers__get
|
|
72
|
-
* @category brokers
|
|
73
|
-
* @example
|
|
74
|
-
* ```typescript-client
|
|
75
|
-
* // Example with no parameters
|
|
76
|
-
* const result = await finatic.getBrokers({});
|
|
77
|
-
*
|
|
78
|
-
* // Access the response data
|
|
79
|
-
* if (result.success) {
|
|
80
|
-
* console.log('Data:', result.success.data);
|
|
81
|
-
* }
|
|
82
|
-
* ```
|
|
83
|
-
*/
|
|
84
|
-
async getBrokers(params) {
|
|
85
|
-
// Phase 2C: Extract individual params from input params object
|
|
86
|
-
// No parameters to extract
|
|
87
|
-
// Generate request ID
|
|
88
|
-
const requestId = this._generateRequestId();
|
|
89
|
-
// Input validation (Phase 2B: zod)
|
|
90
|
-
if (this.sdkConfig?.validationEnabled) {
|
|
91
|
-
// TODO: Generate validation schema from endpoint parameters
|
|
92
|
-
// const validationSchema = z.object({ ... });
|
|
93
|
-
// validateParams(validationSchema, params, this.sdkConfig);
|
|
94
|
-
}
|
|
95
|
-
// Check cache (Phase 2B: optional caching)
|
|
96
|
-
const shouldCache = true;
|
|
97
|
-
const cache = (0, cache_1.getCache)(this.sdkConfig);
|
|
98
|
-
if (cache && this.sdkConfig?.cacheEnabled && shouldCache) {
|
|
99
|
-
const cacheKey = (0, cache_1.generateCacheKey)('GET', '/api/v1/brokers/', params, this.sdkConfig);
|
|
100
|
-
const cached = cache.get(cacheKey);
|
|
101
|
-
if (cached) {
|
|
102
|
-
this.logger.debug('Cache hit', { request_id: requestId, cache_key: cacheKey });
|
|
103
|
-
return cached;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
// Structured logging (Phase 2B: pino)
|
|
107
|
-
this.logger.debug('Get Brokers', {
|
|
108
|
-
request_id: requestId,
|
|
109
|
-
method: 'GET',
|
|
110
|
-
path: '/api/v1/brokers/',
|
|
111
|
-
params: params,
|
|
112
|
-
action: 'getBrokers',
|
|
113
|
-
});
|
|
114
|
-
try {
|
|
115
|
-
const response = await (0, retry_1.retryApiCall)(async () => {
|
|
116
|
-
const apiResponse = await this.api.getBrokersApiV1BrokersGet({
|
|
117
|
-
headers: { 'x-request-id': requestId },
|
|
118
|
-
});
|
|
119
|
-
return await (0, interceptors_1.applyResponseInterceptors)(apiResponse, this.sdkConfig);
|
|
120
|
-
}, {}, this.sdkConfig);
|
|
121
|
-
// Phase 2C: Unwrap API response and transform to standard response structure
|
|
122
|
-
const responseData = response && typeof response === 'object' && 'data' in response
|
|
123
|
-
? response.data
|
|
124
|
-
: response;
|
|
125
|
-
if (!(responseData && typeof responseData === 'object' && 'data' in responseData)) {
|
|
126
|
-
throw new Error('Unexpected response shape: missing data');
|
|
127
|
-
}
|
|
128
|
-
const apiData = responseData.data;
|
|
129
|
-
const warnings = Array.isArray(responseData.warnings)
|
|
130
|
-
? responseData.warnings
|
|
131
|
-
: undefined;
|
|
132
|
-
const meta = responseData.meta;
|
|
133
|
-
// Build standard response structure
|
|
134
|
-
const standardResponse = {
|
|
135
|
-
success: {
|
|
136
|
-
data: (0, plain_object_1.convertToPlainObject)(apiData),
|
|
137
|
-
...(meta ? { meta } : {}),
|
|
138
|
-
},
|
|
139
|
-
...(warnings && warnings.length > 0
|
|
140
|
-
? {
|
|
141
|
-
Warning: warnings.map((w) => ({
|
|
142
|
-
message: w.message || String(w),
|
|
143
|
-
code: w.code,
|
|
144
|
-
details: w.details || w,
|
|
145
|
-
})),
|
|
146
|
-
}
|
|
147
|
-
: {}),
|
|
148
|
-
};
|
|
149
|
-
if (cache && this.sdkConfig?.cacheEnabled && shouldCache) {
|
|
150
|
-
const cacheKey = (0, cache_1.generateCacheKey)('GET', '/api/v1/brokers/', params, this.sdkConfig);
|
|
151
|
-
cache.set(cacheKey, standardResponse, this.sdkConfig.cacheTtl || 300);
|
|
152
|
-
}
|
|
153
|
-
this.logger.debug('Get Brokers completed', {
|
|
154
|
-
request_id: requestId,
|
|
155
|
-
action: 'getBrokers',
|
|
156
|
-
});
|
|
157
|
-
// Phase 2C: Return standard response structure (already plain objects)
|
|
158
|
-
return standardResponse;
|
|
159
|
-
}
|
|
160
|
-
catch (error) {
|
|
161
|
-
try {
|
|
162
|
-
await (0, interceptors_1.applyErrorInterceptors)(error, this.sdkConfig);
|
|
163
|
-
}
|
|
164
|
-
catch { }
|
|
165
|
-
this.logger.error('Get Brokers failed', error, {
|
|
166
|
-
request_id: requestId,
|
|
167
|
-
action: 'getBrokers',
|
|
168
|
-
});
|
|
169
|
-
// Phase 2C: Extract error details from Axios errors or generic errors
|
|
170
|
-
let errorMessage = error instanceof Error ? error.message : String(error);
|
|
171
|
-
let errorCode = 'UNKNOWN_ERROR';
|
|
172
|
-
let errorStatus;
|
|
173
|
-
let errorDetails = {};
|
|
174
|
-
// Handle Axios errors (from OpenAPI generator)
|
|
175
|
-
if (error?.isAxiosError || error?.response) {
|
|
176
|
-
const axiosError = error;
|
|
177
|
-
errorStatus = axiosError.response?.status;
|
|
178
|
-
errorCode = axiosError.code || `HTTP_${errorStatus || 'UNKNOWN'}`;
|
|
179
|
-
errorMessage =
|
|
180
|
-
axiosError.response?.data?.message ||
|
|
181
|
-
axiosError.response?.statusText ||
|
|
182
|
-
axiosError.message ||
|
|
183
|
-
errorMessage;
|
|
184
|
-
errorDetails = {
|
|
185
|
-
status: errorStatus,
|
|
186
|
-
statusText: axiosError.response?.statusText,
|
|
187
|
-
responseData: axiosError.response?.data,
|
|
188
|
-
requestUrl: axiosError.config?.url,
|
|
189
|
-
requestMethod: axiosError.config?.method,
|
|
190
|
-
};
|
|
191
|
-
}
|
|
192
|
-
else if (error instanceof Error) {
|
|
193
|
-
errorCode = error?.code || 'UNKNOWN_ERROR';
|
|
194
|
-
errorDetails = {
|
|
195
|
-
stack: error.stack,
|
|
196
|
-
name: error.name,
|
|
197
|
-
};
|
|
198
|
-
}
|
|
199
|
-
else {
|
|
200
|
-
errorDetails = { error };
|
|
201
|
-
}
|
|
202
|
-
// Phase 2C: Return standard error response structure
|
|
203
|
-
const errorResponse = {
|
|
204
|
-
success: {
|
|
205
|
-
data: null,
|
|
206
|
-
},
|
|
207
|
-
Error: {
|
|
208
|
-
message: errorMessage,
|
|
209
|
-
code: errorCode,
|
|
210
|
-
status: errorStatus,
|
|
211
|
-
details: errorDetails,
|
|
212
|
-
},
|
|
213
|
-
};
|
|
214
|
-
return errorResponse;
|
|
215
|
-
}
|
|
216
|
-
// TODO Phase 2D: Add complex validation schemas (unions, enums, nested)
|
|
217
|
-
// TODO Phase 2D: Add orphaned method detection
|
|
218
|
-
// TODO Phase 2D: Add advanced convenience methods
|
|
219
|
-
}
|
|
220
|
-
/**
|
|
221
|
-
* List Broker Connections
|
|
222
|
-
*
|
|
223
|
-
* List all broker connections for the current user.
|
|
224
|
-
*
|
|
225
|
-
* This endpoint is accessible from the portal and uses session-only authentication.
|
|
226
|
-
* Returns connections that the user has any permissions for.
|
|
227
|
-
|
|
228
|
-
* @param params {ListBrokerConnectionsParams} Input parameters object (empty for methods with no parameters)
|
|
229
|
-
* @returns {Promise<ListBrokerConnectionsResponse>} Standard response with success/Error/Warning structure
|
|
230
|
-
*
|
|
231
|
-
* Generated from: GET /api/v1/brokers/connections
|
|
232
|
-
* @methodId list_broker_connections_api_v1_brokers_connections_get
|
|
233
|
-
* @category brokers
|
|
234
|
-
* @example
|
|
235
|
-
* ```typescript-client
|
|
236
|
-
* // Example with no parameters
|
|
237
|
-
* const result = await finatic.listBrokerConnections({});
|
|
238
|
-
*
|
|
239
|
-
* // Access the response data
|
|
240
|
-
* if (result.success) {
|
|
241
|
-
* console.log('Data:', result.success.data);
|
|
242
|
-
* }
|
|
243
|
-
* ```
|
|
244
|
-
*/
|
|
245
|
-
async listBrokerConnections(params) {
|
|
246
|
-
// Authentication check
|
|
247
|
-
if (!this.sessionId) {
|
|
248
|
-
throw new Error('Session not initialized. Call startSession() first.');
|
|
249
|
-
}
|
|
250
|
-
// Phase 2C: Extract individual params from input params object
|
|
251
|
-
// No parameters to extract
|
|
252
|
-
// Generate request ID
|
|
253
|
-
const requestId = this._generateRequestId();
|
|
254
|
-
// Input validation (Phase 2B: zod)
|
|
255
|
-
if (this.sdkConfig?.validationEnabled) {
|
|
256
|
-
// TODO: Generate validation schema from endpoint parameters
|
|
257
|
-
// const validationSchema = z.object({ ... });
|
|
258
|
-
// validateParams(validationSchema, params, this.sdkConfig);
|
|
259
|
-
}
|
|
260
|
-
// Check cache (Phase 2B: optional caching)
|
|
261
|
-
const shouldCache = true;
|
|
262
|
-
const cache = (0, cache_1.getCache)(this.sdkConfig);
|
|
263
|
-
if (cache && this.sdkConfig?.cacheEnabled && shouldCache) {
|
|
264
|
-
const cacheKey = (0, cache_1.generateCacheKey)('GET', '/api/v1/brokers/connections', params, this.sdkConfig);
|
|
265
|
-
const cached = cache.get(cacheKey);
|
|
266
|
-
if (cached) {
|
|
267
|
-
this.logger.debug('Cache hit', { request_id: requestId, cache_key: cacheKey });
|
|
268
|
-
return cached;
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
// Structured logging (Phase 2B: pino)
|
|
272
|
-
this.logger.debug('List Broker Connections', {
|
|
273
|
-
request_id: requestId,
|
|
274
|
-
method: 'GET',
|
|
275
|
-
path: '/api/v1/brokers/connections',
|
|
276
|
-
params: params,
|
|
277
|
-
action: 'listBrokerConnections',
|
|
278
|
-
});
|
|
279
|
-
try {
|
|
280
|
-
const response = await (0, retry_1.retryApiCall)(async () => {
|
|
281
|
-
const apiResponse = await this.api.listBrokerConnectionsApiV1BrokersConnectionsGet({
|
|
282
|
-
headers: {
|
|
283
|
-
'x-session-id': this.sessionId,
|
|
284
|
-
'x-company-id': this.companyId,
|
|
285
|
-
'x-csrf-token': this.csrfToken,
|
|
286
|
-
'x-request-id': requestId,
|
|
287
|
-
},
|
|
288
|
-
});
|
|
289
|
-
return await (0, interceptors_1.applyResponseInterceptors)(apiResponse, this.sdkConfig);
|
|
290
|
-
}, {}, this.sdkConfig);
|
|
291
|
-
// Phase 2C: Unwrap API response and transform to standard response structure
|
|
292
|
-
const responseData = response && typeof response === 'object' && 'data' in response
|
|
293
|
-
? response.data
|
|
294
|
-
: response;
|
|
295
|
-
if (!(responseData && typeof responseData === 'object' && 'data' in responseData)) {
|
|
296
|
-
throw new Error('Unexpected response shape: missing data');
|
|
297
|
-
}
|
|
298
|
-
const apiData = responseData.data;
|
|
299
|
-
const warnings = Array.isArray(responseData.warnings)
|
|
300
|
-
? responseData.warnings
|
|
301
|
-
: undefined;
|
|
302
|
-
const meta = responseData.meta;
|
|
303
|
-
// Build standard response structure
|
|
304
|
-
const standardResponse = {
|
|
305
|
-
success: {
|
|
306
|
-
data: (0, plain_object_1.convertToPlainObject)(apiData),
|
|
307
|
-
...(meta ? { meta } : {}),
|
|
308
|
-
},
|
|
309
|
-
...(warnings && warnings.length > 0
|
|
310
|
-
? {
|
|
311
|
-
Warning: warnings.map((w) => ({
|
|
312
|
-
message: w.message || String(w),
|
|
313
|
-
code: w.code,
|
|
314
|
-
details: w.details || w,
|
|
315
|
-
})),
|
|
316
|
-
}
|
|
317
|
-
: {}),
|
|
318
|
-
};
|
|
319
|
-
if (cache && this.sdkConfig?.cacheEnabled && shouldCache) {
|
|
320
|
-
const cacheKey = (0, cache_1.generateCacheKey)('GET', '/api/v1/brokers/connections', params, this.sdkConfig);
|
|
321
|
-
cache.set(cacheKey, standardResponse, this.sdkConfig.cacheTtl || 300);
|
|
322
|
-
}
|
|
323
|
-
this.logger.debug('List Broker Connections completed', {
|
|
324
|
-
request_id: requestId,
|
|
325
|
-
action: 'listBrokerConnections',
|
|
326
|
-
});
|
|
327
|
-
// Phase 2C: Return standard response structure (already plain objects)
|
|
328
|
-
return standardResponse;
|
|
329
|
-
}
|
|
330
|
-
catch (error) {
|
|
331
|
-
try {
|
|
332
|
-
await (0, interceptors_1.applyErrorInterceptors)(error, this.sdkConfig);
|
|
333
|
-
}
|
|
334
|
-
catch { }
|
|
335
|
-
this.logger.error('List Broker Connections failed', error, {
|
|
336
|
-
request_id: requestId,
|
|
337
|
-
action: 'listBrokerConnections',
|
|
338
|
-
});
|
|
339
|
-
// Phase 2C: Extract error details from Axios errors or generic errors
|
|
340
|
-
let errorMessage = error instanceof Error ? error.message : String(error);
|
|
341
|
-
let errorCode = 'UNKNOWN_ERROR';
|
|
342
|
-
let errorStatus;
|
|
343
|
-
let errorDetails = {};
|
|
344
|
-
// Handle Axios errors (from OpenAPI generator)
|
|
345
|
-
if (error?.isAxiosError || error?.response) {
|
|
346
|
-
const axiosError = error;
|
|
347
|
-
errorStatus = axiosError.response?.status;
|
|
348
|
-
errorCode = axiosError.code || `HTTP_${errorStatus || 'UNKNOWN'}`;
|
|
349
|
-
errorMessage =
|
|
350
|
-
axiosError.response?.data?.message ||
|
|
351
|
-
axiosError.response?.statusText ||
|
|
352
|
-
axiosError.message ||
|
|
353
|
-
errorMessage;
|
|
354
|
-
errorDetails = {
|
|
355
|
-
status: errorStatus,
|
|
356
|
-
statusText: axiosError.response?.statusText,
|
|
357
|
-
responseData: axiosError.response?.data,
|
|
358
|
-
requestUrl: axiosError.config?.url,
|
|
359
|
-
requestMethod: axiosError.config?.method,
|
|
360
|
-
};
|
|
361
|
-
}
|
|
362
|
-
else if (error instanceof Error) {
|
|
363
|
-
errorCode = error?.code || 'UNKNOWN_ERROR';
|
|
364
|
-
errorDetails = {
|
|
365
|
-
stack: error.stack,
|
|
366
|
-
name: error.name,
|
|
367
|
-
};
|
|
368
|
-
}
|
|
369
|
-
else {
|
|
370
|
-
errorDetails = { error };
|
|
371
|
-
}
|
|
372
|
-
// Phase 2C: Return standard error response structure
|
|
373
|
-
const errorResponse = {
|
|
374
|
-
success: {
|
|
375
|
-
data: null,
|
|
376
|
-
},
|
|
377
|
-
Error: {
|
|
378
|
-
message: errorMessage,
|
|
379
|
-
code: errorCode,
|
|
380
|
-
status: errorStatus,
|
|
381
|
-
details: errorDetails,
|
|
382
|
-
},
|
|
383
|
-
};
|
|
384
|
-
return errorResponse;
|
|
385
|
-
}
|
|
386
|
-
// TODO Phase 2D: Add complex validation schemas (unions, enums, nested)
|
|
387
|
-
// TODO Phase 2D: Add orphaned method detection
|
|
388
|
-
// TODO Phase 2D: Add advanced convenience methods
|
|
389
|
-
}
|
|
390
|
-
/**
|
|
391
|
-
* Disconnect Company From Broker
|
|
392
|
-
*
|
|
393
|
-
* Remove a company's access to a broker connection.
|
|
394
|
-
*
|
|
395
|
-
* If the company is the only one with access, the entire connection is deleted.
|
|
396
|
-
* If other companies have access, only the company's access is removed.
|
|
397
|
-
|
|
398
|
-
* @param params {DisconnectCompanyFromBrokerParams} Input parameters object
|
|
399
|
-
* @returns {Promise<DisconnectCompanyFromBrokerResponse>} Standard response with success/Error/Warning structure
|
|
400
|
-
*
|
|
401
|
-
* Generated from: DELETE /api/v1/brokers/disconnect-company/{connection_id}
|
|
402
|
-
* @methodId disconnect_company_from_broker_api_v1_brokers_disconnect_company__connection_id__delete
|
|
403
|
-
* @category brokers
|
|
404
|
-
* @example
|
|
405
|
-
* ```typescript-client
|
|
406
|
-
* // Minimal example with required parameters only
|
|
407
|
-
* const result = await finatic.disconnectCompanyFromBroker({
|
|
408
|
-
connectionId: 'id-123'
|
|
409
|
-
* });
|
|
410
|
-
*
|
|
411
|
-
* // Access the response data
|
|
412
|
-
* if (result.success) {
|
|
413
|
-
* console.log('Data:', result.success.data);
|
|
414
|
-
* } else if (result.Error) {
|
|
415
|
-
* console.error('Error:', result.Error.message);
|
|
416
|
-
* }
|
|
417
|
-
* ```
|
|
418
|
-
*/
|
|
419
|
-
async disconnectCompanyFromBroker(params) {
|
|
420
|
-
// Authentication check
|
|
421
|
-
if (!this.sessionId) {
|
|
422
|
-
throw new Error('Session not initialized. Call startSession() first.');
|
|
423
|
-
}
|
|
424
|
-
// Phase 2C: Extract individual params from input params object
|
|
425
|
-
const connectionId = params.connectionId;
|
|
426
|
-
// Generate request ID
|
|
427
|
-
const requestId = this._generateRequestId();
|
|
428
|
-
// Input validation (Phase 2B: zod)
|
|
429
|
-
if (this.sdkConfig?.validationEnabled) {
|
|
430
|
-
// TODO: Generate validation schema from endpoint parameters
|
|
431
|
-
// const validationSchema = z.object({ ... });
|
|
432
|
-
// validateParams(validationSchema, params, this.sdkConfig);
|
|
433
|
-
}
|
|
434
|
-
// Check cache (Phase 2B: optional caching)
|
|
435
|
-
const shouldCache = true;
|
|
436
|
-
const cache = (0, cache_1.getCache)(this.sdkConfig);
|
|
437
|
-
if (cache && this.sdkConfig?.cacheEnabled && shouldCache) {
|
|
438
|
-
const cacheKey = (0, cache_1.generateCacheKey)('DELETE', '/api/v1/brokers/disconnect-company/{connection_id}', params, this.sdkConfig);
|
|
439
|
-
const cached = cache.get(cacheKey);
|
|
440
|
-
if (cached) {
|
|
441
|
-
this.logger.debug('Cache hit', { request_id: requestId, cache_key: cacheKey });
|
|
442
|
-
return cached;
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
// Structured logging (Phase 2B: pino)
|
|
446
|
-
this.logger.debug('Disconnect Company From Broker', {
|
|
447
|
-
request_id: requestId,
|
|
448
|
-
method: 'DELETE',
|
|
449
|
-
path: '/api/v1/brokers/disconnect-company/{connection_id}',
|
|
450
|
-
params: params,
|
|
451
|
-
action: 'disconnectCompanyFromBroker',
|
|
452
|
-
});
|
|
453
|
-
try {
|
|
454
|
-
const response = await (0, retry_1.retryApiCall)(async () => {
|
|
455
|
-
const apiResponse = await this.api.disconnectCompanyFromBrokerApiV1BrokersDisconnectCompanyConnectionIdDelete({ connectionId: connectionId }, {
|
|
456
|
-
headers: {
|
|
457
|
-
'x-session-id': this.sessionId,
|
|
458
|
-
'x-company-id': this.companyId,
|
|
459
|
-
'x-csrf-token': this.csrfToken,
|
|
460
|
-
'x-request-id': requestId,
|
|
461
|
-
},
|
|
462
|
-
});
|
|
463
|
-
return await (0, interceptors_1.applyResponseInterceptors)(apiResponse, this.sdkConfig);
|
|
464
|
-
}, {}, this.sdkConfig);
|
|
465
|
-
// Phase 2C: Unwrap API response and transform to standard response structure
|
|
466
|
-
const responseData = response && typeof response === 'object' && 'data' in response
|
|
467
|
-
? response.data
|
|
468
|
-
: response;
|
|
469
|
-
if (!(responseData && typeof responseData === 'object' && 'data' in responseData)) {
|
|
470
|
-
throw new Error('Unexpected response shape: missing data');
|
|
471
|
-
}
|
|
472
|
-
const apiData = responseData.data;
|
|
473
|
-
const warnings = Array.isArray(responseData.warnings)
|
|
474
|
-
? responseData.warnings
|
|
475
|
-
: undefined;
|
|
476
|
-
const meta = responseData.meta;
|
|
477
|
-
// Build standard response structure
|
|
478
|
-
const standardResponse = {
|
|
479
|
-
success: {
|
|
480
|
-
data: (0, plain_object_1.convertToPlainObject)(apiData),
|
|
481
|
-
...(meta ? { meta } : {}),
|
|
482
|
-
},
|
|
483
|
-
...(warnings && warnings.length > 0
|
|
484
|
-
? {
|
|
485
|
-
Warning: warnings.map((w) => ({
|
|
486
|
-
message: w.message || String(w),
|
|
487
|
-
code: w.code,
|
|
488
|
-
details: w.details || w,
|
|
489
|
-
})),
|
|
490
|
-
}
|
|
491
|
-
: {}),
|
|
492
|
-
};
|
|
493
|
-
if (cache && this.sdkConfig?.cacheEnabled && shouldCache) {
|
|
494
|
-
const cacheKey = (0, cache_1.generateCacheKey)('DELETE', '/api/v1/brokers/disconnect-company/{connection_id}', params, this.sdkConfig);
|
|
495
|
-
cache.set(cacheKey, standardResponse, this.sdkConfig.cacheTtl || 300);
|
|
496
|
-
}
|
|
497
|
-
this.logger.debug('Disconnect Company From Broker completed', {
|
|
498
|
-
request_id: requestId,
|
|
499
|
-
action: 'disconnectCompanyFromBroker',
|
|
500
|
-
});
|
|
501
|
-
// Phase 2C: Return standard response structure (already plain objects)
|
|
502
|
-
return standardResponse;
|
|
503
|
-
}
|
|
504
|
-
catch (error) {
|
|
505
|
-
try {
|
|
506
|
-
await (0, interceptors_1.applyErrorInterceptors)(error, this.sdkConfig);
|
|
507
|
-
}
|
|
508
|
-
catch { }
|
|
509
|
-
this.logger.error('Disconnect Company From Broker failed', error, {
|
|
510
|
-
request_id: requestId,
|
|
511
|
-
action: 'disconnectCompanyFromBroker',
|
|
512
|
-
});
|
|
513
|
-
// Phase 2C: Extract error details from Axios errors or generic errors
|
|
514
|
-
let errorMessage = error instanceof Error ? error.message : String(error);
|
|
515
|
-
let errorCode = 'UNKNOWN_ERROR';
|
|
516
|
-
let errorStatus;
|
|
517
|
-
let errorDetails = {};
|
|
518
|
-
// Handle Axios errors (from OpenAPI generator)
|
|
519
|
-
if (error?.isAxiosError || error?.response) {
|
|
520
|
-
const axiosError = error;
|
|
521
|
-
errorStatus = axiosError.response?.status;
|
|
522
|
-
errorCode = axiosError.code || `HTTP_${errorStatus || 'UNKNOWN'}`;
|
|
523
|
-
errorMessage =
|
|
524
|
-
axiosError.response?.data?.message ||
|
|
525
|
-
axiosError.response?.statusText ||
|
|
526
|
-
axiosError.message ||
|
|
527
|
-
errorMessage;
|
|
528
|
-
errorDetails = {
|
|
529
|
-
status: errorStatus,
|
|
530
|
-
statusText: axiosError.response?.statusText,
|
|
531
|
-
responseData: axiosError.response?.data,
|
|
532
|
-
requestUrl: axiosError.config?.url,
|
|
533
|
-
requestMethod: axiosError.config?.method,
|
|
534
|
-
};
|
|
535
|
-
}
|
|
536
|
-
else if (error instanceof Error) {
|
|
537
|
-
errorCode = error?.code || 'UNKNOWN_ERROR';
|
|
538
|
-
errorDetails = {
|
|
539
|
-
stack: error.stack,
|
|
540
|
-
name: error.name,
|
|
541
|
-
};
|
|
542
|
-
}
|
|
543
|
-
else {
|
|
544
|
-
errorDetails = { error };
|
|
545
|
-
}
|
|
546
|
-
// Phase 2C: Return standard error response structure
|
|
547
|
-
const errorResponse = {
|
|
548
|
-
success: {
|
|
549
|
-
data: null,
|
|
550
|
-
},
|
|
551
|
-
Error: {
|
|
552
|
-
message: errorMessage,
|
|
553
|
-
code: errorCode,
|
|
554
|
-
status: errorStatus,
|
|
555
|
-
details: errorDetails,
|
|
556
|
-
},
|
|
557
|
-
};
|
|
558
|
-
return errorResponse;
|
|
559
|
-
}
|
|
560
|
-
// TODO Phase 2D: Add complex validation schemas (unions, enums, nested)
|
|
561
|
-
// TODO Phase 2D: Add orphaned method detection
|
|
562
|
-
// TODO Phase 2D: Add advanced convenience methods
|
|
563
|
-
}
|
|
564
|
-
/**
|
|
565
|
-
* Get Orders
|
|
566
|
-
*
|
|
567
|
-
* Get orders for all authorized broker connections.
|
|
568
|
-
*
|
|
569
|
-
* This endpoint is accessible from the portal and uses session-only authentication.
|
|
570
|
-
* Returns orders from connections the company has read access to.
|
|
571
|
-
|
|
572
|
-
* @param params {GetOrdersParams} Input parameters object
|
|
573
|
-
* @returns {Promise<GetOrdersResponse>} Standard response with success/Error/Warning structure
|
|
574
|
-
*
|
|
575
|
-
* Generated from: GET /api/v1/brokers/data/orders
|
|
576
|
-
* @methodId get_orders_api_v1_brokers_data_orders_get
|
|
577
|
-
* @category brokers
|
|
578
|
-
* @example
|
|
579
|
-
* ```typescript-client
|
|
580
|
-
* // Example with no parameters
|
|
581
|
-
* const result = await finatic.getOrders({});
|
|
582
|
-
*
|
|
583
|
-
* // Access the response data
|
|
584
|
-
* if (result.success) {
|
|
585
|
-
* console.log('Data:', result.success.data);
|
|
586
|
-
* }
|
|
587
|
-
* ```
|
|
588
|
-
* @example
|
|
589
|
-
* ```typescript-client
|
|
590
|
-
* // Full example with optional parameters
|
|
591
|
-
* const result = await finatic.getOrders({
|
|
592
|
-
brokerId: 'id-123',
|
|
593
|
-
connectionId: 'id-123',
|
|
594
|
-
accountId: 'id-123'
|
|
595
|
-
* });
|
|
596
|
-
*
|
|
597
|
-
* // Handle response with warnings
|
|
598
|
-
* if (result.success) {
|
|
599
|
-
* console.log('Data:', result.success.data);
|
|
600
|
-
* if (result.Warning && result.Warning.length > 0) {
|
|
601
|
-
* console.warn('Warnings:', result.Warning);
|
|
602
|
-
* }
|
|
603
|
-
* } else if (result.Error) {
|
|
604
|
-
* console.error('Error:', result.Error.message, result.Error.code);
|
|
605
|
-
* }
|
|
606
|
-
* ```
|
|
607
|
-
*/
|
|
608
|
-
async getOrders(params) {
|
|
609
|
-
// Authentication check
|
|
610
|
-
if (!this.sessionId) {
|
|
611
|
-
throw new Error('Session not initialized. Call startSession() first.');
|
|
612
|
-
}
|
|
613
|
-
// Phase 2C: Extract individual params from input params object
|
|
614
|
-
const brokerId = params.brokerId;
|
|
615
|
-
const connectionId = params.connectionId;
|
|
616
|
-
const accountId = params.accountId;
|
|
617
|
-
const symbol = params.symbol;
|
|
618
|
-
let orderStatus = params.orderStatus !== undefined
|
|
619
|
-
? (0, enum_coercion_1.coerceEnumValue)(params.orderStatus, models_4.PublicOrderStatusEnum, 'orderStatus')
|
|
620
|
-
: undefined;
|
|
621
|
-
let side = params.side !== undefined
|
|
622
|
-
? (0, enum_coercion_1.coerceEnumValue)(params.side, models_3.PublicOrderSideEnum, 'side')
|
|
623
|
-
: undefined;
|
|
624
|
-
let assetType = params.assetType !== undefined
|
|
625
|
-
? (0, enum_coercion_1.coerceEnumValue)(params.assetType, models_2.PublicAssetTypeEnum, 'assetType')
|
|
626
|
-
: undefined;
|
|
627
|
-
const limit = params.limit;
|
|
628
|
-
const offset = params.offset;
|
|
629
|
-
const createdAfter = params.createdAfter;
|
|
630
|
-
const createdBefore = params.createdBefore;
|
|
631
|
-
const withMetadata = params.withMetadata;
|
|
632
|
-
// Generate request ID
|
|
633
|
-
const requestId = this._generateRequestId();
|
|
634
|
-
// Input validation (Phase 2B: zod)
|
|
635
|
-
if (this.sdkConfig?.validationEnabled) {
|
|
636
|
-
// TODO: Generate validation schema from endpoint parameters
|
|
637
|
-
// const validationSchema = z.object({ ... });
|
|
638
|
-
// validateParams(validationSchema, params, this.sdkConfig);
|
|
639
|
-
}
|
|
640
|
-
// Check cache (Phase 2B: optional caching)
|
|
641
|
-
const shouldCache = true;
|
|
642
|
-
const cache = (0, cache_1.getCache)(this.sdkConfig);
|
|
643
|
-
if (cache && this.sdkConfig?.cacheEnabled && shouldCache) {
|
|
644
|
-
const cacheKey = (0, cache_1.generateCacheKey)('GET', '/api/v1/brokers/data/orders', params, this.sdkConfig);
|
|
645
|
-
const cached = cache.get(cacheKey);
|
|
646
|
-
if (cached) {
|
|
647
|
-
this.logger.debug('Cache hit', { request_id: requestId, cache_key: cacheKey });
|
|
648
|
-
return cached;
|
|
649
|
-
}
|
|
650
|
-
}
|
|
651
|
-
// Structured logging (Phase 2B: pino)
|
|
652
|
-
this.logger.debug('Get Orders', {
|
|
653
|
-
request_id: requestId,
|
|
654
|
-
method: 'GET',
|
|
655
|
-
path: '/api/v1/brokers/data/orders',
|
|
656
|
-
params: params,
|
|
657
|
-
action: 'getOrders',
|
|
658
|
-
});
|
|
659
|
-
try {
|
|
660
|
-
const response = await (0, retry_1.retryApiCall)(async () => {
|
|
661
|
-
const apiResponse = await this.api.getOrdersApiV1BrokersDataOrdersGet({
|
|
662
|
-
...(brokerId !== undefined ? { brokerId: brokerId } : {}),
|
|
663
|
-
...(connectionId !== undefined ? { connectionId: connectionId } : {}),
|
|
664
|
-
...(accountId !== undefined ? { accountId: accountId } : {}),
|
|
665
|
-
...(symbol !== undefined ? { symbol: symbol } : {}),
|
|
666
|
-
...(orderStatus !== undefined ? { orderStatus: orderStatus } : {}),
|
|
667
|
-
...(side !== undefined ? { side: side } : {}),
|
|
668
|
-
...(assetType !== undefined ? { assetType: assetType } : {}),
|
|
669
|
-
...(limit !== undefined ? { limit: limit } : {}),
|
|
670
|
-
...(offset !== undefined ? { offset: offset } : {}),
|
|
671
|
-
...(createdAfter !== undefined ? { createdAfter: createdAfter } : {}),
|
|
672
|
-
...(createdBefore !== undefined ? { createdBefore: createdBefore } : {}),
|
|
673
|
-
...(withMetadata !== undefined ? { withMetadata: withMetadata } : {}),
|
|
674
|
-
}, {
|
|
675
|
-
headers: {
|
|
676
|
-
'x-session-id': this.sessionId,
|
|
677
|
-
'x-company-id': this.companyId,
|
|
678
|
-
'x-csrf-token': this.csrfToken,
|
|
679
|
-
'x-request-id': requestId,
|
|
680
|
-
},
|
|
681
|
-
});
|
|
682
|
-
return await (0, interceptors_1.applyResponseInterceptors)(apiResponse, this.sdkConfig);
|
|
683
|
-
}, {}, this.sdkConfig);
|
|
684
|
-
// Phase 2C: Unwrap API response and transform to standard response structure
|
|
685
|
-
const responseData = response && typeof response === 'object' && 'data' in response
|
|
686
|
-
? response.data
|
|
687
|
-
: response;
|
|
688
|
-
if (!(responseData && typeof responseData === 'object' && 'data' in responseData)) {
|
|
689
|
-
throw new Error('Unexpected response shape: missing data');
|
|
690
|
-
}
|
|
691
|
-
const apiData = responseData.data;
|
|
692
|
-
const warnings = Array.isArray(responseData.warnings)
|
|
693
|
-
? responseData.warnings
|
|
694
|
-
: undefined;
|
|
695
|
-
const meta = responseData.meta;
|
|
696
|
-
// Build standard response structure
|
|
697
|
-
const standardResponse = {
|
|
698
|
-
success: {
|
|
699
|
-
data: (0, plain_object_1.convertToPlainObject)(apiData),
|
|
700
|
-
...(meta ? { meta } : {}),
|
|
701
|
-
},
|
|
702
|
-
...(warnings && warnings.length > 0
|
|
703
|
-
? {
|
|
704
|
-
Warning: warnings.map((w) => ({
|
|
705
|
-
message: w.message || String(w),
|
|
706
|
-
code: w.code,
|
|
707
|
-
details: w.details || w,
|
|
708
|
-
})),
|
|
709
|
-
}
|
|
710
|
-
: {}),
|
|
711
|
-
};
|
|
712
|
-
if (cache && this.sdkConfig?.cacheEnabled && shouldCache) {
|
|
713
|
-
const cacheKey = (0, cache_1.generateCacheKey)('GET', '/api/v1/brokers/data/orders', params, this.sdkConfig);
|
|
714
|
-
cache.set(cacheKey, standardResponse, this.sdkConfig.cacheTtl || 300);
|
|
715
|
-
}
|
|
716
|
-
this.logger.debug('Get Orders completed', {
|
|
717
|
-
request_id: requestId,
|
|
718
|
-
action: 'getOrders',
|
|
719
|
-
});
|
|
720
|
-
// Phase 2C: Return standard response structure (already plain objects)
|
|
721
|
-
return standardResponse;
|
|
722
|
-
}
|
|
723
|
-
catch (error) {
|
|
724
|
-
try {
|
|
725
|
-
await (0, interceptors_1.applyErrorInterceptors)(error, this.sdkConfig);
|
|
726
|
-
}
|
|
727
|
-
catch { }
|
|
728
|
-
this.logger.error('Get Orders failed', error, {
|
|
729
|
-
request_id: requestId,
|
|
730
|
-
action: 'getOrders',
|
|
731
|
-
});
|
|
732
|
-
// Phase 2C: Extract error details from Axios errors or generic errors
|
|
733
|
-
let errorMessage = error instanceof Error ? error.message : String(error);
|
|
734
|
-
let errorCode = 'UNKNOWN_ERROR';
|
|
735
|
-
let errorStatus;
|
|
736
|
-
let errorDetails = {};
|
|
737
|
-
// Handle Axios errors (from OpenAPI generator)
|
|
738
|
-
if (error?.isAxiosError || error?.response) {
|
|
739
|
-
const axiosError = error;
|
|
740
|
-
errorStatus = axiosError.response?.status;
|
|
741
|
-
errorCode = axiosError.code || `HTTP_${errorStatus || 'UNKNOWN'}`;
|
|
742
|
-
errorMessage =
|
|
743
|
-
axiosError.response?.data?.message ||
|
|
744
|
-
axiosError.response?.statusText ||
|
|
745
|
-
axiosError.message ||
|
|
746
|
-
errorMessage;
|
|
747
|
-
errorDetails = {
|
|
748
|
-
status: errorStatus,
|
|
749
|
-
statusText: axiosError.response?.statusText,
|
|
750
|
-
responseData: axiosError.response?.data,
|
|
751
|
-
requestUrl: axiosError.config?.url,
|
|
752
|
-
requestMethod: axiosError.config?.method,
|
|
753
|
-
};
|
|
754
|
-
}
|
|
755
|
-
else if (error instanceof Error) {
|
|
756
|
-
errorCode = error?.code || 'UNKNOWN_ERROR';
|
|
757
|
-
errorDetails = {
|
|
758
|
-
stack: error.stack,
|
|
759
|
-
name: error.name,
|
|
760
|
-
};
|
|
761
|
-
}
|
|
762
|
-
else {
|
|
763
|
-
errorDetails = { error };
|
|
764
|
-
}
|
|
765
|
-
// Phase 2C: Return standard error response structure
|
|
766
|
-
const errorResponse = {
|
|
767
|
-
success: {
|
|
768
|
-
data: null,
|
|
769
|
-
},
|
|
770
|
-
Error: {
|
|
771
|
-
message: errorMessage,
|
|
772
|
-
code: errorCode,
|
|
773
|
-
status: errorStatus,
|
|
774
|
-
details: errorDetails,
|
|
775
|
-
},
|
|
776
|
-
};
|
|
777
|
-
return errorResponse;
|
|
778
|
-
}
|
|
779
|
-
// TODO Phase 2D: Add complex validation schemas (unions, enums, nested)
|
|
780
|
-
// TODO Phase 2D: Add orphaned method detection
|
|
781
|
-
// TODO Phase 2D: Add advanced convenience methods
|
|
782
|
-
}
|
|
783
|
-
/**
|
|
784
|
-
* Get Positions
|
|
785
|
-
*
|
|
786
|
-
* Get positions for all authorized broker connections.
|
|
787
|
-
*
|
|
788
|
-
* This endpoint is accessible from the portal and uses session-only authentication.
|
|
789
|
-
* Returns positions from connections the company has read access to.
|
|
790
|
-
|
|
791
|
-
* @param params {GetPositionsParams} Input parameters object
|
|
792
|
-
* @returns {Promise<GetPositionsResponse>} Standard response with success/Error/Warning structure
|
|
793
|
-
*
|
|
794
|
-
* Generated from: GET /api/v1/brokers/data/positions
|
|
795
|
-
* @methodId get_positions_api_v1_brokers_data_positions_get
|
|
796
|
-
* @category brokers
|
|
797
|
-
* @example
|
|
798
|
-
* ```typescript-client
|
|
799
|
-
* // Example with no parameters
|
|
800
|
-
* const result = await finatic.getPositions({});
|
|
801
|
-
*
|
|
802
|
-
* // Access the response data
|
|
803
|
-
* if (result.success) {
|
|
804
|
-
* console.log('Data:', result.success.data);
|
|
805
|
-
* }
|
|
806
|
-
* ```
|
|
807
|
-
* @example
|
|
808
|
-
* ```typescript-client
|
|
809
|
-
* // Full example with optional parameters
|
|
810
|
-
* const result = await finatic.getPositions({
|
|
811
|
-
brokerId: 'id-123',
|
|
812
|
-
connectionId: 'id-123',
|
|
813
|
-
accountId: 'id-123'
|
|
814
|
-
* });
|
|
815
|
-
*
|
|
816
|
-
* // Handle response with warnings
|
|
817
|
-
* if (result.success) {
|
|
818
|
-
* console.log('Data:', result.success.data);
|
|
819
|
-
* if (result.Warning && result.Warning.length > 0) {
|
|
820
|
-
* console.warn('Warnings:', result.Warning);
|
|
821
|
-
* }
|
|
822
|
-
* } else if (result.Error) {
|
|
823
|
-
* console.error('Error:', result.Error.message, result.Error.code);
|
|
824
|
-
* }
|
|
825
|
-
* ```
|
|
826
|
-
*/
|
|
827
|
-
async getPositions(params) {
|
|
828
|
-
// Authentication check
|
|
829
|
-
if (!this.sessionId) {
|
|
830
|
-
throw new Error('Session not initialized. Call startSession() first.');
|
|
831
|
-
}
|
|
832
|
-
// Phase 2C: Extract individual params from input params object
|
|
833
|
-
const brokerId = params.brokerId;
|
|
834
|
-
const connectionId = params.connectionId;
|
|
835
|
-
const accountId = params.accountId;
|
|
836
|
-
const symbol = params.symbol;
|
|
837
|
-
let side = params.side !== undefined
|
|
838
|
-
? (0, enum_coercion_1.coerceEnumValue)(params.side, models_3.PublicOrderSideEnum, 'side')
|
|
839
|
-
: undefined;
|
|
840
|
-
let assetType = params.assetType !== undefined
|
|
841
|
-
? (0, enum_coercion_1.coerceEnumValue)(params.assetType, models_2.PublicAssetTypeEnum, 'assetType')
|
|
842
|
-
: undefined;
|
|
843
|
-
let positionStatus = params.positionStatus !== undefined
|
|
844
|
-
? (0, enum_coercion_1.coerceEnumValue)(params.positionStatus, models_5.PublicPositionStatusEnum, 'positionStatus')
|
|
845
|
-
: undefined;
|
|
846
|
-
const limit = params.limit;
|
|
847
|
-
const offset = params.offset;
|
|
848
|
-
const updatedAfter = params.updatedAfter;
|
|
849
|
-
const updatedBefore = params.updatedBefore;
|
|
850
|
-
const withMetadata = params.withMetadata;
|
|
851
|
-
// Generate request ID
|
|
852
|
-
const requestId = this._generateRequestId();
|
|
853
|
-
// Input validation (Phase 2B: zod)
|
|
854
|
-
if (this.sdkConfig?.validationEnabled) {
|
|
855
|
-
// TODO: Generate validation schema from endpoint parameters
|
|
856
|
-
// const validationSchema = z.object({ ... });
|
|
857
|
-
// validateParams(validationSchema, params, this.sdkConfig);
|
|
858
|
-
}
|
|
859
|
-
// Check cache (Phase 2B: optional caching)
|
|
860
|
-
const shouldCache = true;
|
|
861
|
-
const cache = (0, cache_1.getCache)(this.sdkConfig);
|
|
862
|
-
if (cache && this.sdkConfig?.cacheEnabled && shouldCache) {
|
|
863
|
-
const cacheKey = (0, cache_1.generateCacheKey)('GET', '/api/v1/brokers/data/positions', params, this.sdkConfig);
|
|
864
|
-
const cached = cache.get(cacheKey);
|
|
865
|
-
if (cached) {
|
|
866
|
-
this.logger.debug('Cache hit', { request_id: requestId, cache_key: cacheKey });
|
|
867
|
-
return cached;
|
|
868
|
-
}
|
|
869
|
-
}
|
|
870
|
-
// Structured logging (Phase 2B: pino)
|
|
871
|
-
this.logger.debug('Get Positions', {
|
|
872
|
-
request_id: requestId,
|
|
873
|
-
method: 'GET',
|
|
874
|
-
path: '/api/v1/brokers/data/positions',
|
|
875
|
-
params: params,
|
|
876
|
-
action: 'getPositions',
|
|
877
|
-
});
|
|
878
|
-
try {
|
|
879
|
-
const response = await (0, retry_1.retryApiCall)(async () => {
|
|
880
|
-
const apiResponse = await this.api.getPositionsApiV1BrokersDataPositionsGet({
|
|
881
|
-
...(brokerId !== undefined ? { brokerId: brokerId } : {}),
|
|
882
|
-
...(connectionId !== undefined ? { connectionId: connectionId } : {}),
|
|
883
|
-
...(accountId !== undefined ? { accountId: accountId } : {}),
|
|
884
|
-
...(symbol !== undefined ? { symbol: symbol } : {}),
|
|
885
|
-
...(side !== undefined ? { side: side } : {}),
|
|
886
|
-
...(assetType !== undefined ? { assetType: assetType } : {}),
|
|
887
|
-
...(positionStatus !== undefined ? { positionStatus: positionStatus } : {}),
|
|
888
|
-
...(limit !== undefined ? { limit: limit } : {}),
|
|
889
|
-
...(offset !== undefined ? { offset: offset } : {}),
|
|
890
|
-
...(updatedAfter !== undefined ? { updatedAfter: updatedAfter } : {}),
|
|
891
|
-
...(updatedBefore !== undefined ? { updatedBefore: updatedBefore } : {}),
|
|
892
|
-
...(withMetadata !== undefined ? { withMetadata: withMetadata } : {}),
|
|
893
|
-
}, {
|
|
894
|
-
headers: {
|
|
895
|
-
'x-session-id': this.sessionId,
|
|
896
|
-
'x-company-id': this.companyId,
|
|
897
|
-
'x-csrf-token': this.csrfToken,
|
|
898
|
-
'x-request-id': requestId,
|
|
899
|
-
},
|
|
900
|
-
});
|
|
901
|
-
return await (0, interceptors_1.applyResponseInterceptors)(apiResponse, this.sdkConfig);
|
|
902
|
-
}, {}, this.sdkConfig);
|
|
903
|
-
// Phase 2C: Unwrap API response and transform to standard response structure
|
|
904
|
-
const responseData = response && typeof response === 'object' && 'data' in response
|
|
905
|
-
? response.data
|
|
906
|
-
: response;
|
|
907
|
-
if (!(responseData && typeof responseData === 'object' && 'data' in responseData)) {
|
|
908
|
-
throw new Error('Unexpected response shape: missing data');
|
|
909
|
-
}
|
|
910
|
-
const apiData = responseData.data;
|
|
911
|
-
const warnings = Array.isArray(responseData.warnings)
|
|
912
|
-
? responseData.warnings
|
|
913
|
-
: undefined;
|
|
914
|
-
const meta = responseData.meta;
|
|
915
|
-
// Build standard response structure
|
|
916
|
-
const standardResponse = {
|
|
917
|
-
success: {
|
|
918
|
-
data: (0, plain_object_1.convertToPlainObject)(apiData),
|
|
919
|
-
...(meta ? { meta } : {}),
|
|
920
|
-
},
|
|
921
|
-
...(warnings && warnings.length > 0
|
|
922
|
-
? {
|
|
923
|
-
Warning: warnings.map((w) => ({
|
|
924
|
-
message: w.message || String(w),
|
|
925
|
-
code: w.code,
|
|
926
|
-
details: w.details || w,
|
|
927
|
-
})),
|
|
928
|
-
}
|
|
929
|
-
: {}),
|
|
930
|
-
};
|
|
931
|
-
if (cache && this.sdkConfig?.cacheEnabled && shouldCache) {
|
|
932
|
-
const cacheKey = (0, cache_1.generateCacheKey)('GET', '/api/v1/brokers/data/positions', params, this.sdkConfig);
|
|
933
|
-
cache.set(cacheKey, standardResponse, this.sdkConfig.cacheTtl || 300);
|
|
934
|
-
}
|
|
935
|
-
this.logger.debug('Get Positions completed', {
|
|
936
|
-
request_id: requestId,
|
|
937
|
-
action: 'getPositions',
|
|
938
|
-
});
|
|
939
|
-
// Phase 2C: Return standard response structure (already plain objects)
|
|
940
|
-
return standardResponse;
|
|
941
|
-
}
|
|
942
|
-
catch (error) {
|
|
943
|
-
try {
|
|
944
|
-
await (0, interceptors_1.applyErrorInterceptors)(error, this.sdkConfig);
|
|
945
|
-
}
|
|
946
|
-
catch { }
|
|
947
|
-
this.logger.error('Get Positions failed', error, {
|
|
948
|
-
request_id: requestId,
|
|
949
|
-
action: 'getPositions',
|
|
950
|
-
});
|
|
951
|
-
// Phase 2C: Extract error details from Axios errors or generic errors
|
|
952
|
-
let errorMessage = error instanceof Error ? error.message : String(error);
|
|
953
|
-
let errorCode = 'UNKNOWN_ERROR';
|
|
954
|
-
let errorStatus;
|
|
955
|
-
let errorDetails = {};
|
|
956
|
-
// Handle Axios errors (from OpenAPI generator)
|
|
957
|
-
if (error?.isAxiosError || error?.response) {
|
|
958
|
-
const axiosError = error;
|
|
959
|
-
errorStatus = axiosError.response?.status;
|
|
960
|
-
errorCode = axiosError.code || `HTTP_${errorStatus || 'UNKNOWN'}`;
|
|
961
|
-
errorMessage =
|
|
962
|
-
axiosError.response?.data?.message ||
|
|
963
|
-
axiosError.response?.statusText ||
|
|
964
|
-
axiosError.message ||
|
|
965
|
-
errorMessage;
|
|
966
|
-
errorDetails = {
|
|
967
|
-
status: errorStatus,
|
|
968
|
-
statusText: axiosError.response?.statusText,
|
|
969
|
-
responseData: axiosError.response?.data,
|
|
970
|
-
requestUrl: axiosError.config?.url,
|
|
971
|
-
requestMethod: axiosError.config?.method,
|
|
972
|
-
};
|
|
973
|
-
}
|
|
974
|
-
else if (error instanceof Error) {
|
|
975
|
-
errorCode = error?.code || 'UNKNOWN_ERROR';
|
|
976
|
-
errorDetails = {
|
|
977
|
-
stack: error.stack,
|
|
978
|
-
name: error.name,
|
|
979
|
-
};
|
|
980
|
-
}
|
|
981
|
-
else {
|
|
982
|
-
errorDetails = { error };
|
|
983
|
-
}
|
|
984
|
-
// Phase 2C: Return standard error response structure
|
|
985
|
-
const errorResponse = {
|
|
986
|
-
success: {
|
|
987
|
-
data: null,
|
|
988
|
-
},
|
|
989
|
-
Error: {
|
|
990
|
-
message: errorMessage,
|
|
991
|
-
code: errorCode,
|
|
992
|
-
status: errorStatus,
|
|
993
|
-
details: errorDetails,
|
|
994
|
-
},
|
|
995
|
-
};
|
|
996
|
-
return errorResponse;
|
|
997
|
-
}
|
|
998
|
-
// TODO Phase 2D: Add complex validation schemas (unions, enums, nested)
|
|
999
|
-
// TODO Phase 2D: Add orphaned method detection
|
|
1000
|
-
// TODO Phase 2D: Add advanced convenience methods
|
|
1001
|
-
}
|
|
1002
|
-
/**
|
|
1003
|
-
* Get Balances
|
|
1004
|
-
*
|
|
1005
|
-
* Get balances for all authorized broker connections.
|
|
1006
|
-
*
|
|
1007
|
-
* This endpoint is accessible from the portal and uses session-only authentication.
|
|
1008
|
-
* Returns balances from connections the company has read access to.
|
|
1009
|
-
|
|
1010
|
-
* @param params {GetBalancesParams} Input parameters object
|
|
1011
|
-
* @returns {Promise<GetBalancesResponse>} Standard response with success/Error/Warning structure
|
|
1012
|
-
*
|
|
1013
|
-
* Generated from: GET /api/v1/brokers/data/balances
|
|
1014
|
-
* @methodId get_balances_api_v1_brokers_data_balances_get
|
|
1015
|
-
* @category brokers
|
|
1016
|
-
* @example
|
|
1017
|
-
* ```typescript-client
|
|
1018
|
-
* // Example with no parameters
|
|
1019
|
-
* const result = await finatic.getBalances({});
|
|
1020
|
-
*
|
|
1021
|
-
* // Access the response data
|
|
1022
|
-
* if (result.success) {
|
|
1023
|
-
* console.log('Data:', result.success.data);
|
|
1024
|
-
* }
|
|
1025
|
-
* ```
|
|
1026
|
-
* @example
|
|
1027
|
-
* ```typescript-client
|
|
1028
|
-
* // Full example with optional parameters
|
|
1029
|
-
* const result = await finatic.getBalances({
|
|
1030
|
-
brokerId: 'id-123',
|
|
1031
|
-
connectionId: 'id-123',
|
|
1032
|
-
accountId: 'id-123'
|
|
1033
|
-
* });
|
|
1034
|
-
*
|
|
1035
|
-
* // Handle response with warnings
|
|
1036
|
-
* if (result.success) {
|
|
1037
|
-
* console.log('Data:', result.success.data);
|
|
1038
|
-
* if (result.Warning && result.Warning.length > 0) {
|
|
1039
|
-
* console.warn('Warnings:', result.Warning);
|
|
1040
|
-
* }
|
|
1041
|
-
* } else if (result.Error) {
|
|
1042
|
-
* console.error('Error:', result.Error.message, result.Error.code);
|
|
1043
|
-
* }
|
|
1044
|
-
* ```
|
|
1045
|
-
*/
|
|
1046
|
-
async getBalances(params) {
|
|
1047
|
-
// Authentication check
|
|
1048
|
-
if (!this.sessionId) {
|
|
1049
|
-
throw new Error('Session not initialized. Call startSession() first.');
|
|
1050
|
-
}
|
|
1051
|
-
// Phase 2C: Extract individual params from input params object
|
|
1052
|
-
const brokerId = params.brokerId;
|
|
1053
|
-
const connectionId = params.connectionId;
|
|
1054
|
-
const accountId = params.accountId;
|
|
1055
|
-
const isEndOfDaySnapshot = params.isEndOfDaySnapshot;
|
|
1056
|
-
const limit = params.limit;
|
|
1057
|
-
const offset = params.offset;
|
|
1058
|
-
const balanceCreatedAfter = params.balanceCreatedAfter;
|
|
1059
|
-
const balanceCreatedBefore = params.balanceCreatedBefore;
|
|
1060
|
-
const withMetadata = params.withMetadata;
|
|
1061
|
-
// Generate request ID
|
|
1062
|
-
const requestId = this._generateRequestId();
|
|
1063
|
-
// Input validation (Phase 2B: zod)
|
|
1064
|
-
if (this.sdkConfig?.validationEnabled) {
|
|
1065
|
-
// TODO: Generate validation schema from endpoint parameters
|
|
1066
|
-
// const validationSchema = z.object({ ... });
|
|
1067
|
-
// validateParams(validationSchema, params, this.sdkConfig);
|
|
1068
|
-
}
|
|
1069
|
-
// Check cache (Phase 2B: optional caching)
|
|
1070
|
-
const shouldCache = true;
|
|
1071
|
-
const cache = (0, cache_1.getCache)(this.sdkConfig);
|
|
1072
|
-
if (cache && this.sdkConfig?.cacheEnabled && shouldCache) {
|
|
1073
|
-
const cacheKey = (0, cache_1.generateCacheKey)('GET', '/api/v1/brokers/data/balances', params, this.sdkConfig);
|
|
1074
|
-
const cached = cache.get(cacheKey);
|
|
1075
|
-
if (cached) {
|
|
1076
|
-
this.logger.debug('Cache hit', { request_id: requestId, cache_key: cacheKey });
|
|
1077
|
-
return cached;
|
|
1078
|
-
}
|
|
1079
|
-
}
|
|
1080
|
-
// Structured logging (Phase 2B: pino)
|
|
1081
|
-
this.logger.debug('Get Balances', {
|
|
1082
|
-
request_id: requestId,
|
|
1083
|
-
method: 'GET',
|
|
1084
|
-
path: '/api/v1/brokers/data/balances',
|
|
1085
|
-
params: params,
|
|
1086
|
-
action: 'getBalances',
|
|
1087
|
-
});
|
|
1088
|
-
try {
|
|
1089
|
-
const response = await (0, retry_1.retryApiCall)(async () => {
|
|
1090
|
-
const apiResponse = await this.api.getBalancesApiV1BrokersDataBalancesGet({
|
|
1091
|
-
...(brokerId !== undefined ? { brokerId: brokerId } : {}),
|
|
1092
|
-
...(connectionId !== undefined ? { connectionId: connectionId } : {}),
|
|
1093
|
-
...(accountId !== undefined ? { accountId: accountId } : {}),
|
|
1094
|
-
...(isEndOfDaySnapshot !== undefined
|
|
1095
|
-
? { isEndOfDaySnapshot: isEndOfDaySnapshot }
|
|
1096
|
-
: {}),
|
|
1097
|
-
...(limit !== undefined ? { limit: limit } : {}),
|
|
1098
|
-
...(offset !== undefined ? { offset: offset } : {}),
|
|
1099
|
-
...(balanceCreatedAfter !== undefined
|
|
1100
|
-
? { balanceCreatedAfter: balanceCreatedAfter }
|
|
1101
|
-
: {}),
|
|
1102
|
-
...(balanceCreatedBefore !== undefined
|
|
1103
|
-
? { balanceCreatedBefore: balanceCreatedBefore }
|
|
1104
|
-
: {}),
|
|
1105
|
-
...(withMetadata !== undefined ? { withMetadata: withMetadata } : {}),
|
|
1106
|
-
}, {
|
|
1107
|
-
headers: {
|
|
1108
|
-
'x-session-id': this.sessionId,
|
|
1109
|
-
'x-company-id': this.companyId,
|
|
1110
|
-
'x-csrf-token': this.csrfToken,
|
|
1111
|
-
'x-request-id': requestId,
|
|
1112
|
-
},
|
|
1113
|
-
});
|
|
1114
|
-
return await (0, interceptors_1.applyResponseInterceptors)(apiResponse, this.sdkConfig);
|
|
1115
|
-
}, {}, this.sdkConfig);
|
|
1116
|
-
// Phase 2C: Unwrap API response and transform to standard response structure
|
|
1117
|
-
const responseData = response && typeof response === 'object' && 'data' in response
|
|
1118
|
-
? response.data
|
|
1119
|
-
: response;
|
|
1120
|
-
if (!(responseData && typeof responseData === 'object' && 'data' in responseData)) {
|
|
1121
|
-
throw new Error('Unexpected response shape: missing data');
|
|
1122
|
-
}
|
|
1123
|
-
const apiData = responseData.data;
|
|
1124
|
-
const warnings = Array.isArray(responseData.warnings)
|
|
1125
|
-
? responseData.warnings
|
|
1126
|
-
: undefined;
|
|
1127
|
-
const meta = responseData.meta;
|
|
1128
|
-
// Build standard response structure
|
|
1129
|
-
const standardResponse = {
|
|
1130
|
-
success: {
|
|
1131
|
-
data: (0, plain_object_1.convertToPlainObject)(apiData),
|
|
1132
|
-
...(meta ? { meta } : {}),
|
|
1133
|
-
},
|
|
1134
|
-
...(warnings && warnings.length > 0
|
|
1135
|
-
? {
|
|
1136
|
-
Warning: warnings.map((w) => ({
|
|
1137
|
-
message: w.message || String(w),
|
|
1138
|
-
code: w.code,
|
|
1139
|
-
details: w.details || w,
|
|
1140
|
-
})),
|
|
1141
|
-
}
|
|
1142
|
-
: {}),
|
|
1143
|
-
};
|
|
1144
|
-
if (cache && this.sdkConfig?.cacheEnabled && shouldCache) {
|
|
1145
|
-
const cacheKey = (0, cache_1.generateCacheKey)('GET', '/api/v1/brokers/data/balances', params, this.sdkConfig);
|
|
1146
|
-
cache.set(cacheKey, standardResponse, this.sdkConfig.cacheTtl || 300);
|
|
1147
|
-
}
|
|
1148
|
-
this.logger.debug('Get Balances completed', {
|
|
1149
|
-
request_id: requestId,
|
|
1150
|
-
action: 'getBalances',
|
|
1151
|
-
});
|
|
1152
|
-
// Phase 2C: Return standard response structure (already plain objects)
|
|
1153
|
-
return standardResponse;
|
|
1154
|
-
}
|
|
1155
|
-
catch (error) {
|
|
1156
|
-
try {
|
|
1157
|
-
await (0, interceptors_1.applyErrorInterceptors)(error, this.sdkConfig);
|
|
1158
|
-
}
|
|
1159
|
-
catch { }
|
|
1160
|
-
this.logger.error('Get Balances failed', error, {
|
|
1161
|
-
request_id: requestId,
|
|
1162
|
-
action: 'getBalances',
|
|
1163
|
-
});
|
|
1164
|
-
// Phase 2C: Extract error details from Axios errors or generic errors
|
|
1165
|
-
let errorMessage = error instanceof Error ? error.message : String(error);
|
|
1166
|
-
let errorCode = 'UNKNOWN_ERROR';
|
|
1167
|
-
let errorStatus;
|
|
1168
|
-
let errorDetails = {};
|
|
1169
|
-
// Handle Axios errors (from OpenAPI generator)
|
|
1170
|
-
if (error?.isAxiosError || error?.response) {
|
|
1171
|
-
const axiosError = error;
|
|
1172
|
-
errorStatus = axiosError.response?.status;
|
|
1173
|
-
errorCode = axiosError.code || `HTTP_${errorStatus || 'UNKNOWN'}`;
|
|
1174
|
-
errorMessage =
|
|
1175
|
-
axiosError.response?.data?.message ||
|
|
1176
|
-
axiosError.response?.statusText ||
|
|
1177
|
-
axiosError.message ||
|
|
1178
|
-
errorMessage;
|
|
1179
|
-
errorDetails = {
|
|
1180
|
-
status: errorStatus,
|
|
1181
|
-
statusText: axiosError.response?.statusText,
|
|
1182
|
-
responseData: axiosError.response?.data,
|
|
1183
|
-
requestUrl: axiosError.config?.url,
|
|
1184
|
-
requestMethod: axiosError.config?.method,
|
|
1185
|
-
};
|
|
1186
|
-
}
|
|
1187
|
-
else if (error instanceof Error) {
|
|
1188
|
-
errorCode = error?.code || 'UNKNOWN_ERROR';
|
|
1189
|
-
errorDetails = {
|
|
1190
|
-
stack: error.stack,
|
|
1191
|
-
name: error.name,
|
|
1192
|
-
};
|
|
1193
|
-
}
|
|
1194
|
-
else {
|
|
1195
|
-
errorDetails = { error };
|
|
1196
|
-
}
|
|
1197
|
-
// Phase 2C: Return standard error response structure
|
|
1198
|
-
const errorResponse = {
|
|
1199
|
-
success: {
|
|
1200
|
-
data: null,
|
|
1201
|
-
},
|
|
1202
|
-
Error: {
|
|
1203
|
-
message: errorMessage,
|
|
1204
|
-
code: errorCode,
|
|
1205
|
-
status: errorStatus,
|
|
1206
|
-
details: errorDetails,
|
|
1207
|
-
},
|
|
1208
|
-
};
|
|
1209
|
-
return errorResponse;
|
|
1210
|
-
}
|
|
1211
|
-
// TODO Phase 2D: Add complex validation schemas (unions, enums, nested)
|
|
1212
|
-
// TODO Phase 2D: Add orphaned method detection
|
|
1213
|
-
// TODO Phase 2D: Add advanced convenience methods
|
|
1214
|
-
}
|
|
1215
|
-
/**
|
|
1216
|
-
* Get Accounts
|
|
1217
|
-
*
|
|
1218
|
-
* Get accounts for all authorized broker connections.
|
|
1219
|
-
*
|
|
1220
|
-
* This endpoint is accessible from the portal and uses session-only authentication.
|
|
1221
|
-
* Returns accounts from connections the company has read access to.
|
|
1222
|
-
|
|
1223
|
-
* @param params {GetAccountsParams} Input parameters object
|
|
1224
|
-
* @returns {Promise<GetAccountsResponse>} Standard response with success/Error/Warning structure
|
|
1225
|
-
*
|
|
1226
|
-
* Generated from: GET /api/v1/brokers/data/accounts
|
|
1227
|
-
* @methodId get_accounts_api_v1_brokers_data_accounts_get
|
|
1228
|
-
* @category brokers
|
|
1229
|
-
* @example
|
|
1230
|
-
* ```typescript-client
|
|
1231
|
-
* // Example with no parameters
|
|
1232
|
-
* const result = await finatic.getAccounts({});
|
|
1233
|
-
*
|
|
1234
|
-
* // Access the response data
|
|
1235
|
-
* if (result.success) {
|
|
1236
|
-
* console.log('Data:', result.success.data);
|
|
1237
|
-
* }
|
|
1238
|
-
* ```
|
|
1239
|
-
* @example
|
|
1240
|
-
* ```typescript-client
|
|
1241
|
-
* // Full example with optional parameters
|
|
1242
|
-
* const result = await finatic.getAccounts({
|
|
1243
|
-
brokerId: 'id-123',
|
|
1244
|
-
connectionId: 'id-123',
|
|
1245
|
-
accountType: 'cash'
|
|
1246
|
-
* });
|
|
1247
|
-
*
|
|
1248
|
-
* // Handle response with warnings
|
|
1249
|
-
* if (result.success) {
|
|
1250
|
-
* console.log('Data:', result.success.data);
|
|
1251
|
-
* if (result.Warning && result.Warning.length > 0) {
|
|
1252
|
-
* console.warn('Warnings:', result.Warning);
|
|
1253
|
-
* }
|
|
1254
|
-
* } else if (result.Error) {
|
|
1255
|
-
* console.error('Error:', result.Error.message, result.Error.code);
|
|
1256
|
-
* }
|
|
1257
|
-
* ```
|
|
1258
|
-
*/
|
|
1259
|
-
async getAccounts(params) {
|
|
1260
|
-
// Authentication check
|
|
1261
|
-
if (!this.sessionId) {
|
|
1262
|
-
throw new Error('Session not initialized. Call startSession() first.');
|
|
1263
|
-
}
|
|
1264
|
-
// Phase 2C: Extract individual params from input params object
|
|
1265
|
-
const brokerId = params.brokerId;
|
|
1266
|
-
const connectionId = params.connectionId;
|
|
1267
|
-
let accountType = params.accountType !== undefined
|
|
1268
|
-
? (0, enum_coercion_1.coerceEnumValue)(params.accountType, models_1.PublicAccountTypeEnum, 'accountType')
|
|
1269
|
-
: undefined;
|
|
1270
|
-
const status = params.status;
|
|
1271
|
-
const currency = params.currency;
|
|
1272
|
-
const limit = params.limit;
|
|
1273
|
-
const offset = params.offset;
|
|
1274
|
-
const withMetadata = params.withMetadata;
|
|
1275
|
-
// Generate request ID
|
|
1276
|
-
const requestId = this._generateRequestId();
|
|
1277
|
-
// Input validation (Phase 2B: zod)
|
|
1278
|
-
if (this.sdkConfig?.validationEnabled) {
|
|
1279
|
-
// TODO: Generate validation schema from endpoint parameters
|
|
1280
|
-
// const validationSchema = z.object({ ... });
|
|
1281
|
-
// validateParams(validationSchema, params, this.sdkConfig);
|
|
1282
|
-
}
|
|
1283
|
-
// Check cache (Phase 2B: optional caching)
|
|
1284
|
-
const shouldCache = true;
|
|
1285
|
-
const cache = (0, cache_1.getCache)(this.sdkConfig);
|
|
1286
|
-
if (cache && this.sdkConfig?.cacheEnabled && shouldCache) {
|
|
1287
|
-
const cacheKey = (0, cache_1.generateCacheKey)('GET', '/api/v1/brokers/data/accounts', params, this.sdkConfig);
|
|
1288
|
-
const cached = cache.get(cacheKey);
|
|
1289
|
-
if (cached) {
|
|
1290
|
-
this.logger.debug('Cache hit', { request_id: requestId, cache_key: cacheKey });
|
|
1291
|
-
return cached;
|
|
1292
|
-
}
|
|
1293
|
-
}
|
|
1294
|
-
// Structured logging (Phase 2B: pino)
|
|
1295
|
-
this.logger.debug('Get Accounts', {
|
|
1296
|
-
request_id: requestId,
|
|
1297
|
-
method: 'GET',
|
|
1298
|
-
path: '/api/v1/brokers/data/accounts',
|
|
1299
|
-
params: params,
|
|
1300
|
-
action: 'getAccounts',
|
|
1301
|
-
});
|
|
1302
|
-
try {
|
|
1303
|
-
const response = await (0, retry_1.retryApiCall)(async () => {
|
|
1304
|
-
const apiResponse = await this.api.getAccountsApiV1BrokersDataAccountsGet({
|
|
1305
|
-
...(brokerId !== undefined ? { brokerId: brokerId } : {}),
|
|
1306
|
-
...(connectionId !== undefined ? { connectionId: connectionId } : {}),
|
|
1307
|
-
...(accountType !== undefined ? { accountType: accountType } : {}),
|
|
1308
|
-
...(status !== undefined ? { status: status } : {}),
|
|
1309
|
-
...(currency !== undefined ? { currency: currency } : {}),
|
|
1310
|
-
...(limit !== undefined ? { limit: limit } : {}),
|
|
1311
|
-
...(offset !== undefined ? { offset: offset } : {}),
|
|
1312
|
-
...(withMetadata !== undefined ? { withMetadata: withMetadata } : {}),
|
|
1313
|
-
}, {
|
|
1314
|
-
headers: {
|
|
1315
|
-
'x-session-id': this.sessionId,
|
|
1316
|
-
'x-company-id': this.companyId,
|
|
1317
|
-
'x-csrf-token': this.csrfToken,
|
|
1318
|
-
'x-request-id': requestId,
|
|
1319
|
-
},
|
|
1320
|
-
});
|
|
1321
|
-
return await (0, interceptors_1.applyResponseInterceptors)(apiResponse, this.sdkConfig);
|
|
1322
|
-
}, {}, this.sdkConfig);
|
|
1323
|
-
// Phase 2C: Unwrap API response and transform to standard response structure
|
|
1324
|
-
const responseData = response && typeof response === 'object' && 'data' in response
|
|
1325
|
-
? response.data
|
|
1326
|
-
: response;
|
|
1327
|
-
if (!(responseData && typeof responseData === 'object' && 'data' in responseData)) {
|
|
1328
|
-
throw new Error('Unexpected response shape: missing data');
|
|
1329
|
-
}
|
|
1330
|
-
const apiData = responseData.data;
|
|
1331
|
-
const warnings = Array.isArray(responseData.warnings)
|
|
1332
|
-
? responseData.warnings
|
|
1333
|
-
: undefined;
|
|
1334
|
-
const meta = responseData.meta;
|
|
1335
|
-
// Build standard response structure
|
|
1336
|
-
const standardResponse = {
|
|
1337
|
-
success: {
|
|
1338
|
-
data: (0, plain_object_1.convertToPlainObject)(apiData),
|
|
1339
|
-
...(meta ? { meta } : {}),
|
|
1340
|
-
},
|
|
1341
|
-
...(warnings && warnings.length > 0
|
|
1342
|
-
? {
|
|
1343
|
-
Warning: warnings.map((w) => ({
|
|
1344
|
-
message: w.message || String(w),
|
|
1345
|
-
code: w.code,
|
|
1346
|
-
details: w.details || w,
|
|
1347
|
-
})),
|
|
1348
|
-
}
|
|
1349
|
-
: {}),
|
|
1350
|
-
};
|
|
1351
|
-
if (cache && this.sdkConfig?.cacheEnabled && shouldCache) {
|
|
1352
|
-
const cacheKey = (0, cache_1.generateCacheKey)('GET', '/api/v1/brokers/data/accounts', params, this.sdkConfig);
|
|
1353
|
-
cache.set(cacheKey, standardResponse, this.sdkConfig.cacheTtl || 300);
|
|
1354
|
-
}
|
|
1355
|
-
this.logger.debug('Get Accounts completed', {
|
|
1356
|
-
request_id: requestId,
|
|
1357
|
-
action: 'getAccounts',
|
|
1358
|
-
});
|
|
1359
|
-
// Phase 2C: Return standard response structure (already plain objects)
|
|
1360
|
-
return standardResponse;
|
|
1361
|
-
}
|
|
1362
|
-
catch (error) {
|
|
1363
|
-
try {
|
|
1364
|
-
await (0, interceptors_1.applyErrorInterceptors)(error, this.sdkConfig);
|
|
1365
|
-
}
|
|
1366
|
-
catch { }
|
|
1367
|
-
this.logger.error('Get Accounts failed', error, {
|
|
1368
|
-
request_id: requestId,
|
|
1369
|
-
action: 'getAccounts',
|
|
1370
|
-
});
|
|
1371
|
-
// Phase 2C: Extract error details from Axios errors or generic errors
|
|
1372
|
-
let errorMessage = error instanceof Error ? error.message : String(error);
|
|
1373
|
-
let errorCode = 'UNKNOWN_ERROR';
|
|
1374
|
-
let errorStatus;
|
|
1375
|
-
let errorDetails = {};
|
|
1376
|
-
// Handle Axios errors (from OpenAPI generator)
|
|
1377
|
-
if (error?.isAxiosError || error?.response) {
|
|
1378
|
-
const axiosError = error;
|
|
1379
|
-
errorStatus = axiosError.response?.status;
|
|
1380
|
-
errorCode = axiosError.code || `HTTP_${errorStatus || 'UNKNOWN'}`;
|
|
1381
|
-
errorMessage =
|
|
1382
|
-
axiosError.response?.data?.message ||
|
|
1383
|
-
axiosError.response?.statusText ||
|
|
1384
|
-
axiosError.message ||
|
|
1385
|
-
errorMessage;
|
|
1386
|
-
errorDetails = {
|
|
1387
|
-
status: errorStatus,
|
|
1388
|
-
statusText: axiosError.response?.statusText,
|
|
1389
|
-
responseData: axiosError.response?.data,
|
|
1390
|
-
requestUrl: axiosError.config?.url,
|
|
1391
|
-
requestMethod: axiosError.config?.method,
|
|
1392
|
-
};
|
|
1393
|
-
}
|
|
1394
|
-
else if (error instanceof Error) {
|
|
1395
|
-
errorCode = error?.code || 'UNKNOWN_ERROR';
|
|
1396
|
-
errorDetails = {
|
|
1397
|
-
stack: error.stack,
|
|
1398
|
-
name: error.name,
|
|
1399
|
-
};
|
|
1400
|
-
}
|
|
1401
|
-
else {
|
|
1402
|
-
errorDetails = { error };
|
|
1403
|
-
}
|
|
1404
|
-
// Phase 2C: Return standard error response structure
|
|
1405
|
-
const errorResponse = {
|
|
1406
|
-
success: {
|
|
1407
|
-
data: null,
|
|
1408
|
-
},
|
|
1409
|
-
Error: {
|
|
1410
|
-
message: errorMessage,
|
|
1411
|
-
code: errorCode,
|
|
1412
|
-
status: errorStatus,
|
|
1413
|
-
details: errorDetails,
|
|
1414
|
-
},
|
|
1415
|
-
};
|
|
1416
|
-
return errorResponse;
|
|
1417
|
-
}
|
|
1418
|
-
// TODO Phase 2D: Add complex validation schemas (unions, enums, nested)
|
|
1419
|
-
// TODO Phase 2D: Add orphaned method detection
|
|
1420
|
-
// TODO Phase 2D: Add advanced convenience methods
|
|
1421
|
-
}
|
|
1422
|
-
/**
|
|
1423
|
-
* Get Order Fills
|
|
1424
|
-
*
|
|
1425
|
-
* Get order fills for a specific order.
|
|
1426
|
-
*
|
|
1427
|
-
* This endpoint returns all execution fills for the specified order.
|
|
1428
|
-
|
|
1429
|
-
* @param params {GetOrderFillsParams} Input parameters object
|
|
1430
|
-
* @returns {Promise<GetOrderFillsResponse>} Standard response with success/Error/Warning structure
|
|
1431
|
-
*
|
|
1432
|
-
* Generated from: GET /api/v1/brokers/data/orders/{order_id}/fills
|
|
1433
|
-
* @methodId get_order_fills_api_v1_brokers_data_orders__order_id__fills_get
|
|
1434
|
-
* @category brokers
|
|
1435
|
-
* @example
|
|
1436
|
-
* ```typescript-client
|
|
1437
|
-
* // Minimal example with required parameters only
|
|
1438
|
-
* const result = await finatic.getOrderFills({
|
|
1439
|
-
orderId: 'id-123'
|
|
1440
|
-
* });
|
|
1441
|
-
*
|
|
1442
|
-
* // Access the response data
|
|
1443
|
-
* if (result.success) {
|
|
1444
|
-
* console.log('Data:', result.success.data);
|
|
1445
|
-
* } else if (result.Error) {
|
|
1446
|
-
* console.error('Error:', result.Error.message);
|
|
1447
|
-
* }
|
|
1448
|
-
* ```
|
|
1449
|
-
* @example
|
|
1450
|
-
* ```typescript-client
|
|
1451
|
-
* // Full example with optional parameters
|
|
1452
|
-
* const result = await finatic.getOrderFills({
|
|
1453
|
-
orderId: 'id-123',
|
|
1454
|
-
connectionId: 'id-123',
|
|
1455
|
-
limit: 10,
|
|
1456
|
-
offset: 0
|
|
1457
|
-
* });
|
|
1458
|
-
*
|
|
1459
|
-
* // Handle response with warnings
|
|
1460
|
-
* if (result.success) {
|
|
1461
|
-
* console.log('Data:', result.success.data);
|
|
1462
|
-
* if (result.Warning && result.Warning.length > 0) {
|
|
1463
|
-
* console.warn('Warnings:', result.Warning);
|
|
1464
|
-
* }
|
|
1465
|
-
* } else if (result.Error) {
|
|
1466
|
-
* console.error('Error:', result.Error.message, result.Error.code);
|
|
1467
|
-
* }
|
|
1468
|
-
* ```
|
|
1469
|
-
*/
|
|
1470
|
-
async getOrderFills(params) {
|
|
1471
|
-
// Authentication check
|
|
1472
|
-
if (!this.sessionId) {
|
|
1473
|
-
throw new Error('Session not initialized. Call startSession() first.');
|
|
1474
|
-
}
|
|
1475
|
-
// Phase 2C: Extract individual params from input params object
|
|
1476
|
-
const orderId = params.orderId;
|
|
1477
|
-
const connectionId = params.connectionId;
|
|
1478
|
-
const limit = params.limit;
|
|
1479
|
-
const offset = params.offset;
|
|
1480
|
-
// Generate request ID
|
|
1481
|
-
const requestId = this._generateRequestId();
|
|
1482
|
-
// Input validation (Phase 2B: zod)
|
|
1483
|
-
if (this.sdkConfig?.validationEnabled) {
|
|
1484
|
-
// TODO: Generate validation schema from endpoint parameters
|
|
1485
|
-
// const validationSchema = z.object({ ... });
|
|
1486
|
-
// validateParams(validationSchema, params, this.sdkConfig);
|
|
1487
|
-
}
|
|
1488
|
-
// Check cache (Phase 2B: optional caching)
|
|
1489
|
-
const shouldCache = true;
|
|
1490
|
-
const cache = (0, cache_1.getCache)(this.sdkConfig);
|
|
1491
|
-
if (cache && this.sdkConfig?.cacheEnabled && shouldCache) {
|
|
1492
|
-
const cacheKey = (0, cache_1.generateCacheKey)('GET', '/api/v1/brokers/data/orders/{order_id}/fills', params, this.sdkConfig);
|
|
1493
|
-
const cached = cache.get(cacheKey);
|
|
1494
|
-
if (cached) {
|
|
1495
|
-
this.logger.debug('Cache hit', { request_id: requestId, cache_key: cacheKey });
|
|
1496
|
-
return cached;
|
|
1497
|
-
}
|
|
1498
|
-
}
|
|
1499
|
-
// Structured logging (Phase 2B: pino)
|
|
1500
|
-
this.logger.debug('Get Order Fills', {
|
|
1501
|
-
request_id: requestId,
|
|
1502
|
-
method: 'GET',
|
|
1503
|
-
path: '/api/v1/brokers/data/orders/{order_id}/fills',
|
|
1504
|
-
params: params,
|
|
1505
|
-
action: 'getOrderFills',
|
|
1506
|
-
});
|
|
1507
|
-
try {
|
|
1508
|
-
const response = await (0, retry_1.retryApiCall)(async () => {
|
|
1509
|
-
const apiResponse = await this.api.getOrderFillsApiV1BrokersDataOrdersOrderIdFillsGet({
|
|
1510
|
-
orderId: orderId,
|
|
1511
|
-
...(connectionId !== undefined ? { connectionId: connectionId } : {}),
|
|
1512
|
-
...(limit !== undefined ? { limit: limit } : {}),
|
|
1513
|
-
...(offset !== undefined ? { offset: offset } : {}),
|
|
1514
|
-
}, {
|
|
1515
|
-
headers: {
|
|
1516
|
-
'x-session-id': this.sessionId,
|
|
1517
|
-
'x-company-id': this.companyId,
|
|
1518
|
-
'x-csrf-token': this.csrfToken,
|
|
1519
|
-
'x-request-id': requestId,
|
|
1520
|
-
},
|
|
1521
|
-
});
|
|
1522
|
-
return await (0, interceptors_1.applyResponseInterceptors)(apiResponse, this.sdkConfig);
|
|
1523
|
-
}, {}, this.sdkConfig);
|
|
1524
|
-
// Phase 2C: Unwrap API response and transform to standard response structure
|
|
1525
|
-
const responseData = response && typeof response === 'object' && 'data' in response
|
|
1526
|
-
? response.data
|
|
1527
|
-
: response;
|
|
1528
|
-
if (!(responseData && typeof responseData === 'object' && 'data' in responseData)) {
|
|
1529
|
-
throw new Error('Unexpected response shape: missing data');
|
|
1530
|
-
}
|
|
1531
|
-
const apiData = responseData.data;
|
|
1532
|
-
const warnings = Array.isArray(responseData.warnings)
|
|
1533
|
-
? responseData.warnings
|
|
1534
|
-
: undefined;
|
|
1535
|
-
const meta = responseData.meta;
|
|
1536
|
-
// Build standard response structure
|
|
1537
|
-
const standardResponse = {
|
|
1538
|
-
success: {
|
|
1539
|
-
data: (0, plain_object_1.convertToPlainObject)(apiData),
|
|
1540
|
-
...(meta ? { meta } : {}),
|
|
1541
|
-
},
|
|
1542
|
-
...(warnings && warnings.length > 0
|
|
1543
|
-
? {
|
|
1544
|
-
Warning: warnings.map((w) => ({
|
|
1545
|
-
message: w.message || String(w),
|
|
1546
|
-
code: w.code,
|
|
1547
|
-
details: w.details || w,
|
|
1548
|
-
})),
|
|
1549
|
-
}
|
|
1550
|
-
: {}),
|
|
1551
|
-
};
|
|
1552
|
-
if (cache && this.sdkConfig?.cacheEnabled && shouldCache) {
|
|
1553
|
-
const cacheKey = (0, cache_1.generateCacheKey)('GET', '/api/v1/brokers/data/orders/{order_id}/fills', params, this.sdkConfig);
|
|
1554
|
-
cache.set(cacheKey, standardResponse, this.sdkConfig.cacheTtl || 300);
|
|
1555
|
-
}
|
|
1556
|
-
this.logger.debug('Get Order Fills completed', {
|
|
1557
|
-
request_id: requestId,
|
|
1558
|
-
action: 'getOrderFills',
|
|
1559
|
-
});
|
|
1560
|
-
// Phase 2C: Return standard response structure (already plain objects)
|
|
1561
|
-
return standardResponse;
|
|
1562
|
-
}
|
|
1563
|
-
catch (error) {
|
|
1564
|
-
try {
|
|
1565
|
-
await (0, interceptors_1.applyErrorInterceptors)(error, this.sdkConfig);
|
|
1566
|
-
}
|
|
1567
|
-
catch { }
|
|
1568
|
-
this.logger.error('Get Order Fills failed', error, {
|
|
1569
|
-
request_id: requestId,
|
|
1570
|
-
action: 'getOrderFills',
|
|
1571
|
-
});
|
|
1572
|
-
// Phase 2C: Extract error details from Axios errors or generic errors
|
|
1573
|
-
let errorMessage = error instanceof Error ? error.message : String(error);
|
|
1574
|
-
let errorCode = 'UNKNOWN_ERROR';
|
|
1575
|
-
let errorStatus;
|
|
1576
|
-
let errorDetails = {};
|
|
1577
|
-
// Handle Axios errors (from OpenAPI generator)
|
|
1578
|
-
if (error?.isAxiosError || error?.response) {
|
|
1579
|
-
const axiosError = error;
|
|
1580
|
-
errorStatus = axiosError.response?.status;
|
|
1581
|
-
errorCode = axiosError.code || `HTTP_${errorStatus || 'UNKNOWN'}`;
|
|
1582
|
-
errorMessage =
|
|
1583
|
-
axiosError.response?.data?.message ||
|
|
1584
|
-
axiosError.response?.statusText ||
|
|
1585
|
-
axiosError.message ||
|
|
1586
|
-
errorMessage;
|
|
1587
|
-
errorDetails = {
|
|
1588
|
-
status: errorStatus,
|
|
1589
|
-
statusText: axiosError.response?.statusText,
|
|
1590
|
-
responseData: axiosError.response?.data,
|
|
1591
|
-
requestUrl: axiosError.config?.url,
|
|
1592
|
-
requestMethod: axiosError.config?.method,
|
|
1593
|
-
};
|
|
1594
|
-
}
|
|
1595
|
-
else if (error instanceof Error) {
|
|
1596
|
-
errorCode = error?.code || 'UNKNOWN_ERROR';
|
|
1597
|
-
errorDetails = {
|
|
1598
|
-
stack: error.stack,
|
|
1599
|
-
name: error.name,
|
|
1600
|
-
};
|
|
1601
|
-
}
|
|
1602
|
-
else {
|
|
1603
|
-
errorDetails = { error };
|
|
1604
|
-
}
|
|
1605
|
-
// Phase 2C: Return standard error response structure
|
|
1606
|
-
const errorResponse = {
|
|
1607
|
-
success: {
|
|
1608
|
-
data: null,
|
|
1609
|
-
},
|
|
1610
|
-
Error: {
|
|
1611
|
-
message: errorMessage,
|
|
1612
|
-
code: errorCode,
|
|
1613
|
-
status: errorStatus,
|
|
1614
|
-
details: errorDetails,
|
|
1615
|
-
},
|
|
1616
|
-
};
|
|
1617
|
-
return errorResponse;
|
|
1618
|
-
}
|
|
1619
|
-
// TODO Phase 2D: Add complex validation schemas (unions, enums, nested)
|
|
1620
|
-
// TODO Phase 2D: Add orphaned method detection
|
|
1621
|
-
// TODO Phase 2D: Add advanced convenience methods
|
|
1622
|
-
}
|
|
1623
|
-
/**
|
|
1624
|
-
* Get Order Events
|
|
1625
|
-
*
|
|
1626
|
-
* Get order events for a specific order.
|
|
1627
|
-
*
|
|
1628
|
-
* This endpoint returns all lifecycle events for the specified order.
|
|
1629
|
-
|
|
1630
|
-
* @param params {GetOrderEventsParams} Input parameters object
|
|
1631
|
-
* @returns {Promise<GetOrderEventsResponse>} Standard response with success/Error/Warning structure
|
|
1632
|
-
*
|
|
1633
|
-
* Generated from: GET /api/v1/brokers/data/orders/{order_id}/events
|
|
1634
|
-
* @methodId get_order_events_api_v1_brokers_data_orders__order_id__events_get
|
|
1635
|
-
* @category brokers
|
|
1636
|
-
* @example
|
|
1637
|
-
* ```typescript-client
|
|
1638
|
-
* // Minimal example with required parameters only
|
|
1639
|
-
* const result = await finatic.getOrderEvents({
|
|
1640
|
-
orderId: 'id-123'
|
|
1641
|
-
* });
|
|
1642
|
-
*
|
|
1643
|
-
* // Access the response data
|
|
1644
|
-
* if (result.success) {
|
|
1645
|
-
* console.log('Data:', result.success.data);
|
|
1646
|
-
* } else if (result.Error) {
|
|
1647
|
-
* console.error('Error:', result.Error.message);
|
|
1648
|
-
* }
|
|
1649
|
-
* ```
|
|
1650
|
-
* @example
|
|
1651
|
-
* ```typescript-client
|
|
1652
|
-
* // Full example with optional parameters
|
|
1653
|
-
* const result = await finatic.getOrderEvents({
|
|
1654
|
-
orderId: 'id-123',
|
|
1655
|
-
connectionId: 'id-123',
|
|
1656
|
-
limit: 10,
|
|
1657
|
-
offset: 0
|
|
1658
|
-
* });
|
|
1659
|
-
*
|
|
1660
|
-
* // Handle response with warnings
|
|
1661
|
-
* if (result.success) {
|
|
1662
|
-
* console.log('Data:', result.success.data);
|
|
1663
|
-
* if (result.Warning && result.Warning.length > 0) {
|
|
1664
|
-
* console.warn('Warnings:', result.Warning);
|
|
1665
|
-
* }
|
|
1666
|
-
* } else if (result.Error) {
|
|
1667
|
-
* console.error('Error:', result.Error.message, result.Error.code);
|
|
1668
|
-
* }
|
|
1669
|
-
* ```
|
|
1670
|
-
*/
|
|
1671
|
-
async getOrderEvents(params) {
|
|
1672
|
-
// Authentication check
|
|
1673
|
-
if (!this.sessionId) {
|
|
1674
|
-
throw new Error('Session not initialized. Call startSession() first.');
|
|
1675
|
-
}
|
|
1676
|
-
// Phase 2C: Extract individual params from input params object
|
|
1677
|
-
const orderId = params.orderId;
|
|
1678
|
-
const connectionId = params.connectionId;
|
|
1679
|
-
const limit = params.limit;
|
|
1680
|
-
const offset = params.offset;
|
|
1681
|
-
// Generate request ID
|
|
1682
|
-
const requestId = this._generateRequestId();
|
|
1683
|
-
// Input validation (Phase 2B: zod)
|
|
1684
|
-
if (this.sdkConfig?.validationEnabled) {
|
|
1685
|
-
// TODO: Generate validation schema from endpoint parameters
|
|
1686
|
-
// const validationSchema = z.object({ ... });
|
|
1687
|
-
// validateParams(validationSchema, params, this.sdkConfig);
|
|
1688
|
-
}
|
|
1689
|
-
// Check cache (Phase 2B: optional caching)
|
|
1690
|
-
const shouldCache = true;
|
|
1691
|
-
const cache = (0, cache_1.getCache)(this.sdkConfig);
|
|
1692
|
-
if (cache && this.sdkConfig?.cacheEnabled && shouldCache) {
|
|
1693
|
-
const cacheKey = (0, cache_1.generateCacheKey)('GET', '/api/v1/brokers/data/orders/{order_id}/events', params, this.sdkConfig);
|
|
1694
|
-
const cached = cache.get(cacheKey);
|
|
1695
|
-
if (cached) {
|
|
1696
|
-
this.logger.debug('Cache hit', { request_id: requestId, cache_key: cacheKey });
|
|
1697
|
-
return cached;
|
|
1698
|
-
}
|
|
1699
|
-
}
|
|
1700
|
-
// Structured logging (Phase 2B: pino)
|
|
1701
|
-
this.logger.debug('Get Order Events', {
|
|
1702
|
-
request_id: requestId,
|
|
1703
|
-
method: 'GET',
|
|
1704
|
-
path: '/api/v1/brokers/data/orders/{order_id}/events',
|
|
1705
|
-
params: params,
|
|
1706
|
-
action: 'getOrderEvents',
|
|
1707
|
-
});
|
|
1708
|
-
try {
|
|
1709
|
-
const response = await (0, retry_1.retryApiCall)(async () => {
|
|
1710
|
-
const apiResponse = await this.api.getOrderEventsApiV1BrokersDataOrdersOrderIdEventsGet({
|
|
1711
|
-
orderId: orderId,
|
|
1712
|
-
...(connectionId !== undefined ? { connectionId: connectionId } : {}),
|
|
1713
|
-
...(limit !== undefined ? { limit: limit } : {}),
|
|
1714
|
-
...(offset !== undefined ? { offset: offset } : {}),
|
|
1715
|
-
}, {
|
|
1716
|
-
headers: {
|
|
1717
|
-
'x-session-id': this.sessionId,
|
|
1718
|
-
'x-company-id': this.companyId,
|
|
1719
|
-
'x-csrf-token': this.csrfToken,
|
|
1720
|
-
'x-request-id': requestId,
|
|
1721
|
-
},
|
|
1722
|
-
});
|
|
1723
|
-
return await (0, interceptors_1.applyResponseInterceptors)(apiResponse, this.sdkConfig);
|
|
1724
|
-
}, {}, this.sdkConfig);
|
|
1725
|
-
// Phase 2C: Unwrap API response and transform to standard response structure
|
|
1726
|
-
const responseData = response && typeof response === 'object' && 'data' in response
|
|
1727
|
-
? response.data
|
|
1728
|
-
: response;
|
|
1729
|
-
if (!(responseData && typeof responseData === 'object' && 'data' in responseData)) {
|
|
1730
|
-
throw new Error('Unexpected response shape: missing data');
|
|
1731
|
-
}
|
|
1732
|
-
const apiData = responseData.data;
|
|
1733
|
-
const warnings = Array.isArray(responseData.warnings)
|
|
1734
|
-
? responseData.warnings
|
|
1735
|
-
: undefined;
|
|
1736
|
-
const meta = responseData.meta;
|
|
1737
|
-
// Build standard response structure
|
|
1738
|
-
const standardResponse = {
|
|
1739
|
-
success: {
|
|
1740
|
-
data: (0, plain_object_1.convertToPlainObject)(apiData),
|
|
1741
|
-
...(meta ? { meta } : {}),
|
|
1742
|
-
},
|
|
1743
|
-
...(warnings && warnings.length > 0
|
|
1744
|
-
? {
|
|
1745
|
-
Warning: warnings.map((w) => ({
|
|
1746
|
-
message: w.message || String(w),
|
|
1747
|
-
code: w.code,
|
|
1748
|
-
details: w.details || w,
|
|
1749
|
-
})),
|
|
1750
|
-
}
|
|
1751
|
-
: {}),
|
|
1752
|
-
};
|
|
1753
|
-
if (cache && this.sdkConfig?.cacheEnabled && shouldCache) {
|
|
1754
|
-
const cacheKey = (0, cache_1.generateCacheKey)('GET', '/api/v1/brokers/data/orders/{order_id}/events', params, this.sdkConfig);
|
|
1755
|
-
cache.set(cacheKey, standardResponse, this.sdkConfig.cacheTtl || 300);
|
|
1756
|
-
}
|
|
1757
|
-
this.logger.debug('Get Order Events completed', {
|
|
1758
|
-
request_id: requestId,
|
|
1759
|
-
action: 'getOrderEvents',
|
|
1760
|
-
});
|
|
1761
|
-
// Phase 2C: Return standard response structure (already plain objects)
|
|
1762
|
-
return standardResponse;
|
|
1763
|
-
}
|
|
1764
|
-
catch (error) {
|
|
1765
|
-
try {
|
|
1766
|
-
await (0, interceptors_1.applyErrorInterceptors)(error, this.sdkConfig);
|
|
1767
|
-
}
|
|
1768
|
-
catch { }
|
|
1769
|
-
this.logger.error('Get Order Events failed', error, {
|
|
1770
|
-
request_id: requestId,
|
|
1771
|
-
action: 'getOrderEvents',
|
|
1772
|
-
});
|
|
1773
|
-
// Phase 2C: Extract error details from Axios errors or generic errors
|
|
1774
|
-
let errorMessage = error instanceof Error ? error.message : String(error);
|
|
1775
|
-
let errorCode = 'UNKNOWN_ERROR';
|
|
1776
|
-
let errorStatus;
|
|
1777
|
-
let errorDetails = {};
|
|
1778
|
-
// Handle Axios errors (from OpenAPI generator)
|
|
1779
|
-
if (error?.isAxiosError || error?.response) {
|
|
1780
|
-
const axiosError = error;
|
|
1781
|
-
errorStatus = axiosError.response?.status;
|
|
1782
|
-
errorCode = axiosError.code || `HTTP_${errorStatus || 'UNKNOWN'}`;
|
|
1783
|
-
errorMessage =
|
|
1784
|
-
axiosError.response?.data?.message ||
|
|
1785
|
-
axiosError.response?.statusText ||
|
|
1786
|
-
axiosError.message ||
|
|
1787
|
-
errorMessage;
|
|
1788
|
-
errorDetails = {
|
|
1789
|
-
status: errorStatus,
|
|
1790
|
-
statusText: axiosError.response?.statusText,
|
|
1791
|
-
responseData: axiosError.response?.data,
|
|
1792
|
-
requestUrl: axiosError.config?.url,
|
|
1793
|
-
requestMethod: axiosError.config?.method,
|
|
1794
|
-
};
|
|
1795
|
-
}
|
|
1796
|
-
else if (error instanceof Error) {
|
|
1797
|
-
errorCode = error?.code || 'UNKNOWN_ERROR';
|
|
1798
|
-
errorDetails = {
|
|
1799
|
-
stack: error.stack,
|
|
1800
|
-
name: error.name,
|
|
1801
|
-
};
|
|
1802
|
-
}
|
|
1803
|
-
else {
|
|
1804
|
-
errorDetails = { error };
|
|
1805
|
-
}
|
|
1806
|
-
// Phase 2C: Return standard error response structure
|
|
1807
|
-
const errorResponse = {
|
|
1808
|
-
success: {
|
|
1809
|
-
data: null,
|
|
1810
|
-
},
|
|
1811
|
-
Error: {
|
|
1812
|
-
message: errorMessage,
|
|
1813
|
-
code: errorCode,
|
|
1814
|
-
status: errorStatus,
|
|
1815
|
-
details: errorDetails,
|
|
1816
|
-
},
|
|
1817
|
-
};
|
|
1818
|
-
return errorResponse;
|
|
1819
|
-
}
|
|
1820
|
-
// TODO Phase 2D: Add complex validation schemas (unions, enums, nested)
|
|
1821
|
-
// TODO Phase 2D: Add orphaned method detection
|
|
1822
|
-
// TODO Phase 2D: Add advanced convenience methods
|
|
1823
|
-
}
|
|
1824
|
-
/**
|
|
1825
|
-
* Get Order Groups
|
|
1826
|
-
*
|
|
1827
|
-
* Get order groups.
|
|
1828
|
-
*
|
|
1829
|
-
* This endpoint returns order groups that contain multiple orders.
|
|
1830
|
-
|
|
1831
|
-
* @param params {GetOrderGroupsParams} Input parameters object
|
|
1832
|
-
* @returns {Promise<GetOrderGroupsResponse>} Standard response with success/Error/Warning structure
|
|
1833
|
-
*
|
|
1834
|
-
* Generated from: GET /api/v1/brokers/data/orders/groups
|
|
1835
|
-
* @methodId get_order_groups_api_v1_brokers_data_orders_groups_get
|
|
1836
|
-
* @category brokers
|
|
1837
|
-
* @example
|
|
1838
|
-
* ```typescript-client
|
|
1839
|
-
* // Example with no parameters
|
|
1840
|
-
* const result = await finatic.getOrderGroups({});
|
|
1841
|
-
*
|
|
1842
|
-
* // Access the response data
|
|
1843
|
-
* if (result.success) {
|
|
1844
|
-
* console.log('Data:', result.success.data);
|
|
1845
|
-
* }
|
|
1846
|
-
* ```
|
|
1847
|
-
* @example
|
|
1848
|
-
* ```typescript-client
|
|
1849
|
-
* // Full example with optional parameters
|
|
1850
|
-
* const result = await finatic.getOrderGroups({
|
|
1851
|
-
brokerId: 'id-123',
|
|
1852
|
-
connectionId: 'id-123',
|
|
1853
|
-
limit: 10
|
|
1854
|
-
* });
|
|
1855
|
-
*
|
|
1856
|
-
* // Handle response with warnings
|
|
1857
|
-
* if (result.success) {
|
|
1858
|
-
* console.log('Data:', result.success.data);
|
|
1859
|
-
* if (result.Warning && result.Warning.length > 0) {
|
|
1860
|
-
* console.warn('Warnings:', result.Warning);
|
|
1861
|
-
* }
|
|
1862
|
-
* } else if (result.Error) {
|
|
1863
|
-
* console.error('Error:', result.Error.message, result.Error.code);
|
|
1864
|
-
* }
|
|
1865
|
-
* ```
|
|
1866
|
-
*/
|
|
1867
|
-
async getOrderGroups(params) {
|
|
1868
|
-
// Authentication check
|
|
1869
|
-
if (!this.sessionId) {
|
|
1870
|
-
throw new Error('Session not initialized. Call startSession() first.');
|
|
1871
|
-
}
|
|
1872
|
-
// Phase 2C: Extract individual params from input params object
|
|
1873
|
-
const brokerId = params.brokerId;
|
|
1874
|
-
const connectionId = params.connectionId;
|
|
1875
|
-
const limit = params.limit;
|
|
1876
|
-
const offset = params.offset;
|
|
1877
|
-
const createdAfter = params.createdAfter;
|
|
1878
|
-
const createdBefore = params.createdBefore;
|
|
1879
|
-
// Generate request ID
|
|
1880
|
-
const requestId = this._generateRequestId();
|
|
1881
|
-
// Input validation (Phase 2B: zod)
|
|
1882
|
-
if (this.sdkConfig?.validationEnabled) {
|
|
1883
|
-
// TODO: Generate validation schema from endpoint parameters
|
|
1884
|
-
// const validationSchema = z.object({ ... });
|
|
1885
|
-
// validateParams(validationSchema, params, this.sdkConfig);
|
|
1886
|
-
}
|
|
1887
|
-
// Check cache (Phase 2B: optional caching)
|
|
1888
|
-
const shouldCache = true;
|
|
1889
|
-
const cache = (0, cache_1.getCache)(this.sdkConfig);
|
|
1890
|
-
if (cache && this.sdkConfig?.cacheEnabled && shouldCache) {
|
|
1891
|
-
const cacheKey = (0, cache_1.generateCacheKey)('GET', '/api/v1/brokers/data/orders/groups', params, this.sdkConfig);
|
|
1892
|
-
const cached = cache.get(cacheKey);
|
|
1893
|
-
if (cached) {
|
|
1894
|
-
this.logger.debug('Cache hit', { request_id: requestId, cache_key: cacheKey });
|
|
1895
|
-
return cached;
|
|
1896
|
-
}
|
|
1897
|
-
}
|
|
1898
|
-
// Structured logging (Phase 2B: pino)
|
|
1899
|
-
this.logger.debug('Get Order Groups', {
|
|
1900
|
-
request_id: requestId,
|
|
1901
|
-
method: 'GET',
|
|
1902
|
-
path: '/api/v1/brokers/data/orders/groups',
|
|
1903
|
-
params: params,
|
|
1904
|
-
action: 'getOrderGroups',
|
|
1905
|
-
});
|
|
1906
|
-
try {
|
|
1907
|
-
const response = await (0, retry_1.retryApiCall)(async () => {
|
|
1908
|
-
const apiResponse = await this.api.getOrderGroupsApiV1BrokersDataOrdersGroupsGet({
|
|
1909
|
-
...(brokerId !== undefined ? { brokerId: brokerId } : {}),
|
|
1910
|
-
...(connectionId !== undefined ? { connectionId: connectionId } : {}),
|
|
1911
|
-
...(limit !== undefined ? { limit: limit } : {}),
|
|
1912
|
-
...(offset !== undefined ? { offset: offset } : {}),
|
|
1913
|
-
...(createdAfter !== undefined ? { createdAfter: createdAfter } : {}),
|
|
1914
|
-
...(createdBefore !== undefined ? { createdBefore: createdBefore } : {}),
|
|
1915
|
-
}, {
|
|
1916
|
-
headers: {
|
|
1917
|
-
'x-session-id': this.sessionId,
|
|
1918
|
-
'x-company-id': this.companyId,
|
|
1919
|
-
'x-csrf-token': this.csrfToken,
|
|
1920
|
-
'x-request-id': requestId,
|
|
1921
|
-
},
|
|
1922
|
-
});
|
|
1923
|
-
return await (0, interceptors_1.applyResponseInterceptors)(apiResponse, this.sdkConfig);
|
|
1924
|
-
}, {}, this.sdkConfig);
|
|
1925
|
-
// Phase 2C: Unwrap API response and transform to standard response structure
|
|
1926
|
-
const responseData = response && typeof response === 'object' && 'data' in response
|
|
1927
|
-
? response.data
|
|
1928
|
-
: response;
|
|
1929
|
-
if (!(responseData && typeof responseData === 'object' && 'data' in responseData)) {
|
|
1930
|
-
throw new Error('Unexpected response shape: missing data');
|
|
1931
|
-
}
|
|
1932
|
-
const apiData = responseData.data;
|
|
1933
|
-
const warnings = Array.isArray(responseData.warnings)
|
|
1934
|
-
? responseData.warnings
|
|
1935
|
-
: undefined;
|
|
1936
|
-
const meta = responseData.meta;
|
|
1937
|
-
// Build standard response structure
|
|
1938
|
-
const standardResponse = {
|
|
1939
|
-
success: {
|
|
1940
|
-
data: (0, plain_object_1.convertToPlainObject)(apiData),
|
|
1941
|
-
...(meta ? { meta } : {}),
|
|
1942
|
-
},
|
|
1943
|
-
...(warnings && warnings.length > 0
|
|
1944
|
-
? {
|
|
1945
|
-
Warning: warnings.map((w) => ({
|
|
1946
|
-
message: w.message || String(w),
|
|
1947
|
-
code: w.code,
|
|
1948
|
-
details: w.details || w,
|
|
1949
|
-
})),
|
|
1950
|
-
}
|
|
1951
|
-
: {}),
|
|
1952
|
-
};
|
|
1953
|
-
if (cache && this.sdkConfig?.cacheEnabled && shouldCache) {
|
|
1954
|
-
const cacheKey = (0, cache_1.generateCacheKey)('GET', '/api/v1/brokers/data/orders/groups', params, this.sdkConfig);
|
|
1955
|
-
cache.set(cacheKey, standardResponse, this.sdkConfig.cacheTtl || 300);
|
|
1956
|
-
}
|
|
1957
|
-
this.logger.debug('Get Order Groups completed', {
|
|
1958
|
-
request_id: requestId,
|
|
1959
|
-
action: 'getOrderGroups',
|
|
1960
|
-
});
|
|
1961
|
-
// Phase 2C: Return standard response structure (already plain objects)
|
|
1962
|
-
return standardResponse;
|
|
1963
|
-
}
|
|
1964
|
-
catch (error) {
|
|
1965
|
-
try {
|
|
1966
|
-
await (0, interceptors_1.applyErrorInterceptors)(error, this.sdkConfig);
|
|
1967
|
-
}
|
|
1968
|
-
catch { }
|
|
1969
|
-
this.logger.error('Get Order Groups failed', error, {
|
|
1970
|
-
request_id: requestId,
|
|
1971
|
-
action: 'getOrderGroups',
|
|
1972
|
-
});
|
|
1973
|
-
// Phase 2C: Extract error details from Axios errors or generic errors
|
|
1974
|
-
let errorMessage = error instanceof Error ? error.message : String(error);
|
|
1975
|
-
let errorCode = 'UNKNOWN_ERROR';
|
|
1976
|
-
let errorStatus;
|
|
1977
|
-
let errorDetails = {};
|
|
1978
|
-
// Handle Axios errors (from OpenAPI generator)
|
|
1979
|
-
if (error?.isAxiosError || error?.response) {
|
|
1980
|
-
const axiosError = error;
|
|
1981
|
-
errorStatus = axiosError.response?.status;
|
|
1982
|
-
errorCode = axiosError.code || `HTTP_${errorStatus || 'UNKNOWN'}`;
|
|
1983
|
-
errorMessage =
|
|
1984
|
-
axiosError.response?.data?.message ||
|
|
1985
|
-
axiosError.response?.statusText ||
|
|
1986
|
-
axiosError.message ||
|
|
1987
|
-
errorMessage;
|
|
1988
|
-
errorDetails = {
|
|
1989
|
-
status: errorStatus,
|
|
1990
|
-
statusText: axiosError.response?.statusText,
|
|
1991
|
-
responseData: axiosError.response?.data,
|
|
1992
|
-
requestUrl: axiosError.config?.url,
|
|
1993
|
-
requestMethod: axiosError.config?.method,
|
|
1994
|
-
};
|
|
1995
|
-
}
|
|
1996
|
-
else if (error instanceof Error) {
|
|
1997
|
-
errorCode = error?.code || 'UNKNOWN_ERROR';
|
|
1998
|
-
errorDetails = {
|
|
1999
|
-
stack: error.stack,
|
|
2000
|
-
name: error.name,
|
|
2001
|
-
};
|
|
2002
|
-
}
|
|
2003
|
-
else {
|
|
2004
|
-
errorDetails = { error };
|
|
2005
|
-
}
|
|
2006
|
-
// Phase 2C: Return standard error response structure
|
|
2007
|
-
const errorResponse = {
|
|
2008
|
-
success: {
|
|
2009
|
-
data: null,
|
|
2010
|
-
},
|
|
2011
|
-
Error: {
|
|
2012
|
-
message: errorMessage,
|
|
2013
|
-
code: errorCode,
|
|
2014
|
-
status: errorStatus,
|
|
2015
|
-
details: errorDetails,
|
|
2016
|
-
},
|
|
2017
|
-
};
|
|
2018
|
-
return errorResponse;
|
|
2019
|
-
}
|
|
2020
|
-
// TODO Phase 2D: Add complex validation schemas (unions, enums, nested)
|
|
2021
|
-
// TODO Phase 2D: Add orphaned method detection
|
|
2022
|
-
// TODO Phase 2D: Add advanced convenience methods
|
|
2023
|
-
}
|
|
2024
|
-
/**
|
|
2025
|
-
* Get Position Lots
|
|
2026
|
-
*
|
|
2027
|
-
* Get position lots (tax lots for positions).
|
|
2028
|
-
*
|
|
2029
|
-
* This endpoint returns tax lots for positions, which are used for tax reporting.
|
|
2030
|
-
* Each lot tracks when a position was opened/closed and at what prices.
|
|
2031
|
-
|
|
2032
|
-
* @param params {GetPositionLotsParams} Input parameters object
|
|
2033
|
-
* @returns {Promise<GetPositionLotsResponse>} Standard response with success/Error/Warning structure
|
|
2034
|
-
*
|
|
2035
|
-
* Generated from: GET /api/v1/brokers/data/positions/lots
|
|
2036
|
-
* @methodId get_position_lots_api_v1_brokers_data_positions_lots_get
|
|
2037
|
-
* @category brokers
|
|
2038
|
-
* @example
|
|
2039
|
-
* ```typescript-client
|
|
2040
|
-
* // Example with no parameters
|
|
2041
|
-
* const result = await finatic.getPositionLots({});
|
|
2042
|
-
*
|
|
2043
|
-
* // Access the response data
|
|
2044
|
-
* if (result.success) {
|
|
2045
|
-
* console.log('Data:', result.success.data);
|
|
2046
|
-
* }
|
|
2047
|
-
* ```
|
|
2048
|
-
* @example
|
|
2049
|
-
* ```typescript-client
|
|
2050
|
-
* // Full example with optional parameters
|
|
2051
|
-
* const result = await finatic.getPositionLots({
|
|
2052
|
-
brokerId: 'id-123',
|
|
2053
|
-
connectionId: 'id-123',
|
|
2054
|
-
accountId: 'id-123'
|
|
2055
|
-
* });
|
|
2056
|
-
*
|
|
2057
|
-
* // Handle response with warnings
|
|
2058
|
-
* if (result.success) {
|
|
2059
|
-
* console.log('Data:', result.success.data);
|
|
2060
|
-
* if (result.Warning && result.Warning.length > 0) {
|
|
2061
|
-
* console.warn('Warnings:', result.Warning);
|
|
2062
|
-
* }
|
|
2063
|
-
* } else if (result.Error) {
|
|
2064
|
-
* console.error('Error:', result.Error.message, result.Error.code);
|
|
2065
|
-
* }
|
|
2066
|
-
* ```
|
|
2067
|
-
*/
|
|
2068
|
-
async getPositionLots(params) {
|
|
2069
|
-
// Authentication check
|
|
2070
|
-
if (!this.sessionId) {
|
|
2071
|
-
throw new Error('Session not initialized. Call startSession() first.');
|
|
2072
|
-
}
|
|
2073
|
-
// Phase 2C: Extract individual params from input params object
|
|
2074
|
-
const brokerId = params.brokerId;
|
|
2075
|
-
const connectionId = params.connectionId;
|
|
2076
|
-
const accountId = params.accountId;
|
|
2077
|
-
const symbol = params.symbol;
|
|
2078
|
-
const positionId = params.positionId;
|
|
2079
|
-
const limit = params.limit;
|
|
2080
|
-
const offset = params.offset;
|
|
2081
|
-
// Generate request ID
|
|
2082
|
-
const requestId = this._generateRequestId();
|
|
2083
|
-
// Input validation (Phase 2B: zod)
|
|
2084
|
-
if (this.sdkConfig?.validationEnabled) {
|
|
2085
|
-
// TODO: Generate validation schema from endpoint parameters
|
|
2086
|
-
// const validationSchema = z.object({ ... });
|
|
2087
|
-
// validateParams(validationSchema, params, this.sdkConfig);
|
|
2088
|
-
}
|
|
2089
|
-
// Check cache (Phase 2B: optional caching)
|
|
2090
|
-
const shouldCache = true;
|
|
2091
|
-
const cache = (0, cache_1.getCache)(this.sdkConfig);
|
|
2092
|
-
if (cache && this.sdkConfig?.cacheEnabled && shouldCache) {
|
|
2093
|
-
const cacheKey = (0, cache_1.generateCacheKey)('GET', '/api/v1/brokers/data/positions/lots', params, this.sdkConfig);
|
|
2094
|
-
const cached = cache.get(cacheKey);
|
|
2095
|
-
if (cached) {
|
|
2096
|
-
this.logger.debug('Cache hit', { request_id: requestId, cache_key: cacheKey });
|
|
2097
|
-
return cached;
|
|
2098
|
-
}
|
|
2099
|
-
}
|
|
2100
|
-
// Structured logging (Phase 2B: pino)
|
|
2101
|
-
this.logger.debug('Get Position Lots', {
|
|
2102
|
-
request_id: requestId,
|
|
2103
|
-
method: 'GET',
|
|
2104
|
-
path: '/api/v1/brokers/data/positions/lots',
|
|
2105
|
-
params: params,
|
|
2106
|
-
action: 'getPositionLots',
|
|
2107
|
-
});
|
|
2108
|
-
try {
|
|
2109
|
-
const response = await (0, retry_1.retryApiCall)(async () => {
|
|
2110
|
-
const apiResponse = await this.api.getPositionLotsApiV1BrokersDataPositionsLotsGet({
|
|
2111
|
-
...(brokerId !== undefined ? { brokerId: brokerId } : {}),
|
|
2112
|
-
...(connectionId !== undefined ? { connectionId: connectionId } : {}),
|
|
2113
|
-
...(accountId !== undefined ? { accountId: accountId } : {}),
|
|
2114
|
-
...(symbol !== undefined ? { symbol: symbol } : {}),
|
|
2115
|
-
...(positionId !== undefined ? { positionId: positionId } : {}),
|
|
2116
|
-
...(limit !== undefined ? { limit: limit } : {}),
|
|
2117
|
-
...(offset !== undefined ? { offset: offset } : {}),
|
|
2118
|
-
}, {
|
|
2119
|
-
headers: {
|
|
2120
|
-
'x-session-id': this.sessionId,
|
|
2121
|
-
'x-company-id': this.companyId,
|
|
2122
|
-
'x-csrf-token': this.csrfToken,
|
|
2123
|
-
'x-request-id': requestId,
|
|
2124
|
-
},
|
|
2125
|
-
});
|
|
2126
|
-
return await (0, interceptors_1.applyResponseInterceptors)(apiResponse, this.sdkConfig);
|
|
2127
|
-
}, {}, this.sdkConfig);
|
|
2128
|
-
// Phase 2C: Unwrap API response and transform to standard response structure
|
|
2129
|
-
const responseData = response && typeof response === 'object' && 'data' in response
|
|
2130
|
-
? response.data
|
|
2131
|
-
: response;
|
|
2132
|
-
if (!(responseData && typeof responseData === 'object' && 'data' in responseData)) {
|
|
2133
|
-
throw new Error('Unexpected response shape: missing data');
|
|
2134
|
-
}
|
|
2135
|
-
const apiData = responseData.data;
|
|
2136
|
-
const warnings = Array.isArray(responseData.warnings)
|
|
2137
|
-
? responseData.warnings
|
|
2138
|
-
: undefined;
|
|
2139
|
-
const meta = responseData.meta;
|
|
2140
|
-
// Build standard response structure
|
|
2141
|
-
const standardResponse = {
|
|
2142
|
-
success: {
|
|
2143
|
-
data: (0, plain_object_1.convertToPlainObject)(apiData),
|
|
2144
|
-
...(meta ? { meta } : {}),
|
|
2145
|
-
},
|
|
2146
|
-
...(warnings && warnings.length > 0
|
|
2147
|
-
? {
|
|
2148
|
-
Warning: warnings.map((w) => ({
|
|
2149
|
-
message: w.message || String(w),
|
|
2150
|
-
code: w.code,
|
|
2151
|
-
details: w.details || w,
|
|
2152
|
-
})),
|
|
2153
|
-
}
|
|
2154
|
-
: {}),
|
|
2155
|
-
};
|
|
2156
|
-
if (cache && this.sdkConfig?.cacheEnabled && shouldCache) {
|
|
2157
|
-
const cacheKey = (0, cache_1.generateCacheKey)('GET', '/api/v1/brokers/data/positions/lots', params, this.sdkConfig);
|
|
2158
|
-
cache.set(cacheKey, standardResponse, this.sdkConfig.cacheTtl || 300);
|
|
2159
|
-
}
|
|
2160
|
-
this.logger.debug('Get Position Lots completed', {
|
|
2161
|
-
request_id: requestId,
|
|
2162
|
-
action: 'getPositionLots',
|
|
2163
|
-
});
|
|
2164
|
-
// Phase 2C: Return standard response structure (already plain objects)
|
|
2165
|
-
return standardResponse;
|
|
2166
|
-
}
|
|
2167
|
-
catch (error) {
|
|
2168
|
-
try {
|
|
2169
|
-
await (0, interceptors_1.applyErrorInterceptors)(error, this.sdkConfig);
|
|
2170
|
-
}
|
|
2171
|
-
catch { }
|
|
2172
|
-
this.logger.error('Get Position Lots failed', error, {
|
|
2173
|
-
request_id: requestId,
|
|
2174
|
-
action: 'getPositionLots',
|
|
2175
|
-
});
|
|
2176
|
-
// Phase 2C: Extract error details from Axios errors or generic errors
|
|
2177
|
-
let errorMessage = error instanceof Error ? error.message : String(error);
|
|
2178
|
-
let errorCode = 'UNKNOWN_ERROR';
|
|
2179
|
-
let errorStatus;
|
|
2180
|
-
let errorDetails = {};
|
|
2181
|
-
// Handle Axios errors (from OpenAPI generator)
|
|
2182
|
-
if (error?.isAxiosError || error?.response) {
|
|
2183
|
-
const axiosError = error;
|
|
2184
|
-
errorStatus = axiosError.response?.status;
|
|
2185
|
-
errorCode = axiosError.code || `HTTP_${errorStatus || 'UNKNOWN'}`;
|
|
2186
|
-
errorMessage =
|
|
2187
|
-
axiosError.response?.data?.message ||
|
|
2188
|
-
axiosError.response?.statusText ||
|
|
2189
|
-
axiosError.message ||
|
|
2190
|
-
errorMessage;
|
|
2191
|
-
errorDetails = {
|
|
2192
|
-
status: errorStatus,
|
|
2193
|
-
statusText: axiosError.response?.statusText,
|
|
2194
|
-
responseData: axiosError.response?.data,
|
|
2195
|
-
requestUrl: axiosError.config?.url,
|
|
2196
|
-
requestMethod: axiosError.config?.method,
|
|
2197
|
-
};
|
|
2198
|
-
}
|
|
2199
|
-
else if (error instanceof Error) {
|
|
2200
|
-
errorCode = error?.code || 'UNKNOWN_ERROR';
|
|
2201
|
-
errorDetails = {
|
|
2202
|
-
stack: error.stack,
|
|
2203
|
-
name: error.name,
|
|
2204
|
-
};
|
|
2205
|
-
}
|
|
2206
|
-
else {
|
|
2207
|
-
errorDetails = { error };
|
|
2208
|
-
}
|
|
2209
|
-
// Phase 2C: Return standard error response structure
|
|
2210
|
-
const errorResponse = {
|
|
2211
|
-
success: {
|
|
2212
|
-
data: null,
|
|
2213
|
-
},
|
|
2214
|
-
Error: {
|
|
2215
|
-
message: errorMessage,
|
|
2216
|
-
code: errorCode,
|
|
2217
|
-
status: errorStatus,
|
|
2218
|
-
details: errorDetails,
|
|
2219
|
-
},
|
|
2220
|
-
};
|
|
2221
|
-
return errorResponse;
|
|
2222
|
-
}
|
|
2223
|
-
// TODO Phase 2D: Add complex validation schemas (unions, enums, nested)
|
|
2224
|
-
// TODO Phase 2D: Add orphaned method detection
|
|
2225
|
-
// TODO Phase 2D: Add advanced convenience methods
|
|
2226
|
-
}
|
|
2227
|
-
/**
|
|
2228
|
-
* Get Position Lot Fills
|
|
2229
|
-
*
|
|
2230
|
-
* Get position lot fills for a specific lot.
|
|
2231
|
-
*
|
|
2232
|
-
* This endpoint returns all fills associated with a specific position lot.
|
|
2233
|
-
|
|
2234
|
-
* @param params {GetPositionLotFillsParams} Input parameters object
|
|
2235
|
-
* @returns {Promise<GetPositionLotFillsResponse>} Standard response with success/Error/Warning structure
|
|
2236
|
-
*
|
|
2237
|
-
* Generated from: GET /api/v1/brokers/data/positions/lots/{lot_id}/fills
|
|
2238
|
-
* @methodId get_position_lot_fills_api_v1_brokers_data_positions_lots__lot_id__fills_get
|
|
2239
|
-
* @category brokers
|
|
2240
|
-
* @example
|
|
2241
|
-
* ```typescript-client
|
|
2242
|
-
* // Minimal example with required parameters only
|
|
2243
|
-
* const result = await finatic.getPositionLotFills({
|
|
2244
|
-
lotId: 'id-123'
|
|
2245
|
-
* });
|
|
2246
|
-
*
|
|
2247
|
-
* // Access the response data
|
|
2248
|
-
* if (result.success) {
|
|
2249
|
-
* console.log('Data:', result.success.data);
|
|
2250
|
-
* } else if (result.Error) {
|
|
2251
|
-
* console.error('Error:', result.Error.message);
|
|
2252
|
-
* }
|
|
2253
|
-
* ```
|
|
2254
|
-
* @example
|
|
2255
|
-
* ```typescript-client
|
|
2256
|
-
* // Full example with optional parameters
|
|
2257
|
-
* const result = await finatic.getPositionLotFills({
|
|
2258
|
-
lotId: 'id-123',
|
|
2259
|
-
connectionId: 'id-123',
|
|
2260
|
-
limit: 10,
|
|
2261
|
-
offset: 0
|
|
2262
|
-
* });
|
|
2263
|
-
*
|
|
2264
|
-
* // Handle response with warnings
|
|
2265
|
-
* if (result.success) {
|
|
2266
|
-
* console.log('Data:', result.success.data);
|
|
2267
|
-
* if (result.Warning && result.Warning.length > 0) {
|
|
2268
|
-
* console.warn('Warnings:', result.Warning);
|
|
2269
|
-
* }
|
|
2270
|
-
* } else if (result.Error) {
|
|
2271
|
-
* console.error('Error:', result.Error.message, result.Error.code);
|
|
2272
|
-
* }
|
|
2273
|
-
* ```
|
|
2274
|
-
*/
|
|
2275
|
-
async getPositionLotFills(params) {
|
|
2276
|
-
// Authentication check
|
|
2277
|
-
if (!this.sessionId) {
|
|
2278
|
-
throw new Error('Session not initialized. Call startSession() first.');
|
|
2279
|
-
}
|
|
2280
|
-
// Phase 2C: Extract individual params from input params object
|
|
2281
|
-
const lotId = params.lotId;
|
|
2282
|
-
const connectionId = params.connectionId;
|
|
2283
|
-
const limit = params.limit;
|
|
2284
|
-
const offset = params.offset;
|
|
2285
|
-
// Generate request ID
|
|
2286
|
-
const requestId = this._generateRequestId();
|
|
2287
|
-
// Input validation (Phase 2B: zod)
|
|
2288
|
-
if (this.sdkConfig?.validationEnabled) {
|
|
2289
|
-
// TODO: Generate validation schema from endpoint parameters
|
|
2290
|
-
// const validationSchema = z.object({ ... });
|
|
2291
|
-
// validateParams(validationSchema, params, this.sdkConfig);
|
|
2292
|
-
}
|
|
2293
|
-
// Check cache (Phase 2B: optional caching)
|
|
2294
|
-
const shouldCache = true;
|
|
2295
|
-
const cache = (0, cache_1.getCache)(this.sdkConfig);
|
|
2296
|
-
if (cache && this.sdkConfig?.cacheEnabled && shouldCache) {
|
|
2297
|
-
const cacheKey = (0, cache_1.generateCacheKey)('GET', '/api/v1/brokers/data/positions/lots/{lot_id}/fills', params, this.sdkConfig);
|
|
2298
|
-
const cached = cache.get(cacheKey);
|
|
2299
|
-
if (cached) {
|
|
2300
|
-
this.logger.debug('Cache hit', { request_id: requestId, cache_key: cacheKey });
|
|
2301
|
-
return cached;
|
|
2302
|
-
}
|
|
2303
|
-
}
|
|
2304
|
-
// Structured logging (Phase 2B: pino)
|
|
2305
|
-
this.logger.debug('Get Position Lot Fills', {
|
|
2306
|
-
request_id: requestId,
|
|
2307
|
-
method: 'GET',
|
|
2308
|
-
path: '/api/v1/brokers/data/positions/lots/{lot_id}/fills',
|
|
2309
|
-
params: params,
|
|
2310
|
-
action: 'getPositionLotFills',
|
|
2311
|
-
});
|
|
2312
|
-
try {
|
|
2313
|
-
const response = await (0, retry_1.retryApiCall)(async () => {
|
|
2314
|
-
const apiResponse = await this.api.getPositionLotFillsApiV1BrokersDataPositionsLotsLotIdFillsGet({
|
|
2315
|
-
lotId: lotId,
|
|
2316
|
-
...(connectionId !== undefined ? { connectionId: connectionId } : {}),
|
|
2317
|
-
...(limit !== undefined ? { limit: limit } : {}),
|
|
2318
|
-
...(offset !== undefined ? { offset: offset } : {}),
|
|
2319
|
-
}, {
|
|
2320
|
-
headers: {
|
|
2321
|
-
'x-session-id': this.sessionId,
|
|
2322
|
-
'x-company-id': this.companyId,
|
|
2323
|
-
'x-csrf-token': this.csrfToken,
|
|
2324
|
-
'x-request-id': requestId,
|
|
2325
|
-
},
|
|
2326
|
-
});
|
|
2327
|
-
return await (0, interceptors_1.applyResponseInterceptors)(apiResponse, this.sdkConfig);
|
|
2328
|
-
}, {}, this.sdkConfig);
|
|
2329
|
-
// Phase 2C: Unwrap API response and transform to standard response structure
|
|
2330
|
-
const responseData = response && typeof response === 'object' && 'data' in response
|
|
2331
|
-
? response.data
|
|
2332
|
-
: response;
|
|
2333
|
-
if (!(responseData && typeof responseData === 'object' && 'data' in responseData)) {
|
|
2334
|
-
throw new Error('Unexpected response shape: missing data');
|
|
2335
|
-
}
|
|
2336
|
-
const apiData = responseData.data;
|
|
2337
|
-
const warnings = Array.isArray(responseData.warnings)
|
|
2338
|
-
? responseData.warnings
|
|
2339
|
-
: undefined;
|
|
2340
|
-
const meta = responseData.meta;
|
|
2341
|
-
// Build standard response structure
|
|
2342
|
-
const standardResponse = {
|
|
2343
|
-
success: {
|
|
2344
|
-
data: (0, plain_object_1.convertToPlainObject)(apiData),
|
|
2345
|
-
...(meta ? { meta } : {}),
|
|
2346
|
-
},
|
|
2347
|
-
...(warnings && warnings.length > 0
|
|
2348
|
-
? {
|
|
2349
|
-
Warning: warnings.map((w) => ({
|
|
2350
|
-
message: w.message || String(w),
|
|
2351
|
-
code: w.code,
|
|
2352
|
-
details: w.details || w,
|
|
2353
|
-
})),
|
|
2354
|
-
}
|
|
2355
|
-
: {}),
|
|
2356
|
-
};
|
|
2357
|
-
if (cache && this.sdkConfig?.cacheEnabled && shouldCache) {
|
|
2358
|
-
const cacheKey = (0, cache_1.generateCacheKey)('GET', '/api/v1/brokers/data/positions/lots/{lot_id}/fills', params, this.sdkConfig);
|
|
2359
|
-
cache.set(cacheKey, standardResponse, this.sdkConfig.cacheTtl || 300);
|
|
2360
|
-
}
|
|
2361
|
-
this.logger.debug('Get Position Lot Fills completed', {
|
|
2362
|
-
request_id: requestId,
|
|
2363
|
-
action: 'getPositionLotFills',
|
|
2364
|
-
});
|
|
2365
|
-
// Phase 2C: Return standard response structure (already plain objects)
|
|
2366
|
-
return standardResponse;
|
|
2367
|
-
}
|
|
2368
|
-
catch (error) {
|
|
2369
|
-
try {
|
|
2370
|
-
await (0, interceptors_1.applyErrorInterceptors)(error, this.sdkConfig);
|
|
2371
|
-
}
|
|
2372
|
-
catch { }
|
|
2373
|
-
this.logger.error('Get Position Lot Fills failed', error, {
|
|
2374
|
-
request_id: requestId,
|
|
2375
|
-
action: 'getPositionLotFills',
|
|
2376
|
-
});
|
|
2377
|
-
// Phase 2C: Extract error details from Axios errors or generic errors
|
|
2378
|
-
let errorMessage = error instanceof Error ? error.message : String(error);
|
|
2379
|
-
let errorCode = 'UNKNOWN_ERROR';
|
|
2380
|
-
let errorStatus;
|
|
2381
|
-
let errorDetails = {};
|
|
2382
|
-
// Handle Axios errors (from OpenAPI generator)
|
|
2383
|
-
if (error?.isAxiosError || error?.response) {
|
|
2384
|
-
const axiosError = error;
|
|
2385
|
-
errorStatus = axiosError.response?.status;
|
|
2386
|
-
errorCode = axiosError.code || `HTTP_${errorStatus || 'UNKNOWN'}`;
|
|
2387
|
-
errorMessage =
|
|
2388
|
-
axiosError.response?.data?.message ||
|
|
2389
|
-
axiosError.response?.statusText ||
|
|
2390
|
-
axiosError.message ||
|
|
2391
|
-
errorMessage;
|
|
2392
|
-
errorDetails = {
|
|
2393
|
-
status: errorStatus,
|
|
2394
|
-
statusText: axiosError.response?.statusText,
|
|
2395
|
-
responseData: axiosError.response?.data,
|
|
2396
|
-
requestUrl: axiosError.config?.url,
|
|
2397
|
-
requestMethod: axiosError.config?.method,
|
|
2398
|
-
};
|
|
2399
|
-
}
|
|
2400
|
-
else if (error instanceof Error) {
|
|
2401
|
-
errorCode = error?.code || 'UNKNOWN_ERROR';
|
|
2402
|
-
errorDetails = {
|
|
2403
|
-
stack: error.stack,
|
|
2404
|
-
name: error.name,
|
|
2405
|
-
};
|
|
2406
|
-
}
|
|
2407
|
-
else {
|
|
2408
|
-
errorDetails = { error };
|
|
2409
|
-
}
|
|
2410
|
-
// Phase 2C: Return standard error response structure
|
|
2411
|
-
const errorResponse = {
|
|
2412
|
-
success: {
|
|
2413
|
-
data: null,
|
|
2414
|
-
},
|
|
2415
|
-
Error: {
|
|
2416
|
-
message: errorMessage,
|
|
2417
|
-
code: errorCode,
|
|
2418
|
-
status: errorStatus,
|
|
2419
|
-
details: errorDetails,
|
|
2420
|
-
},
|
|
2421
|
-
};
|
|
2422
|
-
return errorResponse;
|
|
2423
|
-
}
|
|
2424
|
-
// TODO Phase 2D: Add complex validation schemas (unions, enums, nested)
|
|
2425
|
-
// TODO Phase 2D: Add orphaned method detection
|
|
2426
|
-
// TODO Phase 2D: Add advanced convenience methods
|
|
2427
|
-
}
|
|
2428
|
-
/**
|
|
2429
|
-
* Place Order
|
|
2430
|
-
*
|
|
2431
|
-
* Create a new order via the specified broker connection.
|
|
2432
|
-
*
|
|
2433
|
-
* This endpoint is accessible from the portal and uses session-only authentication.
|
|
2434
|
-
* Requires trading permissions for the company.
|
|
2435
|
-
*
|
|
2436
|
-
* Standard parameters
|
|
2437
|
-
* -------------------
|
|
2438
|
-
* The following fields constitute the unified Finatic *common order schema* and
|
|
2439
|
-
* therefore appear individually as query parameters in the autogenerated
|
|
2440
|
-
* OpenAPI documentation:
|
|
2441
|
-
*
|
|
2442
|
-
* - ``broker``
|
|
2443
|
-
* - ``account_number``
|
|
2444
|
-
* - ``order_type``
|
|
2445
|
-
* - ``asset_type``
|
|
2446
|
-
* - ``action``
|
|
2447
|
-
* - ``time_in_force``
|
|
2448
|
-
* - ``symbol``
|
|
2449
|
-
* - ``order_qty``
|
|
2450
|
-
*
|
|
2451
|
-
* They are surfaced as *query* parameters **only to make the accepted fields
|
|
2452
|
-
* obvious in the interactive docs**. In production usage you should send these
|
|
2453
|
-
* fields inside the JSON body (see ``order_request``) so that the entire order
|
|
2454
|
-
* specification travels in one payload. (Nothing will break if you send both, but there is no need to do so.)
|
|
2455
|
-
*
|
|
2456
|
-
* Body payload & broker-specific extras
|
|
2457
|
-
* -------------------------------------
|
|
2458
|
-
*
|
|
2459
|
-
* Put the standard parameters plus any broker-specific extensions under the
|
|
2460
|
-
* ``order`` key of the body. Refer to the bundled OpenAPI examples below to
|
|
2461
|
-
* see complete payloads for common order types (market, limit, spreads, etc.)
|
|
2462
|
-
* across supported brokers.
|
|
2463
|
-
*
|
|
2464
|
-
* For a formal reference of broker-specific extensions inspect the
|
|
2465
|
-
* ``BrokerOrderPlaceExtras`` schema.
|
|
2466
|
-
*
|
|
2467
|
-
* The endpoint resolves the active ``user_broker_connection`` by calling the
|
|
2468
|
-
* ``get_user_broker_connection_ids_for_broker`` RPC in Supabase. If no active
|
|
2469
|
-
* connection exists it returns a list of *available* brokers so your client
|
|
2470
|
-
* can guide the user accordingly.
|
|
2471
|
-
*
|
|
2472
|
-
* Broker Notes
|
|
2473
|
-
* ------------
|
|
2474
|
-
* - The responses that you get back from the broker are not always the same.
|
|
2475
|
-
* The response models are validated for each broker, but we do not standardize the repsonses.
|
|
2476
|
-
*
|
|
2477
|
-
* - Tasty Trade: If you want to trade options for a particular stock, first fetch the full
|
|
2478
|
-
* option chain via the GET https://api.tastyworks.com/option-chains/{stock_symbol}/nested endpoint.
|
|
2479
|
-
* This endpoint returns all available expirations that tastytrade offers for that equity symbol.
|
|
2480
|
-
* Each expiration contains a list of strikes, where each strike has a call and put field representing
|
|
2481
|
-
* the call symbol and put symbol respectively.
|
|
2482
|
-
*
|
|
2483
|
-
* We are planning to add a new endpoint to fetch the option chain for a particular stock and
|
|
2484
|
-
* handle this logic for you, but for now you need to fetch the option chain manually.
|
|
2485
|
-
|
|
2486
|
-
* @param params {PlaceOrderParams} Input parameters object
|
|
2487
|
-
* @returns {Promise<PlaceOrderResponse>} Standard response with success/Error/Warning structure
|
|
2488
|
-
*
|
|
2489
|
-
* Generated from: POST /api/v1/brokers/orders
|
|
2490
|
-
* @methodId place_order_api_v1_brokers_orders_post
|
|
2491
|
-
* @category brokers
|
|
2492
|
-
* @example
|
|
2493
|
-
* ```typescript-client
|
|
2494
|
-
* // Example with no parameters
|
|
2495
|
-
* const result = await finatic.placeOrder({});
|
|
2496
|
-
*
|
|
2497
|
-
* // Access the response data
|
|
2498
|
-
* if (result.success) {
|
|
2499
|
-
* console.log('Data:', result.success.data);
|
|
2500
|
-
* }
|
|
2501
|
-
* ```
|
|
2502
|
-
* @example
|
|
2503
|
-
* ```typescript-client
|
|
2504
|
-
* // Full example with optional parameters
|
|
2505
|
-
* const result = await finatic.placeOrder({
|
|
2506
|
-
body: {},
|
|
2507
|
-
connectionId: 'id-123'
|
|
2508
|
-
* });
|
|
2509
|
-
*
|
|
2510
|
-
* // Handle response with warnings
|
|
2511
|
-
* if (result.success) {
|
|
2512
|
-
* console.log('Data:', result.success.data);
|
|
2513
|
-
* if (result.Warning && result.Warning.length > 0) {
|
|
2514
|
-
* console.warn('Warnings:', result.Warning);
|
|
2515
|
-
* }
|
|
2516
|
-
* } else if (result.Error) {
|
|
2517
|
-
* console.error('Error:', result.Error.message, result.Error.code);
|
|
2518
|
-
* }
|
|
2519
|
-
* ```
|
|
2520
|
-
*/
|
|
2521
|
-
async placeOrder(params) {
|
|
2522
|
-
// Authentication check
|
|
2523
|
-
if (!this.sessionId) {
|
|
2524
|
-
throw new Error('Session not initialized. Call startSession() first.');
|
|
2525
|
-
}
|
|
2526
|
-
// Phase 2C: Extract individual params from input params object
|
|
2527
|
-
const body = params.body;
|
|
2528
|
-
const connectionId = params.connectionId;
|
|
2529
|
-
// Generate request ID
|
|
2530
|
-
const requestId = this._generateRequestId();
|
|
2531
|
-
// Input validation (Phase 2B: zod)
|
|
2532
|
-
if (this.sdkConfig?.validationEnabled) {
|
|
2533
|
-
// TODO: Generate validation schema from endpoint parameters
|
|
2534
|
-
// const validationSchema = z.object({ ... });
|
|
2535
|
-
// validateParams(validationSchema, params, this.sdkConfig);
|
|
2536
|
-
}
|
|
2537
|
-
// Check cache (Phase 2B: optional caching)
|
|
2538
|
-
const shouldCache = true;
|
|
2539
|
-
const cache = (0, cache_1.getCache)(this.sdkConfig);
|
|
2540
|
-
if (cache && this.sdkConfig?.cacheEnabled && shouldCache) {
|
|
2541
|
-
const cacheKey = (0, cache_1.generateCacheKey)('POST', '/api/v1/brokers/orders', params, this.sdkConfig);
|
|
2542
|
-
const cached = cache.get(cacheKey);
|
|
2543
|
-
if (cached) {
|
|
2544
|
-
this.logger.debug('Cache hit', { request_id: requestId, cache_key: cacheKey });
|
|
2545
|
-
return cached;
|
|
2546
|
-
}
|
|
2547
|
-
}
|
|
2548
|
-
// Structured logging (Phase 2B: pino)
|
|
2549
|
-
this.logger.debug('Place Order', {
|
|
2550
|
-
request_id: requestId,
|
|
2551
|
-
method: 'POST',
|
|
2552
|
-
path: '/api/v1/brokers/orders',
|
|
2553
|
-
params: params,
|
|
2554
|
-
action: 'placeOrder',
|
|
2555
|
-
});
|
|
2556
|
-
try {
|
|
2557
|
-
const response = await (0, retry_1.retryApiCall)(async () => {
|
|
2558
|
-
const apiResponse = await this.api.placeOrderApiV1BrokersOrdersPost({
|
|
2559
|
-
...(connectionId !== undefined ? { connectionId: connectionId } : {}),
|
|
2560
|
-
...(body !== undefined ? { body: body } : {}),
|
|
2561
|
-
}, {
|
|
2562
|
-
headers: {
|
|
2563
|
-
'x-session-id': this.sessionId,
|
|
2564
|
-
'x-company-id': this.companyId,
|
|
2565
|
-
'x-csrf-token': this.csrfToken,
|
|
2566
|
-
'x-request-id': requestId,
|
|
2567
|
-
},
|
|
2568
|
-
});
|
|
2569
|
-
return await (0, interceptors_1.applyResponseInterceptors)(apiResponse, this.sdkConfig);
|
|
2570
|
-
}, {}, this.sdkConfig);
|
|
2571
|
-
// Phase 2C: Unwrap API response and transform to standard response structure
|
|
2572
|
-
const responseData = response && typeof response === 'object' && 'data' in response
|
|
2573
|
-
? response.data
|
|
2574
|
-
: response;
|
|
2575
|
-
if (!(responseData && typeof responseData === 'object' && 'data' in responseData)) {
|
|
2576
|
-
throw new Error('Unexpected response shape: missing data');
|
|
2577
|
-
}
|
|
2578
|
-
const apiData = responseData.data;
|
|
2579
|
-
const warnings = Array.isArray(responseData.warnings)
|
|
2580
|
-
? responseData.warnings
|
|
2581
|
-
: undefined;
|
|
2582
|
-
const meta = responseData.meta;
|
|
2583
|
-
// Build standard response structure
|
|
2584
|
-
const standardResponse = {
|
|
2585
|
-
success: {
|
|
2586
|
-
data: (0, plain_object_1.convertToPlainObject)(apiData),
|
|
2587
|
-
...(meta ? { meta } : {}),
|
|
2588
|
-
},
|
|
2589
|
-
...(warnings && warnings.length > 0
|
|
2590
|
-
? {
|
|
2591
|
-
Warning: warnings.map((w) => ({
|
|
2592
|
-
message: w.message || String(w),
|
|
2593
|
-
code: w.code,
|
|
2594
|
-
details: w.details || w,
|
|
2595
|
-
})),
|
|
2596
|
-
}
|
|
2597
|
-
: {}),
|
|
2598
|
-
};
|
|
2599
|
-
if (cache && this.sdkConfig?.cacheEnabled && shouldCache) {
|
|
2600
|
-
const cacheKey = (0, cache_1.generateCacheKey)('POST', '/api/v1/brokers/orders', params, this.sdkConfig);
|
|
2601
|
-
cache.set(cacheKey, standardResponse, this.sdkConfig.cacheTtl || 300);
|
|
2602
|
-
}
|
|
2603
|
-
this.logger.debug('Place Order completed', {
|
|
2604
|
-
request_id: requestId,
|
|
2605
|
-
action: 'placeOrder',
|
|
2606
|
-
});
|
|
2607
|
-
// Phase 2C: Return standard response structure (already plain objects)
|
|
2608
|
-
return standardResponse;
|
|
2609
|
-
}
|
|
2610
|
-
catch (error) {
|
|
2611
|
-
try {
|
|
2612
|
-
await (0, interceptors_1.applyErrorInterceptors)(error, this.sdkConfig);
|
|
2613
|
-
}
|
|
2614
|
-
catch { }
|
|
2615
|
-
this.logger.error('Place Order failed', error, {
|
|
2616
|
-
request_id: requestId,
|
|
2617
|
-
action: 'placeOrder',
|
|
2618
|
-
});
|
|
2619
|
-
// Phase 2C: Extract error details from Axios errors or generic errors
|
|
2620
|
-
let errorMessage = error instanceof Error ? error.message : String(error);
|
|
2621
|
-
let errorCode = 'UNKNOWN_ERROR';
|
|
2622
|
-
let errorStatus;
|
|
2623
|
-
let errorDetails = {};
|
|
2624
|
-
// Handle Axios errors (from OpenAPI generator)
|
|
2625
|
-
if (error?.isAxiosError || error?.response) {
|
|
2626
|
-
const axiosError = error;
|
|
2627
|
-
errorStatus = axiosError.response?.status;
|
|
2628
|
-
errorCode = axiosError.code || `HTTP_${errorStatus || 'UNKNOWN'}`;
|
|
2629
|
-
errorMessage =
|
|
2630
|
-
axiosError.response?.data?.message ||
|
|
2631
|
-
axiosError.response?.statusText ||
|
|
2632
|
-
axiosError.message ||
|
|
2633
|
-
errorMessage;
|
|
2634
|
-
errorDetails = {
|
|
2635
|
-
status: errorStatus,
|
|
2636
|
-
statusText: axiosError.response?.statusText,
|
|
2637
|
-
responseData: axiosError.response?.data,
|
|
2638
|
-
requestUrl: axiosError.config?.url,
|
|
2639
|
-
requestMethod: axiosError.config?.method,
|
|
2640
|
-
};
|
|
2641
|
-
}
|
|
2642
|
-
else if (error instanceof Error) {
|
|
2643
|
-
errorCode = error?.code || 'UNKNOWN_ERROR';
|
|
2644
|
-
errorDetails = {
|
|
2645
|
-
stack: error.stack,
|
|
2646
|
-
name: error.name,
|
|
2647
|
-
};
|
|
2648
|
-
}
|
|
2649
|
-
else {
|
|
2650
|
-
errorDetails = { error };
|
|
2651
|
-
}
|
|
2652
|
-
// Phase 2C: Return standard error response structure
|
|
2653
|
-
const errorResponse = {
|
|
2654
|
-
success: {
|
|
2655
|
-
data: null,
|
|
2656
|
-
},
|
|
2657
|
-
Error: {
|
|
2658
|
-
message: errorMessage,
|
|
2659
|
-
code: errorCode,
|
|
2660
|
-
status: errorStatus,
|
|
2661
|
-
details: errorDetails,
|
|
2662
|
-
},
|
|
2663
|
-
};
|
|
2664
|
-
return errorResponse;
|
|
2665
|
-
}
|
|
2666
|
-
// TODO Phase 2D: Add complex validation schemas (unions, enums, nested)
|
|
2667
|
-
// TODO Phase 2D: Add orphaned method detection
|
|
2668
|
-
// TODO Phase 2D: Add advanced convenience methods
|
|
2669
|
-
}
|
|
2670
|
-
/**
|
|
2671
|
-
* Cancel Order
|
|
2672
|
-
*
|
|
2673
|
-
* Cancel an existing order.
|
|
2674
|
-
*
|
|
2675
|
-
* This endpoint is accessible from the portal and uses session-only authentication.
|
|
2676
|
-
* Requires trading permissions for the company.
|
|
2677
|
-
|
|
2678
|
-
* @param params {CancelOrderParams} Input parameters object
|
|
2679
|
-
* @returns {Promise<CancelOrderResponse>} Standard response with success/Error/Warning structure
|
|
2680
|
-
*
|
|
2681
|
-
* Generated from: DELETE /api/v1/brokers/orders/{order_id}
|
|
2682
|
-
* @methodId cancel_order_api_v1_brokers_orders__order_id__delete
|
|
2683
|
-
* @category brokers
|
|
2684
|
-
* @example
|
|
2685
|
-
* ```typescript-client
|
|
2686
|
-
* // Minimal example with required parameters only
|
|
2687
|
-
* const result = await finatic.cancelOrder({
|
|
2688
|
-
orderId: 'id-123'
|
|
2689
|
-
* });
|
|
2690
|
-
*
|
|
2691
|
-
* // Access the response data
|
|
2692
|
-
* if (result.success) {
|
|
2693
|
-
* console.log('Data:', result.success.data);
|
|
2694
|
-
* } else if (result.Error) {
|
|
2695
|
-
* console.error('Error:', result.Error.message);
|
|
2696
|
-
* }
|
|
2697
|
-
* ```
|
|
2698
|
-
* @example
|
|
2699
|
-
* ```typescript-client
|
|
2700
|
-
* // Full example with optional parameters
|
|
2701
|
-
* const result = await finatic.cancelOrder({
|
|
2702
|
-
orderId: 'id-123',
|
|
2703
|
-
body: {},
|
|
2704
|
-
accountNumber: 'example',
|
|
2705
|
-
connectionId: 'id-123'
|
|
2706
|
-
* });
|
|
2707
|
-
*
|
|
2708
|
-
* // Handle response with warnings
|
|
2709
|
-
* if (result.success) {
|
|
2710
|
-
* console.log('Data:', result.success.data);
|
|
2711
|
-
* if (result.Warning && result.Warning.length > 0) {
|
|
2712
|
-
* console.warn('Warnings:', result.Warning);
|
|
2713
|
-
* }
|
|
2714
|
-
* } else if (result.Error) {
|
|
2715
|
-
* console.error('Error:', result.Error.message, result.Error.code);
|
|
2716
|
-
* }
|
|
2717
|
-
* ```
|
|
2718
|
-
*/
|
|
2719
|
-
async cancelOrder(params) {
|
|
2720
|
-
// Authentication check
|
|
2721
|
-
if (!this.sessionId) {
|
|
2722
|
-
throw new Error('Session not initialized. Call startSession() first.');
|
|
2723
|
-
}
|
|
2724
|
-
// Phase 2C: Extract individual params from input params object
|
|
2725
|
-
const orderId = params.orderId;
|
|
2726
|
-
const body = params.body;
|
|
2727
|
-
const accountNumber = params.accountNumber;
|
|
2728
|
-
const connectionId = params.connectionId;
|
|
2729
|
-
// Generate request ID
|
|
2730
|
-
const requestId = this._generateRequestId();
|
|
2731
|
-
// Input validation (Phase 2B: zod)
|
|
2732
|
-
if (this.sdkConfig?.validationEnabled) {
|
|
2733
|
-
// TODO: Generate validation schema from endpoint parameters
|
|
2734
|
-
// const validationSchema = z.object({ ... });
|
|
2735
|
-
// validateParams(validationSchema, params, this.sdkConfig);
|
|
2736
|
-
}
|
|
2737
|
-
// Check cache (Phase 2B: optional caching)
|
|
2738
|
-
const shouldCache = true;
|
|
2739
|
-
const cache = (0, cache_1.getCache)(this.sdkConfig);
|
|
2740
|
-
if (cache && this.sdkConfig?.cacheEnabled && shouldCache) {
|
|
2741
|
-
const cacheKey = (0, cache_1.generateCacheKey)('DELETE', '/api/v1/brokers/orders/{order_id}', params, this.sdkConfig);
|
|
2742
|
-
const cached = cache.get(cacheKey);
|
|
2743
|
-
if (cached) {
|
|
2744
|
-
this.logger.debug('Cache hit', { request_id: requestId, cache_key: cacheKey });
|
|
2745
|
-
return cached;
|
|
2746
|
-
}
|
|
2747
|
-
}
|
|
2748
|
-
// Structured logging (Phase 2B: pino)
|
|
2749
|
-
this.logger.debug('Cancel Order', {
|
|
2750
|
-
request_id: requestId,
|
|
2751
|
-
method: 'DELETE',
|
|
2752
|
-
path: '/api/v1/brokers/orders/{order_id}',
|
|
2753
|
-
params: params,
|
|
2754
|
-
action: 'cancelOrder',
|
|
2755
|
-
});
|
|
2756
|
-
try {
|
|
2757
|
-
const response = await (0, retry_1.retryApiCall)(async () => {
|
|
2758
|
-
const apiResponse = await this.api.cancelOrderApiV1BrokersOrdersOrderIdDelete({
|
|
2759
|
-
orderId: orderId,
|
|
2760
|
-
...(accountNumber !== undefined ? { accountNumber: accountNumber } : {}),
|
|
2761
|
-
...(connectionId !== undefined ? { connectionId: connectionId } : {}),
|
|
2762
|
-
...(body !== undefined ? { body: body } : {}),
|
|
2763
|
-
}, {
|
|
2764
|
-
headers: {
|
|
2765
|
-
'x-session-id': this.sessionId,
|
|
2766
|
-
'x-company-id': this.companyId,
|
|
2767
|
-
'x-csrf-token': this.csrfToken,
|
|
2768
|
-
'x-request-id': requestId,
|
|
2769
|
-
},
|
|
2770
|
-
});
|
|
2771
|
-
return await (0, interceptors_1.applyResponseInterceptors)(apiResponse, this.sdkConfig);
|
|
2772
|
-
}, {}, this.sdkConfig);
|
|
2773
|
-
// Phase 2C: Unwrap API response and transform to standard response structure
|
|
2774
|
-
const responseData = response && typeof response === 'object' && 'data' in response
|
|
2775
|
-
? response.data
|
|
2776
|
-
: response;
|
|
2777
|
-
if (!(responseData && typeof responseData === 'object' && 'data' in responseData)) {
|
|
2778
|
-
throw new Error('Unexpected response shape: missing data');
|
|
2779
|
-
}
|
|
2780
|
-
const apiData = responseData.data;
|
|
2781
|
-
const warnings = Array.isArray(responseData.warnings)
|
|
2782
|
-
? responseData.warnings
|
|
2783
|
-
: undefined;
|
|
2784
|
-
const meta = responseData.meta;
|
|
2785
|
-
// Build standard response structure
|
|
2786
|
-
const standardResponse = {
|
|
2787
|
-
success: {
|
|
2788
|
-
data: (0, plain_object_1.convertToPlainObject)(apiData),
|
|
2789
|
-
...(meta ? { meta } : {}),
|
|
2790
|
-
},
|
|
2791
|
-
...(warnings && warnings.length > 0
|
|
2792
|
-
? {
|
|
2793
|
-
Warning: warnings.map((w) => ({
|
|
2794
|
-
message: w.message || String(w),
|
|
2795
|
-
code: w.code,
|
|
2796
|
-
details: w.details || w,
|
|
2797
|
-
})),
|
|
2798
|
-
}
|
|
2799
|
-
: {}),
|
|
2800
|
-
};
|
|
2801
|
-
if (cache && this.sdkConfig?.cacheEnabled && shouldCache) {
|
|
2802
|
-
const cacheKey = (0, cache_1.generateCacheKey)('DELETE', '/api/v1/brokers/orders/{order_id}', params, this.sdkConfig);
|
|
2803
|
-
cache.set(cacheKey, standardResponse, this.sdkConfig.cacheTtl || 300);
|
|
2804
|
-
}
|
|
2805
|
-
this.logger.debug('Cancel Order completed', {
|
|
2806
|
-
request_id: requestId,
|
|
2807
|
-
action: 'cancelOrder',
|
|
2808
|
-
});
|
|
2809
|
-
// Phase 2C: Return standard response structure (already plain objects)
|
|
2810
|
-
return standardResponse;
|
|
2811
|
-
}
|
|
2812
|
-
catch (error) {
|
|
2813
|
-
try {
|
|
2814
|
-
await (0, interceptors_1.applyErrorInterceptors)(error, this.sdkConfig);
|
|
2815
|
-
}
|
|
2816
|
-
catch { }
|
|
2817
|
-
this.logger.error('Cancel Order failed', error, {
|
|
2818
|
-
request_id: requestId,
|
|
2819
|
-
action: 'cancelOrder',
|
|
2820
|
-
});
|
|
2821
|
-
// Phase 2C: Extract error details from Axios errors or generic errors
|
|
2822
|
-
let errorMessage = error instanceof Error ? error.message : String(error);
|
|
2823
|
-
let errorCode = 'UNKNOWN_ERROR';
|
|
2824
|
-
let errorStatus;
|
|
2825
|
-
let errorDetails = {};
|
|
2826
|
-
// Handle Axios errors (from OpenAPI generator)
|
|
2827
|
-
if (error?.isAxiosError || error?.response) {
|
|
2828
|
-
const axiosError = error;
|
|
2829
|
-
errorStatus = axiosError.response?.status;
|
|
2830
|
-
errorCode = axiosError.code || `HTTP_${errorStatus || 'UNKNOWN'}`;
|
|
2831
|
-
errorMessage =
|
|
2832
|
-
axiosError.response?.data?.message ||
|
|
2833
|
-
axiosError.response?.statusText ||
|
|
2834
|
-
axiosError.message ||
|
|
2835
|
-
errorMessage;
|
|
2836
|
-
errorDetails = {
|
|
2837
|
-
status: errorStatus,
|
|
2838
|
-
statusText: axiosError.response?.statusText,
|
|
2839
|
-
responseData: axiosError.response?.data,
|
|
2840
|
-
requestUrl: axiosError.config?.url,
|
|
2841
|
-
requestMethod: axiosError.config?.method,
|
|
2842
|
-
};
|
|
2843
|
-
}
|
|
2844
|
-
else if (error instanceof Error) {
|
|
2845
|
-
errorCode = error?.code || 'UNKNOWN_ERROR';
|
|
2846
|
-
errorDetails = {
|
|
2847
|
-
stack: error.stack,
|
|
2848
|
-
name: error.name,
|
|
2849
|
-
};
|
|
2850
|
-
}
|
|
2851
|
-
else {
|
|
2852
|
-
errorDetails = { error };
|
|
2853
|
-
}
|
|
2854
|
-
// Phase 2C: Return standard error response structure
|
|
2855
|
-
const errorResponse = {
|
|
2856
|
-
success: {
|
|
2857
|
-
data: null,
|
|
2858
|
-
},
|
|
2859
|
-
Error: {
|
|
2860
|
-
message: errorMessage,
|
|
2861
|
-
code: errorCode,
|
|
2862
|
-
status: errorStatus,
|
|
2863
|
-
details: errorDetails,
|
|
2864
|
-
},
|
|
2865
|
-
};
|
|
2866
|
-
return errorResponse;
|
|
2867
|
-
}
|
|
2868
|
-
// TODO Phase 2D: Add complex validation schemas (unions, enums, nested)
|
|
2869
|
-
// TODO Phase 2D: Add orphaned method detection
|
|
2870
|
-
// TODO Phase 2D: Add advanced convenience methods
|
|
2871
|
-
}
|
|
2872
|
-
/**
|
|
2873
|
-
* Modify Order
|
|
2874
|
-
*
|
|
2875
|
-
* Modify an existing order.
|
|
2876
|
-
*
|
|
2877
|
-
* This endpoint is accessible from the portal and uses session-only authentication.
|
|
2878
|
-
* Requires trading permissions for the company.
|
|
2879
|
-
|
|
2880
|
-
* @param params {ModifyOrderParams} Input parameters object
|
|
2881
|
-
* @returns {Promise<ModifyOrderResponse>} Standard response with success/Error/Warning structure
|
|
2882
|
-
*
|
|
2883
|
-
* Generated from: PATCH /api/v1/brokers/orders/{order_id}
|
|
2884
|
-
* @methodId modify_order_api_v1_brokers_orders__order_id__patch
|
|
2885
|
-
* @category brokers
|
|
2886
|
-
* @example
|
|
2887
|
-
* ```typescript-client
|
|
2888
|
-
* // Minimal example with required parameters only
|
|
2889
|
-
* const result = await finatic.modifyOrder({
|
|
2890
|
-
orderId: 'id-123'
|
|
2891
|
-
* });
|
|
2892
|
-
*
|
|
2893
|
-
* // Access the response data
|
|
2894
|
-
* if (result.success) {
|
|
2895
|
-
* console.log('Data:', result.success.data);
|
|
2896
|
-
* } else if (result.Error) {
|
|
2897
|
-
* console.error('Error:', result.Error.message);
|
|
2898
|
-
* }
|
|
2899
|
-
* ```
|
|
2900
|
-
* @example
|
|
2901
|
-
* ```typescript-client
|
|
2902
|
-
* // Full example with optional parameters
|
|
2903
|
-
* const result = await finatic.modifyOrder({
|
|
2904
|
-
orderId: 'id-123',
|
|
2905
|
-
body: {},
|
|
2906
|
-
accountNumber: 'example',
|
|
2907
|
-
connectionId: 'id-123'
|
|
2908
|
-
* });
|
|
2909
|
-
*
|
|
2910
|
-
* // Handle response with warnings
|
|
2911
|
-
* if (result.success) {
|
|
2912
|
-
* console.log('Data:', result.success.data);
|
|
2913
|
-
* if (result.Warning && result.Warning.length > 0) {
|
|
2914
|
-
* console.warn('Warnings:', result.Warning);
|
|
2915
|
-
* }
|
|
2916
|
-
* } else if (result.Error) {
|
|
2917
|
-
* console.error('Error:', result.Error.message, result.Error.code);
|
|
2918
|
-
* }
|
|
2919
|
-
* ```
|
|
2920
|
-
*/
|
|
2921
|
-
async modifyOrder(params) {
|
|
2922
|
-
// Authentication check
|
|
2923
|
-
if (!this.sessionId) {
|
|
2924
|
-
throw new Error('Session not initialized. Call startSession() first.');
|
|
2925
|
-
}
|
|
2926
|
-
// Phase 2C: Extract individual params from input params object
|
|
2927
|
-
const orderId = params.orderId;
|
|
2928
|
-
const body = params.body;
|
|
2929
|
-
const accountNumber = params.accountNumber;
|
|
2930
|
-
const connectionId = params.connectionId;
|
|
2931
|
-
// Generate request ID
|
|
2932
|
-
const requestId = this._generateRequestId();
|
|
2933
|
-
// Input validation (Phase 2B: zod)
|
|
2934
|
-
if (this.sdkConfig?.validationEnabled) {
|
|
2935
|
-
// TODO: Generate validation schema from endpoint parameters
|
|
2936
|
-
// const validationSchema = z.object({ ... });
|
|
2937
|
-
// validateParams(validationSchema, params, this.sdkConfig);
|
|
2938
|
-
}
|
|
2939
|
-
// Check cache (Phase 2B: optional caching)
|
|
2940
|
-
const shouldCache = true;
|
|
2941
|
-
const cache = (0, cache_1.getCache)(this.sdkConfig);
|
|
2942
|
-
if (cache && this.sdkConfig?.cacheEnabled && shouldCache) {
|
|
2943
|
-
const cacheKey = (0, cache_1.generateCacheKey)('PATCH', '/api/v1/brokers/orders/{order_id}', params, this.sdkConfig);
|
|
2944
|
-
const cached = cache.get(cacheKey);
|
|
2945
|
-
if (cached) {
|
|
2946
|
-
this.logger.debug('Cache hit', { request_id: requestId, cache_key: cacheKey });
|
|
2947
|
-
return cached;
|
|
2948
|
-
}
|
|
2949
|
-
}
|
|
2950
|
-
// Structured logging (Phase 2B: pino)
|
|
2951
|
-
this.logger.debug('Modify Order', {
|
|
2952
|
-
request_id: requestId,
|
|
2953
|
-
method: 'PATCH',
|
|
2954
|
-
path: '/api/v1/brokers/orders/{order_id}',
|
|
2955
|
-
params: params,
|
|
2956
|
-
action: 'modifyOrder',
|
|
2957
|
-
});
|
|
2958
|
-
try {
|
|
2959
|
-
const response = await (0, retry_1.retryApiCall)(async () => {
|
|
2960
|
-
const apiResponse = await this.api.modifyOrderApiV1BrokersOrdersOrderIdPatch({
|
|
2961
|
-
orderId: orderId,
|
|
2962
|
-
...(accountNumber !== undefined ? { accountNumber: accountNumber } : {}),
|
|
2963
|
-
...(connectionId !== undefined ? { connectionId: connectionId } : {}),
|
|
2964
|
-
...(body !== undefined ? { body: body } : {}),
|
|
2965
|
-
}, {
|
|
2966
|
-
headers: {
|
|
2967
|
-
'x-session-id': this.sessionId,
|
|
2968
|
-
'x-company-id': this.companyId,
|
|
2969
|
-
'x-csrf-token': this.csrfToken,
|
|
2970
|
-
'x-request-id': requestId,
|
|
2971
|
-
},
|
|
2972
|
-
});
|
|
2973
|
-
return await (0, interceptors_1.applyResponseInterceptors)(apiResponse, this.sdkConfig);
|
|
2974
|
-
}, {}, this.sdkConfig);
|
|
2975
|
-
// Phase 2C: Unwrap API response and transform to standard response structure
|
|
2976
|
-
const responseData = response && typeof response === 'object' && 'data' in response
|
|
2977
|
-
? response.data
|
|
2978
|
-
: response;
|
|
2979
|
-
if (!(responseData && typeof responseData === 'object' && 'data' in responseData)) {
|
|
2980
|
-
throw new Error('Unexpected response shape: missing data');
|
|
2981
|
-
}
|
|
2982
|
-
const apiData = responseData.data;
|
|
2983
|
-
const warnings = Array.isArray(responseData.warnings)
|
|
2984
|
-
? responseData.warnings
|
|
2985
|
-
: undefined;
|
|
2986
|
-
const meta = responseData.meta;
|
|
2987
|
-
// Build standard response structure
|
|
2988
|
-
const standardResponse = {
|
|
2989
|
-
success: {
|
|
2990
|
-
data: (0, plain_object_1.convertToPlainObject)(apiData),
|
|
2991
|
-
...(meta ? { meta } : {}),
|
|
2992
|
-
},
|
|
2993
|
-
...(warnings && warnings.length > 0
|
|
2994
|
-
? {
|
|
2995
|
-
Warning: warnings.map((w) => ({
|
|
2996
|
-
message: w.message || String(w),
|
|
2997
|
-
code: w.code,
|
|
2998
|
-
details: w.details || w,
|
|
2999
|
-
})),
|
|
3000
|
-
}
|
|
3001
|
-
: {}),
|
|
3002
|
-
};
|
|
3003
|
-
if (cache && this.sdkConfig?.cacheEnabled && shouldCache) {
|
|
3004
|
-
const cacheKey = (0, cache_1.generateCacheKey)('PATCH', '/api/v1/brokers/orders/{order_id}', params, this.sdkConfig);
|
|
3005
|
-
cache.set(cacheKey, standardResponse, this.sdkConfig.cacheTtl || 300);
|
|
3006
|
-
}
|
|
3007
|
-
this.logger.debug('Modify Order completed', {
|
|
3008
|
-
request_id: requestId,
|
|
3009
|
-
action: 'modifyOrder',
|
|
3010
|
-
});
|
|
3011
|
-
// Phase 2C: Return standard response structure (already plain objects)
|
|
3012
|
-
return standardResponse;
|
|
3013
|
-
}
|
|
3014
|
-
catch (error) {
|
|
3015
|
-
try {
|
|
3016
|
-
await (0, interceptors_1.applyErrorInterceptors)(error, this.sdkConfig);
|
|
3017
|
-
}
|
|
3018
|
-
catch { }
|
|
3019
|
-
this.logger.error('Modify Order failed', error, {
|
|
3020
|
-
request_id: requestId,
|
|
3021
|
-
action: 'modifyOrder',
|
|
3022
|
-
});
|
|
3023
|
-
// Phase 2C: Extract error details from Axios errors or generic errors
|
|
3024
|
-
let errorMessage = error instanceof Error ? error.message : String(error);
|
|
3025
|
-
let errorCode = 'UNKNOWN_ERROR';
|
|
3026
|
-
let errorStatus;
|
|
3027
|
-
let errorDetails = {};
|
|
3028
|
-
// Handle Axios errors (from OpenAPI generator)
|
|
3029
|
-
if (error?.isAxiosError || error?.response) {
|
|
3030
|
-
const axiosError = error;
|
|
3031
|
-
errorStatus = axiosError.response?.status;
|
|
3032
|
-
errorCode = axiosError.code || `HTTP_${errorStatus || 'UNKNOWN'}`;
|
|
3033
|
-
errorMessage =
|
|
3034
|
-
axiosError.response?.data?.message ||
|
|
3035
|
-
axiosError.response?.statusText ||
|
|
3036
|
-
axiosError.message ||
|
|
3037
|
-
errorMessage;
|
|
3038
|
-
errorDetails = {
|
|
3039
|
-
status: errorStatus,
|
|
3040
|
-
statusText: axiosError.response?.statusText,
|
|
3041
|
-
responseData: axiosError.response?.data,
|
|
3042
|
-
requestUrl: axiosError.config?.url,
|
|
3043
|
-
requestMethod: axiosError.config?.method,
|
|
3044
|
-
};
|
|
3045
|
-
}
|
|
3046
|
-
else if (error instanceof Error) {
|
|
3047
|
-
errorCode = error?.code || 'UNKNOWN_ERROR';
|
|
3048
|
-
errorDetails = {
|
|
3049
|
-
stack: error.stack,
|
|
3050
|
-
name: error.name,
|
|
3051
|
-
};
|
|
3052
|
-
}
|
|
3053
|
-
else {
|
|
3054
|
-
errorDetails = { error };
|
|
3055
|
-
}
|
|
3056
|
-
// Phase 2C: Return standard error response structure
|
|
3057
|
-
const errorResponse = {
|
|
3058
|
-
success: {
|
|
3059
|
-
data: null,
|
|
3060
|
-
},
|
|
3061
|
-
Error: {
|
|
3062
|
-
message: errorMessage,
|
|
3063
|
-
code: errorCode,
|
|
3064
|
-
status: errorStatus,
|
|
3065
|
-
details: errorDetails,
|
|
3066
|
-
},
|
|
3067
|
-
};
|
|
3068
|
-
return errorResponse;
|
|
3069
|
-
}
|
|
3070
|
-
// TODO Phase 2D: Add complex validation schemas (unions, enums, nested)
|
|
3071
|
-
// TODO Phase 2D: Add orphaned method detection
|
|
3072
|
-
// TODO Phase 2D: Add advanced convenience methods
|
|
3073
|
-
}
|
|
3074
|
-
}
|
|
3075
|
-
exports.BrokersWrapper = BrokersWrapper;
|
|
3076
|
-
//# sourceMappingURL=brokers.js.map
|