For a deeper look into our Elektron API, look into:

Overview |  Quickstart |  Documentation |  Downloads |  Tutorials |  Articles

question

Upvotes
Accepted
7 3 1 2

How to handle page updates decryption using WebSocketAPI ?

Hello,

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?


Regards,

treprdp-apiwebsocketsrrtopageencryptionparser
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

@guillaume.chatel Are you referring to decoding partial row updates on 80x25 unstructured text pages? Please clarify what you mean by encrypted updates and also provide a sample RIC using them.

Upvotes
Accepted
476 6 15 18

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:

\u001b[n`text

where

\u001b[

is that literal sequence. You use that to detect this encoding.

n

is a decimal number, one or more digits, representing the starting character within the field for the update, 0 being the leftmost position.

`text

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".

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
7 3 1 2

Hello
Actually, we send the following request :

{

"Type":"Request",

"Qos":

{

"Dynamic":true,

"Rate":"JitConflated",

"Timeliness":"Realtime"

},

"WorstQos":

{

"Dynamic":true,

"Rate":"JitConflated",

"Timeliness":"Realtime"

},

"ID":3,

"Domain":"MarketPrice",

"Key":

{

"Service":"IDN_RDF","Name":"ASWAP"

}

}


Then we retrieve a first update that we are able to integrate :


{

"ID": 3,

"Type": "Refresh",

"Key": {

"Service": 257,

"Name": "ASWAP"

},

"State": {

"Stream": "Open",

"Data": "Ok",

"Text": "All is well"

},

"Qos": {

"Timeliness": "Realtime",

"Rate": "JitConflated"

},

"PermData": "AwEBkDw=",

"SeqNumber": 32,

"Fields": {

"PROD_PERM": 903,

"RDNDISPLAY": 151,

"RECORDTYPE": 249,

"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 ",


Etc ...

But for the next updates we have :

RECEIVED:

[

{

"ID": 3,

"Type": "Update",

"UpdateType": "Unspecified",

"DoNotConflate": true,

"Key": {

"Service": "IDN_RDF",

"Name": "ASWAP"

},

"SeqNumber": 47310,

"Fields": {

"ROW80_12": "\u001b[34`8\u001b[43`8",

"ROW80_13": "\u001b[34`6",

"ROW80_14": "\u001b[33`91",

"ROW80_15": "\u001b[33`71",

"ROW80_16": "\u001b[33`22",

"ROW80_17": "\u001b[34`7",

"ROW80_1": "\u001b[0`19:11 25NOV20 "

}

}

]

and we are looking for the best way to decode them.

Regards,

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
7 3 1 2

Hello,

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.

Regards,
Henri

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

@guillaume.chatel sorry for the delay, trying to find out if there are alternative symbols for you to access this data by API without having to parse anything. Not sure if there are but will let you know, and answer your questions. Thanks.

guillaume.chatel avatar image guillaume.chatel Jonathan Haruni - Refinitiv

Hi Jonathan,

Actually, we do not want to use a third party API to parse these updates, (as said in the first statement).
The idea is more to build something on our side where we will be able to decrypt all the page updates.

And also to be warned when a change is coming for the update messages, in order to adapt our parser before the changes comes into production.
Regards,

Upvotes
476 6 15 18

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.

Spreads

Example AUDQB3BF2Y=TTKA
Sub 2Y for 3-10,12,15,20,25,30Y
Index chain on AUDIRS=TTKA

Yields

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 

Basis Swaps

Example AUD3AB3L3M=TTKA
Sub 3M for 6M, 9M, 1-5Y, 7Y, 10,12,15,20,25,30Y
Index chain on AUDCBS=TTKA

OIS Indications

Example AUD1WOIS=TTKA
Sub 1W for 1M-11M, 1Y, 18M, 2Y, 3Y
Index chain on AUDOIS=TTKA


icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
476 6 15 18

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\u001B[nb where

c is a character to display repeatedly
\u001B[ is that literal sequence
n is a decimal number
b is literally a “b"

For example

“LEFT                                                            RIGHT”

might be encoded as. “LEFT \u001B[71bRIGHT”. ie LEFT, 71 spaces, RIGHT.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.