How to contribute data to RIC on ATS using C#?
Hi,
I'm new to RTSDK and I want to contribute market data to RIC defined in ATS using C#. Should I use EMA, ETA or WebSocket API? Could you explain me step by step how to contribute market data to RICs defined in ATS?
Best regards.
Best Answer
-
According to the stream ID#5, you are using the on-stream posting to contribute data.
This means the application can establish the stream ID#5 for CTBTST= so the user have permission to subscribe to this item. Then, the application got the NAK when contributing data.
AckMsg
streamId="5"
domain="MarketPrice Domain"
ackId="1"
nackCode="AccessDenied"
text="Access Denied: User req to DTS for Specialist e.g. - xxxxx"
name="CTBTST="
serviceId="258"
serviceName="DTS"
Payload dataType="NoData"
NoData
NoDataEnd
PayloadEnd
AckMsgEndThis error may indicate that the user may not have permission to contribute data. This message is typically from DACS. First, please contact the helpdesk via MyRefinitiv to verify DACS permission settings.
To check the DACS lock, the buffer of that lock should contain these bytes.
03 01 02 30 00 C0
0
Answers
-
Hello @wojciech.kowalik
Thank you for reaching out to us.
The easiest API is the EMA API. The reason is EMA is the ease-of-use API that manage a connection and subscription for you. While the ETA and WebSocket are considered "low-level API" that you need to manage everything by yourself.
About contribution data to ATS, the EMA API can do it via the OMM Post message with the following connection scenarios:
- Direct connection: EMA API --> ATS
- Via RTDS: EMA API --> RTDS --> ATS
There is the EMA API contribution to ATS resources as follows:
- Implementing Refinitiv Real-Time API applications to work with ATS - Part 1
- Implementing Refinitiv Real-Time API applications to work with ATS - Part 2
The code example in the articles above are EMA Java and EMA C++, but the API interfaces are almost identical to the EMA C#.
About the EMA C# API, the API resources and generic Posting examples are as follows:
- EMA C# Tutorials
- EMA C#: Cons340 (340_MP_OnStreamPost) in the RTSDK C# package
- EMA C#: Cons341 (341_MP_OffStreamPost) in the RTSDK C# package <-- the recommend one.
You can apply the logic of Cons341 example with the logic from the ATS articles above.
I hope this information helps.
1 -
Hello @wasin.w
I'm trying to build a solution based on EMA C#: Cons340 and EMA C#: Cons341 examples. I have connection to ATS I can "read" RICs but I stuck with the posting message. I have an error:
"A29: Post message did not contain permission data.".
I know I have to pass permission data to post message but I don't know how to do that. The permission method argument is EmaBuffer and I didn' find any C# examples how to create one and pass as permission data. Could you help me with that?
Thanks.
0 -
Finally I created EnumBuffer using RFA AuthorizationLock, bot now I have a new type of error Below I attach my AuthLock code:
int serviceId = 258;
int peOperator = AuthorizationLock.OperatorEnum.OR;
List<uint> peList = new List<uint>();
peList.Add(3000);
AuthorizationLock authLock = new AuthorizationLock(serviceId, peOperator, peList);
AuthorizationLockData lockData = new AuthorizationLockData();
AuthorizationLockStatus retStatus = new AuthorizationLockStatus();
AuthorizationLockData.LockResultEnum result = authLock.GetLock(lockData, retStatus);
if (result != AuthorizationLockData.LockResultEnum.LOCK_SUCCESS)
{
authLock.Dispose();
}
byte[] c_LockData = lockData.LockData;
int c_LockDataSize = lockData.Size;
var buffer = new EmaBuffer(c_LockData, 0, c_LockDataSize);And the AckMessage:
AckMsg
streamId="5"
domain="MarketPrice Domain"
ackId="1"
nackCode="AccessDenied"
text="Access Denied: User req to DTS for Specialist e.g. - xxxxx"
name="CTBTST="
serviceId="258"
serviceName="DTS"
Payload dataType="NoData"
NoData
NoDataEnd
PayloadEnd
AckMsgEndI've checked permissions to the specified RIC with admin team in my company and it looks I have permission to that RIC. Any ideas?
0 -
@kowalikw
This error is from DACS. Please contact the helpdesk support team via MyRefinitiv to verify the permission setttings.
1 -
I checked permissions with admins and everything looks ok. I suspect that the PROD PERM field is missing, I am not sure how should I set this field correctly? Do you have any examples using C#? Or can you give me another tips to move on?
0 -
Finally we found a solution with our admin team - they needed to extend permission on cascade and add perrmission to contribution. Now I can contribute data to specified RIC but with ACK message I receive status: "Contribution Partially Accepted". I wonder how can I find out a reason of "partially" not "fully" acceptance.
AckMsg
streamId="1"
domain="MarketPrice Domain"
ackId="1"
text="[2]: Contribution Partially Accepted"
name="GTRWIBIDON="
nameType="1"
serviceId="258"
Payload dataType="NoData"
NoData
NoDataEnd
PayloadEnd
AckMsgEnd0 -
@kowalikw
As far as I know, some fields aren't accepted by ATS.
0
Categories
- All Categories
- 6 AHS
- 37 Alpha
- 161 App Studio
- 4 Block Chain
- 4 Bot Platform
- 16 Connected Risk APIs
- 47 Data Fusion
- 30 Data Model Discovery
- 608 Datastream
- 1.3K DSS
- 577 Eikon COM
- 4.9K Eikon Data APIs
- 7 Electronic Trading
- Generic FIX
- 7 Local Bank Node API
- Trading API
- 2.7K Elektron
- 1.3K EMA
- 236 ETA
- 519 WebSocket API
- 33 FX Venues
- 10 FX Market Data
- 1 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 20 Messenger Bot
- 2 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 59 Open Calais
- 264 Open PermID
- 39 Entity Search
- 2 Org ID
- PAM
- PAM - Logging
- 8.4K Private Comments
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 20 RDMS
- 1.4K Refinitiv Data Platform
- 367 Refinitiv Data Platform Libraries
- 3 Refinitiv Due Diligence
- LSEG Due Diligence Portal API
- 3 Refinitiv Due Dilligence Centre
- Rose's Space
- 1.1K Screening
- 18 Qual-ID API
- 13 Screening Deployed
- 23 Screening Online
- 10 World-Check Customer Risk Screener
- 990 World-Check One
- 44 World-Check One Zero Footprint
- 45 Side by Side Integration API
- Test Space
- 3 Thomson One Smart
- 1.2K TR Internal
- Global Hackathon 2015
- 2 Specialists Who Code
- 10 TR Knowledge Graph
- 150 Transactions
- 142 REDI API
- 1.7K TREP APIs
- 4 CAT
- 21 DACS Station
- 117 Open DACS
- 1.1K RFA
- 103 UPA
- 172 TREP Infrastructure
- 224 TRKD
- 886 TRTH
- 5 Velocity Analytics
- 5 Wealth Management Web Services
- 59 Workspace SDK
- 9 Element Framework
- 5 Grid
- 13 World-Check Data File
- Yield Book Analytics
- 46 中文论坛