We are currently implementing the page subscription using WebSocketAPI.
We managed to handle the first response of the page subscription, we now we are blocked with the encrypted page updates.
We wonder what is the best solution for us :
- build our own decoder parser (we would like to implement this one in order to not depend on a third party library).
- reuse a Refinitiv library : (com.reuters.rfa) or (com.thomsonreuters.upa)
Our questions are the below :
- for the first solution : will we be notified if the page encryption is changed ?
- for the second solution : can we use the API ? Will it be maintained ? Will we be also notified once there are some updates on this API?
Thank you for the example. These are “positioned updates”. They are used in records like this one containing unstructured text to avoid sending the entire text field for small updates. You said you’d prefer to parse these yourself so here is the encoding in JSON:
is that literal sequence. You use that to detect this encoding.
is a decimal number, one or more digits, representing the starting character within the field for the update, 0 being the leftmost position.
is the backquote character followed by the text to replace the old value.
Example: Using your example above, in ROW80_1 the update says to put "19:11 25NOV20" at position 0. So after the update ROW80_1 will be
"19:11 25NOV20 TULLETT PREBON (AUSTRALIA) PTY LTD AU28812 ASWAP"
The pattern may be repeated in the same update, as you can see in your example in Row 12 where the update replaces a single character at both positions 34 and 43 each with an "8".
Actually, we send the following request :
Then we retrieve a first update that we are able to integrate :
"Text": "All is well"
"ROW80_1": "20:31 03DEC20 TULLETT PREBON (AUSTRALIA) PTY LTD AU28812 ASWAP",
"ROW80_2": " ",
"ROW80_3": " AUD SWAPS ",
"ROW80_4": " ",
"ROW80_5": "MAT BASIS SPREADS YIELDS BASIS SWAPS OIS INDICATIONS ",
"ROW80_6": " OFFER BID OFFER BID BILLS/LIBOR OFFER BID ",
But for the next updates we have :
"ROW80_1": "\u001b[0`19:11 25NOV20 "
and we are looking for the best way to decode them.
Thank you very much for the update. That is very clear.
Is there other sequence than this one \u001b[ ?
Is there a documentation about this ?
However, in the case where we decide to implement this, how can we be sure that this is something which will not change on your side ?
Basically, we do not want that one day there are some production issues on client side where they are not able anymore to retrieve page updates because of an encoding changes on Refinitiv side.
The page you're consuming, ASWAP is in a format created a long time ago and it is still available mainly for older applications that are already coded to use it. All the data on this page is available in more developer-friendly formats where the components will appear in appropriately tagged fields in data structures, eg JSON in your case so you don't have to parse anything. I'll answer your question directly in another answer but I encourage you to use equivalent structured data rather than parsing.
Instead of using ASWAP, please look at the following symbols for the equivalent data. All this information was gleaned from the Tullet Prebon Australia index that you can find on symbol TTKA/INDEX.
The "Index Chain" symbols noted below provide a list of all the component symbols for each class of instruments, in case you want to build a complete list without knowing in advance what's in it.
A final note: please ensure your agreement with Refinitiv and Tullett is suitable for what you are building. There are different licenses required for using this data for direct display vs using it for other processing.
Example AUDQB3BF2Y=TTKA Sub 2Y for 3-10,12,15,20,25,30Y Index chain on AUDIRS=TTKA
QM3AB IRS example AUDQM3AB3M=TTKA Sub 3M for 6M, 9M, 1Y, 15M, 18M, 21M, 2Y, 3Y Index chain on AUDQM3BIRS=TTKA SM6ABIRS example AUDSM6AB4Y=TTKA Sub 4Y for 5-10,12,15,20,25,30Y Index chain on AUDSM6BIRS=TTKA
Example AUD3AB3L3M=TTKA Sub 3M for 6M, 9M, 1-5Y, 7Y, 10,12,15,20,25,30Y Index chain on AUDCBS=TTKA
Example AUD1WOIS=TTKA Sub 1W for 1M-11M, 1Y, 18M, 2Y, 3Y Index chain on AUDOIS=TTKA
Answering the above questions: What other codes are there? Will this change? Is there documentation?
The encoding used on text pages like ASWAP hasn't changed in at least 15 years. Neither has the documentation I'm afraid. Since the encoding appears slightly differently in JSON than in earlier APIs the documentation needs some translation. We keep publishing data this way in order not to break legacy applications but urge you not to write new apps using it but to use symbols with structured data instead.
Other codes? Aside from the positional update code described above there is one other encoding that is documented, although it does not appear to be used on this page (ASWAP) so you won't be able to test it. The code is "character repetition"
c is a character to display repeatedly \u001B[ is that literal sequence n is a decimal number b is literally a “b"
might be encoded as. “LEFT \u001B[71bRIGHT”. ie LEFT, 71 spaces, RIGHT.