{"id":22938201,"url":"https://github.com/hootnot/saxo_openapi","last_synced_at":"2025-04-10T02:25:33.399Z","repository":{"id":45344939,"uuid":"168889299","full_name":"hootnot/saxo_openapi","owner":"hootnot","description":"The saxo_openapi package provides easy access to SAXO Bank OpenAPI (https://www.developer.saxo/openapi/learn). Checkout the Jupyter notebooks covering most aspects of the API.","archived":false,"fork":false,"pushed_at":"2023-11-06T14:52:57.000Z","size":323,"stargazers_count":93,"open_issues_count":3,"forks_count":37,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-04-02T22:06:06.780Z","etag":null,"topics":["financial-markets","forex","rest-api","saxo","saxo-openapi","trading","tradingbot"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hootnot.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.rst","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-02-02T23:23:21.000Z","updated_at":"2025-03-27T21:14:49.000Z","dependencies_parsed_at":"2023-01-31T01:31:04.261Z","dependency_job_id":null,"html_url":"https://github.com/hootnot/saxo_openapi","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hootnot%2Fsaxo_openapi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hootnot%2Fsaxo_openapi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hootnot%2Fsaxo_openapi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hootnot%2Fsaxo_openapi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hootnot","download_url":"https://codeload.github.com/hootnot/saxo_openapi/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248143636,"owners_count":21054812,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["financial-markets","forex","rest-api","saxo","saxo-openapi","trading","tradingbot"],"created_at":"2024-12-14T12:16:26.882Z","updated_at":"2025-04-10T02:25:33.380Z","avatar_url":"https://github.com/hootnot.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"saxo_openapi\n============\n\n\nPython wrapper for Saxo Bank OpenAPI REST-API (see `here\n\u003chttps://www.developer.saxo/openapi/learn\u003e`_)\n\nMost endpoints are covered by *saxo_openapi*. Check `Covered endpoints`_ for details.\n\n.. image:: https://travis-ci.com/hootnot/saxo_openapi.svg?branch=master\n   :target: https://travis-ci.com/github/hootnot/saxo_openapi\n\n.. image:: https://readthedocs.org/projects/saxo-openapi/badge/?version=latest\n   :target: https://saxo-openapi.readthedocs.io/en/latest/?badge=latest\n   :alt: Documentation Status\n\n.. image:: https://coveralls.io/repos/github/hootnot/saxo_openapi/badge.svg?branch=master\n   :target: https://coveralls.io/github/hootnot/saxo_openapi?branch=master\n   :alt: Coverage\n\n.. image:: https://img.shields.io/pypi/v/saxo_openapi.svg\n   :target: https://pypi.org/project/saxo-openapi\n   :alt: PyPI\n\n.. image:: https://img.shields.io/pypi/pyversions/saxo_openapi.svg\n   :target: https://pypi.org/project/saxo-openapi\n   :alt: Python versions\n\n.. image:: https://api.codacy.com/project/badge/Grade/edcfcf6a416a4f94bb710413a35daa83\n   :target: https://www.codacy.com/app/hootnot/saxo_openapi?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=hootnot/saxo_openapi\u0026amp;utm_campaign=Badge_Grade\n\nInteractive\n-----------\n\n.. image:: https://jupyter.readthedocs.io/en/latest/_static/_images/jupyter.svg\n   :target: ./jupyter\n   :alt: Jupyter\n\nUsing the Jupyter `notebook`_ it is easy to experiment with the\n*saxo_openapi* library.\n\n.. _notebook: ./jupyter/index.ipynb\n\nTOC\n---\n\n   + `Install`_\n   + `Design`_\n   + `Documentation`_\n   + `Example`_\n   + `Some Trading`_\n       - `Or by using: contrib.orders`_\n   + `Covered endpoints`_\n\n\nInstall\n-------\n\n.. code-block:: bash\n\n   # Setup a virtual environment\n   $ mkdir tst_saxo_openapi\n   $ cd tst_saxo_openapi\n   $ /usr/local/bin/python3.7 -m venv venv37\n   $ . ./venv37/bin/activate\n   (venv37) feite@oatr:~/tst_saxo_openapi$\n\n   $ pip install saxo_openapi requests\n\n   # get a token from developer.saxo\n   # try some examples\n\n\nTo use the latest development version from github:\n\n.. code-block:: bash\n\n   $ pip install git+https://github.com/hootnot/saxo_openapi.git\n\n\n.. note:: Only python3 is supported!\n\n\nDesign\n------\n\nThe *saxo_openapi* covers each *endpoint* of the SAXO OpenAPI by a\n*request class*.\nEach request class representing an endpoint applies the following in a consistent way:\n\n  +-----------------------------------------------+-----------------------------------------------------+--------------------------------------------------------+\n  | **Endpoint parameters as documented by SAXO** | **saxo_openpi request class**                       | **Comment**                                            |\n  +-----------------------------------------------+-----------------------------------------------------+--------------------------------------------------------+\n  | *route* parameters                            | named parameters: required                          |                                                        |\n  +-----------------------------------------------+-----------------------------------------------------+--------------------------------------------------------+\n  | example:                                      |                                                     |                                                        |\n  +-----------------------------------------------+-----------------------------------------------------+--------------------------------------------------------+\n  | /port/v1/positions/me/?FieldGroups=...        | portfolio.PositionsMe()                             | No route params and no required params                 |\n  +-----------------------------------------------+-----------------------------------------------------+--------------------------------------------------------+\n  |                                               |                                                     |                                                        |\n  +-----------------------------------------------+-----------------------------------------------------+--------------------------------------------------------+\n  | *querystring* parameters                      | *params* dict: optional and/or required parameters. |                                                        |\n  |                                               | If all parameters in params are optional the params |                                                        |\n  |                                               | parameter is optional, otherwise it is required     |                                                        |\n  +-----------------------------------------------+-----------------------------------------------------+--------------------------------------------------------+\n  | example:                                      |                                                     |                                                        |\n  +-----------------------------------------------+-----------------------------------------------------+--------------------------------------------------------+\n  | /port/v1/positions/{PositionId}/?...          | pf.positions.SinglePosition(PositionId, params={..})| *PositionId*: required, *params*: required             |\n  +-----------------------------------------------+-----------------------------------------------------+--------------------------------------------------------+\n  |                                               |                                                     |                                                        |\n  +-----------------------------------------------+-----------------------------------------------------+--------------------------------------------------------+\n  | *body* parameters                             | *data* dict: optional and/or required parameters    |                                                        |\n  +-----------------------------------------------+-----------------------------------------------------+--------------------------------------------------------+\n  | example:                                      |                                                     |                                                        |\n  +-----------------------------------------------+-----------------------------------------------------+--------------------------------------------------------+\n  | /trade/v2/orders/                             | tr.orders.Order(data={..})                          | *data*: required                                       |\n  +-----------------------------------------------+-----------------------------------------------------+--------------------------------------------------------+\n\nTop `saxo_openapi`_\n\nDocumentation\n-------------\n\nSAXO Bank has a full documentation of their REST interface available\non  `https://www.developer.saxo/openapi/referencedocs`_.\n\nThe documentation of *saxo_openapi* is on `https://saxo-openapi.readthedocs.io/en/latest`_.\nEach request-class is documented with a straightforward usage example.\n\n.. _`https://www.developer.saxo/openapi/referencedocs`: https://www.developer.saxo/openapi/referencedocs\n.. _`https://saxo-openapi.readthedocs.io/en/latest`: https://saxo-openapi.readthedocs.io/en/latest\n\nTop `saxo_openapi`_\n\nExample\n-------\n\n.. code-block:: python\n\n    from saxo_openapi import API\n    import saxo_openapi.endpoints.rootservices as rs\n    from pprint import pprint\n\n    token = \" ... [Paste your access token here - create a 24-hour token for testing on developer.saxo] ... \"\n    client = API(access_token=token)\n\n    # lets make a diagnostics request, it should return '' with a state 200\n    r = rs.diagnostics.Get()\n    print(\"request is: \", r)\n    rv = client.request(r)\n    assert rv is None and r.status_code == 200\n    print('diagnostics passed')\n\n    # request available rootservices-features\n    r = rs.features.Availability()\n    rv = client.request(r)\n    print(\"request is: \", r)\n    print(\"response: \")\n    pprint(rv, indent=2)\n    print(r.status_code)\n\nOutput:\n\n ::\n\n    request is:  openapi/root/v1/diagnostics/get/\n    diagnostics passed\n    request is:  openapi/root/v1/features/availability/\n    response:\n    [ {'Available': True, 'Feature': 'News'},\n      {'Available': True, 'Feature': 'GainersLosers'},\n      {'Available': True, 'Feature': 'Calendar'},\n      {'Available': True, 'Feature': 'Chart'}]\n    200\n\nTop `saxo_openapi`_\n\nSome Trading\n------------\n\n.. code-block:: python\n\n   from saxo_openapi import API\n   import saxo_openapi.endpoints.trading as tr\n   import saxo_openapi.endpoints.portfolio as pf\n   import json\n\n   # Place your token in a file named: tok.txt\n   tok = \"\"\n   with open(\"tok.txt\") as I:\n       tok = I.read().strip()\n\n   # Our client to process the requests\n   client = API(access_token=tok)\n\n   # Positions, probably none, but maybe you see positions\n   # that you created by the explorer\n   r = pf.positions.PositionsMe()\n   rv = client.request(r)\n   print(json.dumps(rv, indent=2))\n\n   # Place some market orders\n   MO = [\n   {\n       \"AccountKey\": \"Cf4xZWiYL6W1nMKpygBLLA==\",\n       \"Amount\": \"100000\",\n       \"AssetType\": \"FxSpot\",\n       \"BuySell\": \"Sell\",\n       \"OrderType\": \"Market\",\n       \"Uic\": 21   # EURUSD\n   },\n   {\n       \"AccountKey\": \"Cf4xZWiYL6W1nMKpygBLLA==\",\n       \"Amount\": \"80000\",\n       \"AssetType\": \"FxSpot\",\n       \"BuySell\": \"Buy\",\n       \"OrderType\": \"Market\",\n       \"Uic\": 23   # GBPCAD\n   },\n   ]\n\n   # create Order requests and process them\n   for r in [tr.orders.Order(data=orderspec) for orderspec in MO]:\n       client.request(r)\n\n   # check for positions again\n   r = pf.positions.PositionsMe()\n   rv = client.request(r)\n   print(json.dumps(rv, indent=2))\n\n\nOutput:\n\n.. code-block:: python\n\n   {\n     \"__count\": 0,\n     \"Data\": []\n   }\n\n.. code-block:: python\n\n   {\n     \"__count\": 2,\n     \"Data\": [\n       {\n         \"NetPositionId\": \"GBPCAD__FxSpot\",\n         \"PositionBase\": {\n           \"Uic\": 23,\n           \"AccountId\": \"9226397\",\n           \"Amount\": 80000.0,\n           \"CanBeClosed\": true,\n           \"SourceOrderId\": \"76306670\",\n           \"ExecutionTimeOpen\": \"2019-03-05T22:39:43.738721Z\",\n           \"Status\": \"Open\",\n           \"IsMarketOpen\": true,\n           \"CorrelationKey\": \"244b083d-7bce-4e4b-a01c-5117e5860321\",\n           \"CloseConversionRateSettled\": false,\n           \"ClientId\": \"9226397\",\n           \"OpenPrice\": 1.75937,\n           \"RelatedOpenOrders\": [],\n           \"ValueDate\": \"2019-03-08T00:00:00.000000Z\",\n           \"SpotDate\": \"2019-03-08\",\n           \"AssetType\": \"FxSpot\"\n         },\n         \"PositionView\": {\n           \"Exposure\": 80000.0,\n           \"InstrumentPriceDayPercentChange\": -0.04,\n           \"ConversionRateCurrent\": 0.662245,\n           \"TradeCostsTotal\": -14.07,\n           \"ExposureInBaseCurrency\": 93196.8,\n           \"CurrentPriceType\": \"Bid\",\n           \"TradeCostsTotalInBaseCurrency\": -9.32,\n           \"ProfitLossOnTradeInBaseCurrency\": -49.27,\n           \"CurrentPriceDelayMinutes\": 0,\n           \"ConversionRateOpen\": 0.662245,\n           \"ProfitLossOnTrade\": -74.4,\n           \"ExposureCurrency\": \"GBP\",\n           \"CurrentPrice\": 1.75844,\n           \"CalculationReliability\": \"Ok\"\n         },\n         \"PositionId\": \"212702698\"\n       },\n       {\n         \"NetPositionId\": \"EURUSD__FxSpot\",\n         \"PositionBase\": {\n           \"Uic\": 21,\n           \"AccountId\": \"9226397\",\n           \"Amount\": -100000.0,\n           \"CanBeClosed\": true,\n           \"SourceOrderId\": \"76306669\",\n           \"ExecutionTimeOpen\": \"2019-03-05T22:39:43.546536Z\",\n           \"Status\": \"Open\",\n           \"IsMarketOpen\": true,\n           \"CorrelationKey\": \"4dab5814-8b84-421e-859b-dfdbdbec06ec\",\n           \"CloseConversionRateSettled\": false,\n           \"ClientId\": \"9226397\",\n           \"OpenPrice\": 1.13054,\n           \"RelatedOpenOrders\": [],\n           \"ValueDate\": \"2019-03-08T00:00:00.000000Z\",\n           \"SpotDate\": \"2019-03-08\",\n           \"AssetType\": \"FxSpot\"\n         },\n         \"PositionView\": {\n           \"Exposure\": -100000.0,\n           \"InstrumentPriceDayPercentChange\": -0.01,\n           \"ConversionRateCurrent\": 0.884455,\n           \"TradeCostsTotal\": -11.3,\n           \"ExposureInBaseCurrency\": -100000.0,\n           \"CurrentPriceType\": \"Ask\",\n           \"TradeCostsTotalInBaseCurrency\": -9.99,\n           \"ProfitLossOnTradeInBaseCurrency\": -17.69,\n           \"CurrentPriceDelayMinutes\": 0,\n           \"ConversionRateOpen\": 0.884455,\n           \"ProfitLossOnTrade\": -20.0,\n           \"ExposureCurrency\": \"EUR\",\n           \"CurrentPrice\": 1.13074,\n           \"CalculationReliability\": \"Ok\"\n         },\n         \"PositionId\": \"212702696\"\n       }\n     ]\n   }\n\n\nTop `saxo_openapi`_\n\nOr by using: contrib.orders\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe same orders but now using *MarketOrderFxSpot* to create the orderbodies.\n\n.. code-block:: python\n\n   from saxo_openapi import API\n   import saxo_openapi.endpoints.trading as tr\n   import saxo_openapi.endpoints.portfolio as pf\n   from saxo_openapi.contrib.orders import tie_account_to_order, MarketOrderFxSpot\n   from saxo_openapi.contrib.session import account_info\n   import json\n\n   # Place your token in a file named: token.txt\n   token = \"\"\n   with open(\"token.txt\") as I:\n       tok = I.read().strip()\n\n   # client to process the requests\n   client = API(access_token=token)\n   ai = account_info(client)\n\n   # Positions, probably none, but maybe you see positions\n   # that you created by the explorer\n   r = pf.positions.PositionsMe()\n   rv = client.request(r)\n   print(json.dumps(rv, indent=2))\n\n   # Place some market orders, only Amount and Uic needed\n   # the other body parameters will be generated by MarketOrderFxSpot\n   MO = [\n      {\n          \"Amount\": -100000,    # negative amount indicates a Sell\n          \"Uic\": 21   # EURUSD\n      },\n      {\n          \"Amount\": 80000,      # positive amount indicates a buy\n          \"Uic\": 23   # GBPCAD\n      }]\n\n   # create Order requests and process them\n   for spec in MO:\n       mospec = tie_account_to_order(ai.AccountKey, MarketOrderFxSpot(**spec))\n       r = tr.orders.Order(data=mospec)\n       client.request(r)\n\n   # check for positions again\n   r = pf.positions.PositionsMe()\n   rv = client.request(r)\n   print(json.dumps(rv, indent=2))\n\n\nTop `saxo_openapi`_\n\nCovered endpoints\n-----------------\n\nSAXO Bank organizes the endpoints in groups/subgroups, see:\n`https://www.developer.saxo/openapi/referencedocs`_\n\n\n.. _`https://www.developer.saxo/openapi/referencedocs`: https://www.developer.saxo/openapi/referencedocs\n\nStates:\n\n  + [ ] not covered yet\n  + [.] work in progress\n  + [x] covered\n\n ::\n\n   Account History\n     Account Values\n        AccountSummary          [x]\n     HistoricalPositions\n        HistoricalPositions     [x]\n     Performance\n        AccountPerformance      [x]\n\n   Auto Trading\n     Investments\n     Trade Followers\n     Trade Leaders\n\n   Chart\n     Charts                     [x]\n\n   Client Management\n     Signups v1\n     Signups v2\n     Users\n\n   Client Reporting\n     Historical Report Data - Account Statement\n     Historical Report Data - Portfolio Management\n     Historical Report Data - Trade Details\n     Historical Report Data - Trades Executed\n     Historical Report Data - Transaction\n     Historical Report Data - Transaction Balance\n\n   Client Services\n     Audit Activities\n     Audit OrderActivities\n     CashManagement - InterAcountTransfer\n     CashManagement - Wiretransfers\n     ClientInfo\n     Historical Report Data - Aggregated amounts\n     Historical Report Data - Bookings\n     Historical Report Data - Closed positions\n     Historical Report Data - Trades\n     Support - Cases\n\n   Event Notification Services\n     ClientActivities\n       create a subscription for client events   [x]\n       remove subscription                       [x]\n       remove subscriptions                      [x]\n       get activities for client/account         [x]\n\n   Partner Integration (Beta/Early Preview)\n     InteractiveIdVerification\n\n   Platform\n     Articles\n       Get a specific article from sitecore           [ ]\n       Get a list of articles from sitecore           [ ]\n     ConfigurationInvestor\n       Get the structure configuration for platform   [ ]\n       Get a specific page for not loading full site  [ ]\n     ConfigurationTrader\n       Get the structure configuration for platform   [ ]\n       Get a specific page for not loading full site  [ ]\n\n   Portfolio\n     AccountGroups\n       AccountGroupDetails      [x]\n       AccountGroupsMe          [x]\n       AccountGroupsList        [x]\n       AccountGroupUpdate       [x]\n\n     Accounts\n       AccountDetails           [x]\n       AccountList              [x]\n       AccountListByClient      [x]\n       AccountUpdate            [x]\n       Accountreset             [x]\n       SubscriptionCreate       [x]\n       SubscriptionRemoveByTag  [x]\n       SubscriptionRemoveById   [x]\n\n     Balances\n       AccountBalancesMe                 [x]\n       AccountBalances                   [x]\n       MarginOverview                    [x]\n       BalanceSubscriptionCreate         [x]\n       BalanceSubscriptionRemoveByTag    [x]\n       BalanceSubscriptionRemoveById     [x]\n\n     Clients\n       ClientDetailsMe                   [x]\n       ClientDetails                     [x]\n       ClientDetailsUpdate               [x]\n       ClientDetailsByOwner              [x]\n       ClientSwitchPosNettingMode        [x]\n\n     ClosedPositions\n       ClosedPositionList                     [x]\n       ClosedPositionById                     [x]\n       ClosedPositionDetails                  [x]\n       ClosedPositionsMe                      [x]\n       ClosedPositionSubscription             [x]\n       ClosedPositionSubscriptionUpdate       [x]\n       ClosedPositionSubscriptionsRemove      [x]\n       ClosedPositionSubscriptionRemoveById   [x]\n\n     Exposure\n       NetInstrumentsExposureMe                  [x]\n       NetInstrumentsExposure                    [x]\n       CreateExposureSubscription                [x]\n       RemoveExposureSubscriptionsByTag          [x]\n       RemoveExposureSubscription                [x]\n       CurrencyExposureMe                        [x]\n       CurrencyExposureSpecific                  [x]\n       FxSpotExposureMe                          [x]\n       FxSpotExposurSpecific                     [x]\n\n     NetPositions\n       Get a single netposition                                            [x]\n       Get detailed information for a single netposition                   [x]\n       Get netpositions for the logged-in client                           [x]\n       Get netpositions for a client, account group, account or a position [x]\n       Create a netsubscription on a list of positions and make it active  [x]\n       Remove multiple subscriptions                                       [x]\n       Remove a subscription                                               [x]\n\n     Orders\n       GetOpenOrder                               [x]\n       GetOpenOrdersMe                            [x]\n       OrderDetails                               [x]\n       GetAllOpenOrders                           [x]\n       CreateOpenOrdersSubscription               [x]\n       RemoveOpenOrderSubscriptionsByTag          [x]\n       RemoveOpenOrderSubscription                [x]\n\n     Positions\n       Get a single position                                            [x]\n       Get detailed information for a single position                   [x]\n       Get positions for the logged-in client                           [x]\n       Get positions for a client, account group, account or a position [x]\n       Create a subscription on a list of positions and make it active  [x]\n       Change the subscription page size                                [x]\n       Remove multiple subscriptions                                    [x]\n       Remove a subscription                                            [x]\n\n     Users\n       UsersMe                                    [x]\n       Users                                      [x]\n       UserDetails                                [x]\n       UserUpdate                                 [x]\n\n   Reference Data\n     AlgoStrategies\n       Get all strategies                         [x]\n       Get details about a specific strategy      [x]\n     Countries                                    [x]\n     Cultures                                     [x]\n     Currencies                                   [x]\n     Exchanges\n       Get all exchanges                          [x]\n       Get details about a specific exchange      [x]\n     Instruments\n       Instruments                                [x]\n       InstrumentsDetails                         [x]\n       InstrumentDetails                          [x]\n       ContractoptionSpaces                       [x]\n       FuturesSpaces                              [ ]\n       TradingSchedule                            [x]\n     Languages                                    [x]\n     StandardDates\n       Get a list of forward tenor dates          [x]\n       Get a list of FX option expiry dates       [x]\n     TimeZones                                    [x]\n\n   Root Services\n     Diagnostics\n       GET test endpoint      [x]\n       POST test endpoint     [x]\n       PUT test endpoint      [x]\n       DELETE test endpoint   [x]\n       PATCH test endpoint    [x]\n       HEAD test endpoint     [x]\n       OPTIONS test endpoint  [x]\n       ECHO test endpoint     [x]\n\n     Features\n       Get availability of all features           [x]\n       Create a feature availability subscription [x]\n       Remove a feature availability subscription [x]\n     Sessions\n       Get Session capabilities                  [x]\n       Change Session capabilities               [x]\n       Create Session capabilities subscr.       [x]\n       Remove Session capabilities subscr.       [x]\n     Subscriptions\n       Rmove multiple active subscr              [x]\n     User                                        [x]\n\n   Trading\n     AllocationKeys\n       Get a list of existing allocation keys    [x]\n       Get detailed inform. about an alloc. key  [x]\n       Create an allocation key                  [x]\n       Delete an allocation key                  [x]\n     InfoPrices\n       Get an info price for a specific instrum. [x]\n       Get info prices for a list of instruments [x]\n       Create info pr subscr. on list of instr.  [x]\n       Remove info pr subscr. on instruments     [x]\n       Remove info pr subscr on an instrument    [x]\n     Messages                                    [x]\n     OptionChain\n       Create options chain subscription         [x]\n       Modify options chain subscription         [x]\n       Remove options chain subscription         [x]\n       ResetATM options chain subscription       [x]\n     v1 Orders\n     v2 Orders\n       Place a new order                         [x]\n       Change one or more existing orders        [x]\n       Cancel one or more orders                 [x]\n       Precheck a single order                   [x]\n     Positions\n       Create pos by quote                       [x]\n       Update a position                         [x]\n       Exercise a position                       [x]\n       Exercise an amount                        [x]\n     Prices\n       CreatePriceSubscriptions                  [x]\n       RequestMarginImpact                       [x]\n       RemovePriceSubscriptionByTag              [x]\n       RemovePriceSubscription                   [x]\n\n   Value Add\n     PriceAlerts\n       Get all price alert definitions                   [x]\n       Get a specific price alert definition             [x]\n       Create a new price alert definition               [x]\n       Update an existing price alert def.               [x]\n       Delete price alert definitions                    [x]\n       Get the current users's notification settings     [x]\n       Modify the current users's notification settings  [x]\n\nTop `saxo_openapi`_\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhootnot%2Fsaxo_openapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhootnot%2Fsaxo_openapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhootnot%2Fsaxo_openapi/lists"}