API changes: Subscription call bug fix for req_id argument
Dear developers,
As per current API behaviour applicable for the following subscription calls:
ticks
ticks_history
exchange_rates
If a request is made with different req_id, API considers those as separate subscriptions requests and provides multiple subscription responses for the same symbol or same asset requested.
For example, currently, subscribes to tick with different req_id with same symbol, for example,
{ "ticks": "R_50", "subscribe": 1, "req_id": 1 }
{ "ticks": "R_50", "subscribe": 1, "req_id": 2 }
will lead to two separate subscriptions
{ "echo_req": { "req_id": 1, "subscribe": 1, "ticks": "R_50" }, "msg_type": "tick", "req_id": 1, "subscription": { "id": "f0499013-9edd-3b7b-88b2-27b21e2be755" }, "tick": { "ask": 191.5129, "bid": 191.4929, "epoch": 1698231168, "id": "f0499013-9edd-3b7b-88b2-27b21e2be755", "pip_size": 4, "quote": 191.5029, "symbol": "R_50" } }
{ "echo_req": { "req_id": 2, "subscribe": 1, "ticks": "R_50" }, "msg_type": "tick", "req_id": 2, "subscription": { "id": "34ccc31a-27d7-3c08-9158-6d0778f66ddd" }, "tick": { "ask": 191.5568, "bid": 191.5368, "epoch": 1698231170, "id": "34ccc31a-27d7-3c08-9158-6d0778f66ddd", "pip_size": 4, "quote": 191.5468, "symbol": "R_50" } }
when you send forget_all call to forget all the subscriptions
{ "forget_all": "ticks" }
you will notice that two subscriptions were active
{ "echo_req": { "forget_all": "ticks" }, "forget_all": [ "34ccc31a-27d7-3c08-9158-6d0778f66ddd", "f0499013-9edd-3b7b-88b2-27b21e2be755" ], "msg_type": "forget_all" }
We are fixing this bug of removing req_id consideration for subscription, and going forward the second request for the same symbol with different req_id
{ "ticks": "R_50", "subscribe": 1, "req_id": 2 }
will result in the following error
{ "echo_req": { "req_id": 2, "subscribe": 1, "ticks": "R_50" }, "error": { "code": "AlreadySubscribed", "message": "You are already subscribed to R_50" }, "msg_type": "tick", "req_id": 2 }
But request for subscription with different symbol, for example:
{ "ticks": "R_100", "subscribe": 1, "req_id": 2 }
will work normally
{ "echo_req": { "req_id": 2, "subscribe": 1, "ticks": "R_100" }, "msg_type": "tick", "req_id": 2, "subscription": { "id": "1c653e0b-61f8-00ba-fbee-b3b46ac01cb1" }, "tick": { "ask": 1442.01, "bid": 1441.61, "epoch": 1698231336, "id": "1c653e0b-61f8-00ba-fbee-b3b46ac01cb1", "pip_size": 2, "quote": 1441.81, "symbol": "R_100" } }
This change applies to the following API calls:
ticks
ticks_history
exchange rates
Please make the necessary changes to your app(s) by week starting December 4, 2023.
If you have any questions, write to us at api-support@deriv.com.