Trade RFS
Goal
Execute a trade in the RFS workflow, from login and requesting the stream to downloading the done trade.
Prerequisites
- Your REST API app.
- Integral API login with trading permission.
- Your organization provisioned with at least one provider who streams RFS prices.
Steps
Step 1: Login
Use the Login and get token endpoint.
See the related Login tutorial.
Your access token is in SSO_TOKEN
of the response header. Your token is valid for limited time.
Pass the SSO_TOKEN
cookie value with all of your subsequent API requests.
- https://3ac93db9-6290-458d-9482-0dc0a0e9607a.remockly.com/v2/sso/login
- Payload
- JavaScript
{ "user": "apiUserId", "pass": "This is a long password!", "org": "apiOrganizationId" }
{ "status": "OK", "errorCode": null, "responseTuples": null, "expiryTime": 1665490480729, "serverUTCTime": 1665490420730 }
Step 2: Request quotes
Use the Request quote endpoint.
- https://3ac93db9-6290-458d-9482-0dc0a0e9607a.remockly.com/v2/rfs
- Payload
- JavaScript
{ "clOrderId": "view1MultiLP5", "symbol": "EUR/USD", "amount": 1000000, "dealtCurrency": "EUR", "expiry": 140, "nearValueDate": "1W", "farDealtAmount": 1000000, "farValueDate": "2W", "side": "TWO_WAY", "priceType": "FwdFwd", "customerAccount": "pfOrgLE", "customerOrg": "pfOrg", "providers": [ "ProvA", "ProvB", "ProvC" ] }
{ "clOrderId": "view1MultiLP5", "requestId": "G4796976d517b17818a0021e", "event": "REQUEST_RECEIVED" }
Step 3: Query request
You can query by two different IDs:
- The
clOrderId
assigned by you and sent with your request (the Query quote request (client ID) endpoint). - The
requestId
attribute of the JSON response in the next step (the Query quote request (server ID) endpoint).
You must query your quote request for its status and to get quotes. After the initial success/fail response, status updates and quotes are not pushed to you.
Request state
Your request can have any one of the following states:
REQUEST_RECEIVED
: request for quote is received for processing, quoting has not started.QUOTE
: a quote in response to your request for quote.REQUEST_DECLINED
: request declined.REQUEST_EXPIRED
: request expired and inactive.REQUEST_WITHDRAWN
: request was canceled by you.REQUEST_ACCEPTED
: request to trade a quote is accepted.TRADE_REJECTED
: request to trade a quote rejected by one or more liquidity providers.TRADE_PENDING
: trades pending in response to your request to trade a quote.TRADE_VERIFIED
: trades executed in response to your request to trade a quote.
Request states progress and relate to each other in the following ways:
Query by client ID
- https://3ac93db9-6290-458d-9482-0dc0a0e9607a.remockly.com/v2/rfs
- Payload
- JavaScript
No request payload
{ "clOrderId": "rjv_566", "requestId": "G4796976d5_228bd_19587256c877", "transactionId": "FXI9445344076", "ttl": 7200, "event": "QUOTE", "quotes": [ { … } ] }
Query by server ID
- https://3ac93db9-6290-458d-9482-0dc0a0e9607a.remockly.com/v2/rfs/{requestId}
- Payload
- JavaScript
No request payload
{ "clOrderId": "rjv_566", "requestId": "G4796976d5_228bd_19587256c877", "transactionId": "FXI9445344076", "ttl": 7200, "event": "QUOTE", "quotes": [ { … } ] }
Step 4: Accept quote
Use the Accept quote endpoint.
The diagram shows the values returned in the status
field in the response.
- https://3ac93db9-6290-458d-9482-0dc0a0e9607a.remockly.com/v2/rfs/{requestId}
- Payload
- JavaScript
{ "quoteId": "G-4796976cf-17b1781b062", "side": "BUY", "symbol": "GBP/USD", "dealtCurrency": "USD", "clOrderId": "view1MultiLP5" }
Step 5: Query quote request for trades
You must query your original quote request to get the done trades. After a success response from your accept quote, status updates and trades are not pushed to you.
You must query your original quote request to get the done trades.
The event
attribute value TRADE_VERIFIED
on the response indicates that trades were done by your request to trade a quote. The trades
array on the response contains the done trades.
You can query by two different IDs:
- The
clOrderId
assigned by you and sent with your request (the Query quote request (client ID) endpoint). - The
requestId
attribute of the JSON response in the next step (the Query quote request (server ID) endpoint).
Query by client ID
- https://3ac93db9-6290-458d-9482-0dc0a0e9607a.remockly.com/v2/rfs
- Payload
- JavaScript
No request payload
{ "clOrderId": "rjv_566", "requestId": "G4796976d5_228bd_19587256c877", "transactionId": "FXI9445344076", "ttl": 7200, "event": "QUOTE", "quotes": [ { … } ] }
Query by server ID
- https://3ac93db9-6290-458d-9482-0dc0a0e9607a.remockly.com/v2/rfs/{requestId}
- Payload
- JavaScript
No request payload
{ "clOrderId": "rjv_566", "requestId": "G4796976d5_228bd_19587256c877", "transactionId": "FXI9445344076", "ttl": 7200, "event": "QUOTE", "quotes": [ { … } ] }