openapi: 3.2.0
info:
title: Citi Fxgateway API
version: ''
description: 'Operations tagged Fxgateway across 13 of this provider''s published API definitions: fx_benchmark_async_api.yaml, fx_benchmark_sync_api.yaml, fx_cancel_async_api.yaml, fx_cancel_sync_api.yaml, fx_eCommerce_api.yaml, fx_gateway_reporting_async_api.yaml, fx_gateway_reporting_sync_api.yaml, fx_market_async_api.yaml, fx_market_sync_api.yaml, fx_orders_async_api.yaml, fx_orders_sync_api.yaml, fx_quote_async_api.yaml, fx_quote_sync_api.yaml.'
servers:
- url: https://sandbox.api.citivelocity.com/markets
description: sandbox URL
- url: https://api.citivelocity.com/markets
description: production gateway URL
- url: https://icg.api.citigroup.net/markets/internal
tags:
- name: Fxgateway
paths:
/fxgateway/async/benchmarkorder/api/v1:
post:
summary: Benchmark Order Asynchronous Request
description: Use this endpoint to initiate a new spot, forward, or swap fixing order request.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/FXBenchmarkOrder'
required: true
responses:
'200':
description: "OK Acknowledged.\n\nNote: The response message will be sent via web socket. Please see the User Guide for more information on using the web socket connection. \n"
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/Order_Acknowledged_Or_Rejected'
- $ref: '#/components/schemas/Order_Accepted'
- $ref: '#/components/schemas/Order_Rated'
'401':
description: Unauthorized user / Invalid_client (Not authorized to Oauth API) / Not registered to the plan
'429':
description: Too Many Requests
'500':
description: Internal Server Error
tags:
- Fxgateway
security:
- OAuth2:
- fxapi
- client_id: []
operationId: postFxgatewayAsyncBenchmarkorderApiV1
x-operation-id-source: derived
servers:
- url: https://sandbox.api.citivelocity.com/markets
description: sandbox URL
- url: https://api.citivelocity.com/markets
description: production gateway URL
/fxgateway/sync/benchmarkorder/api/v1:
post:
summary: Benchmark Order Synchronous Request
description: Use this endpoint to initiate a new spot, forward, or swap fixing order request.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/FXBenchMarkOrder'
required: true
responses:
'200':
description: "OK Acknowledged. \n"
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/Order_Acknowledged_Or_Rejected_2'
- $ref: '#/components/schemas/Order_Accepted_2'
- $ref: '#/components/schemas/Order_Rated_2'
'401':
description: Unauthorized user/ Invalid_client (Not authorized to Oauth API)/ Not registered to the plan
'429':
description: Too Many Requests
'500':
description: Internal Server Error
tags:
- Fxgateway
security:
- OAuth2:
- fxapi
- client_id: []
operationId: postFxgatewaySyncBenchmarkorderApiV1
x-operation-id-source: derived
servers:
- url: https://sandbox.api.citivelocity.com/markets
description: sandbox URL
- url: https://api.citivelocity.com/markets
description: production URL
/fxgateway/async/ordercancel/api/v1:
post:
summary: Order Cancellation Asynchronous Request
description: 'Use this endpoint to cancel an order you have placed.
Note:
- FX Benchmark QUOTED orders cannot be cancelled through this cancel request
- FX Benchmark FIXING orders cannot be cancelled once they are rated
- FX Market orders cannot be cancelled once they are rated'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/FXOrderCancel'
required: true
responses:
'200':
description: "OK Acknowledged.\nNote: Order response message will be sent via web socket. \n"
content:
application/json:
schema:
$ref: '#/components/schemas/Order_Cancel_Response'
'401':
description: Unauthorized user/ Invalid_client (Not authorized to Oauth API)/ Not registered to the plan
'429':
description: Too Many Requests
'500':
description: Internal Server Error
tags:
- Fxgateway
security:
- OAuth2:
- fxapi
- client_id: []
operationId: postFxgatewayAsyncOrdercancelApiV1
x-operation-id-source: derived
servers:
- url: https://sandbox.api.citivelocity.com/markets
description: sandbox URL
- url: https://api.citivelocity.com/markets
description: production URL
/fxgateway/sync/ordercancel/api/v1:
post:
summary: Order Cancellation Synchronous Request
description: 'Use this endpoint to cancel an order you have placed.
Note:
- FX Bench QUOTED orders cannot be cancelled through this cancel request
- FX Bench FIXING orders cannot be cancelled once they are rated
- FX Market orders cannot be cancelled once they are rated'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/FXOrderCancel_2'
required: true
responses:
'200':
description: 'OK Acknowledged.
'
content:
application/json:
schema:
$ref: '#/components/schemas/Order_Cancel_Response_2'
'401':
description: Unauthorized user/ Invalid_client (Not authorized to Oauth API)/ Not registered to the plan
'429':
description: Too Many Requests
'500':
description: Internal Server Error
tags:
- Fxgateway
security:
- OAuth2:
- fxapi
- client_id: []
operationId: postFxgatewaySyncOrdercancelApiV1
x-operation-id-source: derived
servers:
- url: https://sandbox.api.citivelocity.com/markets
description: sandbox URL
- url: https://api.citivelocity.com/markets
description: production URL
/fxgateway/api/v1:
post:
summary: Submit Standard Orders
responses:
'200':
description: 200 OK
'400':
description: Bad Request
'401':
description: Invalid Address
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/FX%20trade%20request'
description: FX trade request
tags:
- Fxgateway
security:
- client_id: []
client_credential:
- /fxapi
operationId: postFxgatewayApiV1
x-operation-id-source: derived
servers:
- url: https://icg.api.citigroup.net/markets/internal
/fxgateway/async/orderreport/api/v1:
post:
summary: Order Enquiry Asynchronous Request
description: Use this endpoint to know the current status of a deal.
requestBody:
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/FxOrderEnquiry'
- $ref: '#/components/schemas/FxOrderCustomEnquiry'
required: true
responses:
'200':
description: "OK Acknowledged.\nNote: Enquiry response message to be consumed via web socket. \n"
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/FXMarketOrder_Accepted_Or_Rejected'
- $ref: '#/components/schemas/FXMarketOrder_Rated'
- $ref: '#/components/schemas/FXBenchMarkOrder_Acknowledged_Or_Rejected'
- $ref: '#/components/schemas/FXBenchMarkOrder_Accepted'
- $ref: '#/components/schemas/FXBenchMarkOrder_Rated'
- $ref: '#/components/schemas/FXCustomEnquiry_Response'
- $ref: '#/components/schemas/FXCustomEnquiry_Response_ForAll'
'401':
description: Unauthorized user/ Invalid_client (Not authorized to Oauth API)/ Not registered to the plan
'429':
description: Too Many Requests
'500':
description: Internal Server Error
tags:
- Fxgateway
security:
- OAuth2:
- fxapi
- client_id: []
operationId: postFxgatewayAsyncOrderreportApiV1
x-operation-id-source: derived
servers:
- url: https://sandbox.api.citivelocity.com/markets
description: sandbox URL
- url: https://api.citivelocity.com/markets
description: production URL
/fxgateway/sync/orderreport/api/v1:
post:
summary: Order Enquiry Synchronous Request
description: Use this endpoint to know the current status of a deal.
requestBody:
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/FxOrderEnquiry_2'
- $ref: '#/components/schemas/FxOrderCustomEnquiry_2'
required: true
responses:
'200':
description: "OK Acknowledged. \n"
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/FXMarketOrder_Accepted_Or_Rejected_2'
- $ref: '#/components/schemas/FXMarketOrder_Rated_2'
- $ref: '#/components/schemas/FXBenchMarkOrder_Acknowledged_Or_Rejected_2'
- $ref: '#/components/schemas/FXBenchMarkOrder_Accepted_2'
- $ref: '#/components/schemas/FXBenchMarkOrder_Rated_2'
- $ref: '#/components/schemas/FXCustomEnquiry_Response_2'
- $ref: '#/components/schemas/FXCustomEnquiry_Response_ForAll_2'
'401':
description: Unauthorized user/ Invalid_client (Not authorized to Oauth API)/ Not registered to the plan
'429':
description: Too Many Requests
'500':
description: Internal Server Error
tags:
- Fxgateway
security:
- OAuth2:
- fxapi
- client_id: []
operationId: postFxgatewaySyncOrderreportApiV1
x-operation-id-source: derived
servers:
- url: https://sandbox.api.citivelocity.com/markets
description: sandbox URL
- url: https://api.citivelocity.com/markets
description: production URL
/fxgateway/async/marketorder/api/v1:
post:
summary: Market Order Asynchronous Request
description: Use this endpoint to initiate a spot or forward market order request.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/FXMarketOrder'
required: true
responses:
'200':
description: "OK Acknowledged.\n\nNote: The response message will be sent via web socket. Please see the User Guide for more information on using the web socket connection. \n"
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/Order_Accepted_Or_Rejected'
- $ref: '#/components/schemas/Order_Rated_3'
'401':
description: Unauthorized user/ Invalid_client (Not authorized to Oauth API)/ Not registered to the plan
'429':
description: Too Many Requests
'500':
description: Internal Server Error
tags:
- Fxgateway
security:
- OAuth2:
- fxapi
- client_id: []
operationId: postFxgatewayAsyncMarketorderApiV1
x-operation-id-source: derived
servers:
- url: https://sandbox.api.citivelocity.com/markets
description: sandbox URL
- url: https://api.citivelocity.com/markets
description: production gateway URL
/fxgateway/sync/marketorder/api/v1:
post:
summary: Market Order Synchronous Request
description: Use this endpoint to initiate a spot or foreward market order request.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/FXMarketOrder_2'
required: true
responses:
'200':
description: "OK Acknowledged. \n"
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/Order_Accepted_Or_Rejected_2'
- $ref: '#/components/schemas/Order_Rated_4'
'401':
description: Unauthorized user/ Invalid_client (Not authorized to Oauth API)/ Not registered to the plan
'403':
description: Access Forbidden error
'429':
description: Too Many Requests
'500':
description: Internal Server Error
tags:
- Fxgateway
security:
- OAuth2:
- fxapi
- client_id: []
operationId: postFxgatewaySyncMarketorderApiV1
x-operation-id-source: derived
servers:
- url: https://sandbox.api.citivelocity.com/markets
description: sandbox URL
- url: https://api.citivelocity.com/markets
description: production URL
/fxgateway/async/instantfxorder/api/v1:
post:
parameters:
- name: client_id
in: query
description: Your unique identifier shared during your API onboarding. It is the same client_id used for oauth token generation.
required: true
schema:
type: string
summary: Order request
description: Use this endpoint to request a rate for standard, drawdowns, pre-orders (intent to pay), forecast, and refund orders. Both individual and multi-order requests are accepted.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/FXTradeRequest'
required: true
responses:
'200':
description: 'OK Acknowledged.
Note: The orders response message will be sent via web socket. Please see the User Guide tab for more information on using the web socket connection.'
content:
application/json:
schema:
$ref: '#/components/schemas/ExecutionReport'
'401':
description: Unauthorized user error
'403':
description: Access Forbidden error
'500':
description: Internal Server Error
x-codeSamples:
- lang: cURL
label: cURL
source: 'curl --request POST \
--url ''https://api.citivelocity.com/markets/fxgateway/async/instantfxorder/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2'' \
--header ''accept: application/json'' \
--header ''authorization: Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEy9q61Vj0ly6PHyTj84qbE5UaKGxf3fdz2ARY15Kszu-zf_SWLloRClpkg6aBQxG9I608HzrBB7FSV3DVJcyrpjsGtJx0rOfNEO_Sn708nqxQsBuPzn03YZ2OHi5Q0jLpLpvE-s5XoaAf74nLYKLHtnQ'' \
--header ''content-type: application/json'' \
--data ''{ "action": "order-request", "senderCompId": "IFXCLIENT0", "onBehalfOfCompId": "IFXCLIENT0", "jsonReqId": "brs-25-09-2018-03", "sendingTime": "20180927-12:12:56.807", "deals": [ { "clOrdId": "st85589-27-09-2018-req4", "account": "XXXXXXXXXXX", "ccyPair": "EURUSD", "tenor": "SP", "valueDate": "", "dealtCcy": "EUR", "side": "B", "orderQty": "100","rateSetId": "142310", "ordType": "STANDARD" } ] }'''
- lang: python
label: Python
source: "import http.client \n\n#If a proxy is used, set the tunnel as per below:\n#conn=http.client.HTTPSConnection(\"your_proxy_host\",your_proxy_port)\n#conn.set_tunnel(\"api.citivelocity.com\",443)\nconn = http.client.HTTPSConnection(\"api.citivelocity.com\") \npayload = \"{ \\\"action\\\": \\\"order-request\\\", \\\"senderCompId\\\": \\\"IFXCLIENT0\\\", \\\"onBehalfOfCompId\\\": \\\"IFXCLIENT0\\\", \\\"jsonReqId\\\": \\\"brs-25-09-2018-03\\\", \\\"sendingTime\\\": \\\"20180927-12:12:56.807\\\", \\\"deals\\\": [ { \\\"clOrdId\\\": \\\"st85589-27-09-2018-req4\\\", \\\"account\\\": \\\"XXXXXXXXXXX\\\", \\\"ccyPair\\\": \\\"EURUSD\\\", \\\"tenor\\\": \\\"SP\\\", \\\"valueDate\\\": \\\"\\\", \\\"dealtCcy\\\": \\\"EUR\\\", \\\"side\\\": \\\"B\\\", \\\"orderQty\\\": \\\"100\\\",\\\"rateSetId\\\": \\\"142310\\\", \\\"ordType\\\": \\\"STANDARD\\\" } ] }\" \nheaders = { \n'content-type': \"application/json\", \n'accept': \"application/json\", \n'authorization': \"Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEy9q61Vj0ly6PHyTj84qbE5UaKGxf3fdz2ARY15Kszu-zf_SWLloRClpkg6aBQxG9I608HzrBB7FSV3DVJcyrpjsGtJx0rOfNEO_Sn708nqxQsBuPzn03YZ2OHi5Q0jLpLpvE-s5XoaAf74nLYKLHtnQ\" \n} \nconn.request(\"POST\", \"/markets/fxgateway/async/instantfxorder/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2\", payload, headers) \nres = conn.getresponse() \ndata = res.read() \nprint(data.decode(\"utf-8\"))"
- lang: PHP
label: PHP
source: " \"https://api.citivelocity.com/markets/fxgateway/async/instantfxorder/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2 \", \nCURLOPT_RETURNTRANSFER => true, \nCURLOPT_ENCODING => \" \", CURLOPT_MAXREDIRS => 10, \nCURLOPT_TIMEOUT => 30, \nCURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, \nCURLOPT_CUSTOMREQUEST => \"POST\", \nCURLOPT_POSTFIELDS => \"{ \\\"action\\\": \\\"order-request\\\", \\\"senderCompId\\\": \\\"IFXCLIENT0\\\", \\\"onBehalfOfCompId\\\": \\\"IFXCLIENT0\\\", \\\"jsonReqId\\\": \\\"brs-25-09-2018-03\\\", \\\"sendingTime\\\": \\\"20180927-12:12:56.807\\\", \\\"deals\\\": [ { \\\"clOrdId\\\": \\\"st85589-27-09-2018-req4\\\", \\\"account\\\": \\\"XXXXXXXXXXX\\\", \\\"ccyPair\\\": \\\"EURUSD\\\", \\\"tenor\\\": \\\"SP\\\", \\\"valueDate\\\": \\\"\\\", \\\"dealtCcy\\\": \\\"EUR\\\", \\\"side\\\": \\\"B\\\", \\\"orderQty\\\": \\\"100\\\",\\\"rateSetId\\\": \\\"142310\\\", \\\"ordType\\\": \\\"STANDARD\\\" } ] }\", \nCURLOPT_HTTPHEADER => array( \n\"accept: application/json\", \n\"authorization: Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEy9q61Vj0ly6PHyTj84qbE5UaKGxf3fdz2ARY15Kszu-zf_SWLloRClpkg6aBQxG9I608HzrBB7FSV3DVJcyrpjsGtJx0rOfNEO_Sn708nqxQsBuPzn03YZ2OHi5Q0jLpLpvE-s5XoaAf74nLYKLHtnQ\", \n\"content-type: application/json\", \n), \n)); \n$response = curl_exec($curl); \n$err = curl_error($curl); \ncurl_close($curl); \nif ($err) { \necho \"cURL Error #:\" . $err; \n} else \n{ \necho $response; \n}"
- lang: JAVA
label: Java
source: "/**Include following Maven dependency \n \n com.squareup.okhttp3 \n okhttp3 \n 3.9.0 \n \n */ \nimport java.io.IOException; \nimport java.net.InetSocketAddress; \nimport java.net.Proxy; \nimport okhttp3.MediaType; \nimport okhttp3.OkHttpClient; \nimport okhttp3.Request; \nimport okhttp3.RequestBody; \nimport okhttp3.Response;\npublic class Main { \n public static void main(String[] args) { \nOkHttpClient client = new OkHttpClient(); \n MediaType mediaType = MediaType.parse(\"application/json\"); \n RequestBody body = RequestBody.create(mediaType, \"{ \\\"action\\\": \\\"order-request\\\", \\\"senderCompId\\\": \\\"IFXCLIENT0\\\", \\\"onBehalfOfCompId\\\": \\\"IFXCLIENT0\\\", \\\"jsonReqId\\\": \\\"brs-25-09-2018-03\\\", \\\"sendingTime\\\": \\\"20180927-12:12:56.807\\\", \\\"deals\\\": [ { \\\"clOrdId\\\": \\\"st85589-27-09-2018-req4\\\", \\\"account\\\": \\\"XXXXXXXXXXX\\\", \\\"ccyPair\\\": \\\"EURUSD\\\", \\\"tenor\\\": \\\"SP\\\", \\\"valueDate\\\": \\\"\\\", \\\"dealtCcy\\\": \\\"EUR\\\", \\\"side\\\": \\\"B\\\", \\\"orderQty\\\": \\\"100\\\",\\\"rateSetId\\\": \\\"142310\\\", \\\"ordType\\\": \\\"STANDARD\\\" } ] }\"); \n Request request = new Request.Builder() .url(\"https://api.citivelocity.com/markets/fxgateway/async/instantfxorder/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2\") \n .post(body) \n .addHeader(\"content-type\", \"application/json\") \n .addHeader(\"accept\", \"application/json\") \n .addHeader(\"authorization\", \"Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEy9q61Vj0ly6PHyTj84qbE5UaKGxf3fdz2ARY15Kszu-zf_SWLloRClpkg6aBQxG9I608HzrBB7FSV3DVJcyrpjsGtJx0rOfNEO_Sn708nqxQsBuPzn03YZ2OHi5Q0jLpLpvE-s5XoaAf74nLYKLHtnQ\") \n .build(); \n try { \n Response response = client.newCall(request).execute(); \n } catch (IOException e) { \n e.printStackTrace(); \n } \n } \n} "
- lang: Javacript
label: Node
source: " // Install request by running \"npm install --save request\" \n var request = require(\"request\"); \n var options = { \n method: 'POST', \n url: 'https://api.citivelocity.com/markets/fxgateway/async/instantfxorder/api/v1', \n qs: { client_id: 'REPLACE_THIS_VALUE' }, \n headers: \n { \n authorization: 'Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEy9q61Vj0ly6PHyTj84qbE5UaKGxf3fdz2ARY15Kszu-zf_SWLloRClpkg6aBQxG9I608HzrBB7FSV3DVJcyrpjsGtJx0rOfNEO_Sn708nqxQsBuPzn03YZ2OHi5Q0jLpLpvE-s5XoaAf74nLYKLHtnQ', \n accept: 'application/json', \n 'content-type': 'application/json' \n }, \n body: \n { \"action\": \"order-request\", \"senderCompId\": \"IFXCLIENT0\", \"onBehalfOfCompId\": \"IFXCLIENT0\", \"jsonReqId\": \"brs-25-09-2018-03\", \"sendingTime\": \"20180927-12:12:56.807\", \"deals\": [ { \"clOrdId\": \"st85589-27-09-2018-req4\", \"account\": \"XXXXXXXXXXX\", \"ccyPair\": \"EURUSD\", \"tenor\": \"SP\", \"valueDate\": \"\", \"dealtCcy\": \"EUR\", \"side\": \"B\", \"orderQty\": \"100\",\"rateSetId\": \"142310\", \"ordType\": \"STANDARD\" } ] }, \n json: true }; \n request(options, function (error, response, body) { \n if (error) \n return console.error('Failed: %s', error.message); \n console.log('Success: ', body); \n });"
- lang: Go
label: Go
source: "package main \nimport ( \n\"fmt\" \n\"strings\" \n\"net/http\" \n\"io/ioutil\" \n) \nfunc main() { \nurl := \"https://api.citivelocity.com/markets/fxgateway/async/instantfxorder/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2\" \npayload := strings.NewReader(\"{ \\\"action\\\": \\\"order-request\\\", \\\"senderCompId\\\": \\\"IFXCLIENT0\\\", \\\"onBehalfOfCompId\\\": \\\"IFXCLIENT0\\\", \\\"jsonReqId\\\": \\\"brs-25-09-2018-03\\\", \\\"sendingTime\\\": \\\"20180927-12:12:56.807\\\", \\\"deals\\\": [ { \\\"clOrdId\\\": \\\"st85589-27-09-2018-req4\\\", \\\"account\\\": \\\"XXXXXXXXXXX\\\", \\\"ccyPair\\\": \\\"EURUSD\\\", \\\"tenor\\\": \\\"SP\\\", \\\"valueDate\\\": \\\"\\\", \\\"dealtCcy\\\": \\\"EUR\\\", \\\"side\\\": \\\"B\\\", \\\"orderQty\\\": \\\"100\\\",\\\"rateSetId\\\": \\\"142310\\\", \\\"ordType\\\": \\\"STANDARD\\\" } ] }\") \nreq, _ := http.NewRequest(\"POST\", url, payload) \nreq.Header.Add(\"content-type\", \"application/json\") \nreq.Header.Add(\"accept\", \"application/json\") \nreq.Header.Add(\"authorization\", \"Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEy9q61Vj0ly6PHyTj84qbE5UaKGxf3fdz2ARY15Kszu-zf_SWLloRClpkg6aBQxG9I608HzrBB7FSV3DVJcyrpjsGtJx0rOfNEO_Sn708nqxQsBuPzn03YZ2OHi5Q0jLpLpvE-s5XoaAf74nLYKLHtnQ\") \nres, _ := http.DefaultClient.Do(req) \ndefer res.Body.Close() \nbody, _ := ioutil.ReadAll(res.Body) \nfmt.Println(res) \nfmt.Println(string(body)) }"
- lang: Swift
label: Swift
source: "import Foundation \nlet headers = [ \n\"content-type\": \"application/json\", \n\"authorization\": \"Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEy9q61Vj0ly6PHyTj84qbE5UaKGxf3fdz2ARY15Kszu-zf_SWLloRClpkg6aBQxG9I608HzrBB7FSV3DVJcyrpjsGtJx0rOfNEO_Sn708nqxQsBuPzn03YZ2OHi5Q0jLpLpvE-s5XoaAf74nLYKLHtnQ\", \n\"accept\": \"application/json\" \nvar request = URLRequest(url: URL(string: \"https://api.citivelocity.com/markets/fxgateway/async/instantfxorder/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2\")!, \ncachePolicy: .reloadIgnoringLocalAndRemoteCacheData, \ntimeoutInterval: 10.0) \nlet data: [String: Any] = [\"action\": \"order-request\", \"senderCompId\": \"IFXCLIENT0\", \"onBehalfOfCompId\": \"IFXCLIENT0\", \"jsonReqId\": \"brs-25-09-2018-03\", \"sendingTime\": \"20180927-12:12:56.807\", \"deals\": [ [ \"clOrdId\": \"st85589-27-09-2018-req4\", \"account\": \"XXXXXXXXXXX\", \"ccyPair\": \"EURUSD\", \"tenor\": \"SP\", \"valueDate\": \"\", \"dealtCcy\": \"EUR\", \"side\": \"B\", \"orderQty\": \"100\",\"rateSetId\": \"142310\", \"ordType\": \"STANDARD\" ] ] ] \nlet jsonData: Data \ndo { \n jsonData = try JSONSerialization.data(withJSONObject: data, options: []) \n request.httpBody = jsonData \n} catch { \n print(\"Error: cannot create JSON from todo\") \n} \nrequest.httpMethod = \"POST\" \nrequest.allHTTPHeaderFields = headers \nlet session = URLSession.shared \nlet task = session.dataTask(with: request, completionHandler: { (data, response, error) in \n guard let data = data, error == nil else { // check for fundamental networking error \n print(\"error=\\(String(describing: error))\") \n return \n } \n if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 { // check for http errors \n print(\"statusCode should be 200, but is \\(httpStatus.statusCode)\") \n print(\"response = \\(String(describing: response))\") \n } \nlet responseString = String(data: data, encoding: .utf8) \n print(\"responseString = \\(String(describing: responseString))\") \n}) \ntask.resume()"
- lang: R
label: R
source: "## install the packages httr,jsonlite \nlibrary(httr) \nlibrary(jsonlite) \nurl<- 'https://api.citivelocity.com/markets/fxgateway/async/instantfxorder/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2' \nreq<- '{ \"action\": \"order-request\", \"senderCompId\": \"IFXCLIENT0\", \"onBehalfOfCompId\": \"IFXCLIENT0\", \"jsonReqId\": \"brs-25-09-2018-03\", \"sendingTime\": \"20180927-12:12:56.807\", \"deals\": [ { \"clOrdId\": \"st85589-27-09-2018-req4\", \"account\": \"XXXXXXXXXXX\", \"ccyPair\": \"EURUSD\", \"tenor\": \"SP\", \"valueDate\": \"\", \"dealtCcy\": \"EUR\", \"side\": \"B\", \"orderQty\": \"100\",\"rateSetId\": \"142310\", \"ordType\": \"STANDARD\" } ] }' \nresp<- POST(url , body=req, add_headers(\"accept\" = \"applicaton/json\",\"authorization\" =\"Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEy9q61Vj0ly6PHyTj84qbE5UaKGxf3fdz2ARY15Kszu-zf_SWLloRClpkg6aBQxG9I608HzrBB7FSV3DVJcyrpjsGtJx0rOfNEO_Sn708nqxQsBuPzn03YZ2OHi5Q0jLpLpvE-s5XoaAf74nLYKLHtnQ\", \"content-type\" = \"application/json\")) \ndata<- (toJSON(content(resp, as = \"parsed\"))) \nprettify(data)"
- lang: Ruby
label: Ruby
source: "require 'uri' \nrequire 'openssl' \nrequire 'net/http' \nurl = URI(\"https://api.citivelocity.com/markets/fxgateway/async/instantfxorder/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2\") \nhttp = Net::HTTP.new(url.host, url.port) \nhttp.use_ssl = true \nhttp.verify_mode = OpenSSL::SSL::VERIFY_PEER \nrequest = Net::HTTP::Post.new(url) \nrequest[\"content-type\"] = 'application/json' \nrequest[\"accept\"] = 'application/json' \nrequest[\"authorization\"] = 'Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEy9q61Vj0ly6PHyTj84qbE5UaKGxf3fdz2ARY15Kszu-zf_SWLloRClpkg6aBQxG9I608HzrBB7FSV3DVJcyrpjsGtJx0rOfNEO_Sn708nqxQsBuPzn03YZ2OHi5Q0jLpLpvE-s5XoaAf74nLYKLHtnQ' \nrequest.body = \"{ \\\"action\\\": \\\"order-request\\\", \\\"senderCompId\\\": \\\"IFXCLIENT0\\\", \\\"onBehalfOfCompId\\\": \\\"IFXCLIENT0\\\", \\\"jsonReqId\\\": \\\"brs-25-09-2018-03\\\", \\\"sendingTime\\\": \\\"20180927-12:12:56.807\\\", \\\"deals\\\": [ { \\\"clOrdId\\\": \\\"st85589-27-09-2018-req4\\\", \\\"account\\\": \\\"XXXXXXXXXXX\\\", \\\"ccyPair\\\": \\\"EURUSD\\\", \\\"tenor\\\": \\\"SP\\\", \\\"valueDate\\\": \\\"\\\", \\\"dealtCcy\\\": \\\"EUR\\\", \\\"side\\\": \\\"B\\\", \\\"orderQty\\\": \\\"100\\\",\\\"rateSetId\\\": \\\"142310\\\", \\\"ordType\\\": \\\"STANDARD\\\" } ] }\" \nresponse = http.request(request) \nputs response.read_body.force_encoding(\"utf-8\")"
- lang: C#
label: C#
source: "using System; \nusing System.Collections.Generic; \nusing System.Linq; \nusing System.Text; \nusing System; \nusing System.Web; \nusing System.Net; \nusing System.IO; \n \nnamespace ConsoleProgram \n{ \n public class Class1 \n { \n private const string URL = \"https://api.citivelocity.com/markets/fxgateway/async/instantfxorder/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2\"; \n private const string DATA = @\"{ \\\"action\\\": \\\"order-request\\\", \\\"senderCompId\\\": \\\"IFXCLIENT0\\\", \\\"onBehalfOfCompId\\\": \\\"IFXCLIENT0\\\", \\\"jsonReqId\\\": \\\"brs-25-09-2018-03\\\", \\\"sendingTime\\\": \\\"20180927-12:12:56.807\\\", \\\"deals\\\": [ { \\\"clOrdId\\\": \\\"st85589-27-09-2018-req4\\\", \\\"account\\\": \\\"XXXXXXXXXXX\\\", \\\"ccyPair\\\": \\\"EURUSD\\\", \\\"tenor\\\": \\\"SP\\\", \\\"valueDate\\\": \\\"\\\", \\\"dealtCcy\\\": \\\"EUR\\\", \\\"side\\\": \\\"B\\\", \\\"orderQty\\\": \\\"100\\\",\\\"rateSetId\\\": \\\"142310\\\", \\\"ordType\\\": \\\"STANDARD\\\" } ] }\"; \n \n static void Main(string[] args) \n { \n Class1.CreateObject(); \n } \n \n private static void CreateObject() \n { \n HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL); \n request.Method = \"POST\"; \n request.ContentType = \"application/json\"; \n request.ContentLength = DATA.Length; \n request.Headers[\"authorization\"] = \"Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEy9q61Vj0ly6PHyTj84qbE5UaKGxf3fdz2ARY15Kszu-zf_SWLloRClpkg6aBQxG9I608HzrBB7FSV3DVJcyrpjsGtJx0rOfNEO_Sn708nqxQsBuPzn03YZ2OHi5Q0jLpLpvE-s5XoaAf74nLYKLHtnQ\"; \n using (Stream webStream = request.GetRequestStream()) \n using (StreamWriter requestWriter = new StreamWriter(webStream, System.Text.Encoding.ASCII)) \n { \n requestWriter.Write(DATA); \n } \n try \n { \n WebResponse webResponse = request.GetResponse(); \n using (Stream webStream = webResponse.GetResponseStream() ?? Stream.Null) \n using (StreamReader responseReader = new StreamReader(webStream)) \n { \n string response = responseReader.ReadToEnd(); \n Console.Out.WriteLine(response); \n } \n }catch (Exception e) \n { \n Console.Out.WriteLine(\"-----------------\"); \n Console.Out.WriteLine(e.Message); \n } \n \n } \n } \n}"
tags:
- Fxgateway
security:
- OAuth2:
- fxapi
operationId: postFxgatewayAsyncInstantfxorderApiV1
x-operation-id-source: derived
servers:
- url: https://api.citivelocity.com/markets
description: production gateway URL
- url: https://sandbox.api.citivelocity.com/markets
description: sandbox URL
/fxgateway/sync/instantfxorder/api/v1:
post:
parameters:
- name: client_id
in: query
description: Your unique identifier shared during your API onboarding. It is the same client_id used for oauth token generation.
required: true
schema:
type: string
summary: Order request
description: Use this endpoint to request a rate for standard, drawdowns, pre-orders (intent to pay), forecast, and refund orders. Both individual and multi-order requests are accepted
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/FXTradeRequest'
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/ExecutionReport_2'
'401':
description: Unauthorized user error
'403':
description: Access Forbidden error
'500':
description: Internal Server Error
x-codeSamples:
- lang: cURL
label: cURL
source: 'curl --request POST \
--url ''https://sandbox.api.citivelocity.com/markets/fxgateway/sync/instantfxorder/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2'' \
--header ''accept: application/json'' \
--header ''authorization: Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEyAciLNKD3tsWcMS0Tzabo_6vnohvV_4n1CQuirlfy-hXVqqLYMvpZ12-mspSBzq-9VLhTZkrstSqgyCL8GJuJUfW-SOOYVPeoxMWq2Lyu6R0iQ7ttixnmRDKMPB9M8zt8uBLJJBe2vGhrGGxre4BqRQ'' \
--header ''content-type: application/json'' \
--data ''{ "action": "order-request", "senderCompId": "IFXCLIENT0", "onBehalfOfCompId": "IFXCLIENT0", "jsonReqId": "brs-25-09-2018-03", "sendingTime": "20180927-12:12:56.807", "deals": [ { "clOrdId": "test1134-27-09-2018-req5", "account": "XXXXXXXXXXX", "ccyPair": "EURUSD", "tenor": "BROKEN", "valueDate": "2018-10-01", "dealtCcy": "EUR", "side": "B", "orderQty": "100","rateSetId": "142310", "ordType": "STANDARD" } ] }'''
- lang: python
label: Python
source: "import http.client \n\n#If a proxy is used, set the tunnel as per below:\n#conn=http.client.HTTPSConnection(\"your_proxy_host\",your_proxy_port)\n#conn.set_tunnel(\"sandbox.api.citivelocity.com\",443)\nconn = http.client.HTTPSConnection(\"sandbox.api.citivelocity.com\") \npayload = \"{ \\\"action\\\": \\\"order-request\\\", \\\"senderCompId\\\": \\\"IFXCLIENT0\\\", \\\"onBehalfOfCompId\\\": \\\"IFXCLIENT0\\\", \\\"jsonReqId\\\": \\\"brs-25-09-2018-03\\\", \\\"sendingTime\\\": \\\"20180927-12:12:56.807\\\", \\\"deals\\\": [ { \\\"clOrdId\\\": \\\"test1134-27-09-2018-req5\\\", \\\"account\\\": \\\"XXXXXXXXXXX\\\", \\\"ccyPair\\\": \\\"EURUSD\\\", \\\"tenor\\\": \\\"BROKEN\\\", \\\"valueDate\\\": \\\"2018-10-01\\\", \\\"dealtCcy\\\": \\\"EUR\\\", \\\"side\\\": \\\"B\\\", \\\"orderQty\\\": \\\"100\\\",\\\"rateSetId\\\": \\\"142310\\\", \\\"ordType\\\": \\\"STANDARD\\\" } ] }\" \nheaders = { \n'content-type': \"application/json\", \n'accept': \"application/json\", \n'authorization': \"Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEyAciLNKD3tsWcMS0Tzabo_6vnohvV_4n1CQuirlfy-hXVqqLYMvpZ12-mspSBzq-9VLhTZkrstSqgyCL8GJuJUfW-SOOYVPeoxMWq2Lyu6R0iQ7ttixnmRDKMPB9M8zt8uBLJJBe2vGhrGGxre4BqRQ\" \n} \nconn.request(\"POST\", \"/markets/fxgateway/sync/instantfxorder/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2\", payload, headers) \nres = conn.getresponse() \ndata = res.read() \nprint(data.decode(\"utf-8\"))"
- lang: PHP
label: PHP
source: " \"https://sandbox.api.citivelocity.com/markets/fxgateway/sync/instantfxorder/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2 \", \nCURLOPT_RETURNTRANSFER => true, \nCURLOPT_ENCODING => \" \", CURLOPT_MAXREDIRS => 10, \nCURLOPT_TIMEOUT => 30, \nCURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, \nCURLOPT_CUSTOMREQUEST => \"POST\", \nCURLOPT_POSTFIELDS => \"{ \\\"action\\\": \\\"order-request\\\", \\\"senderCompId\\\": \\\"IFXCLIENT0\\\", \\\"onBehalfOfCompId\\\": \\\"IFXCLIENT0\\\", \\\"jsonReqId\\\": \\\"brs-25-09-2018-03\\\", \\\"sendingTime\\\": \\\"20180927-12:12:56.807\\\", \\\"deals\\\": [ { \\\"clOrdId\\\": \\\"test1134-27-09-2018-req5\\\", \\\"account\\\": \\\"XXXXXXXXXXX\\\", \\\"ccyPair\\\": \\\"EURUSD\\\", \\\"tenor\\\": BROKEN\\\", \\\"valueDate\\\": \\\"2018-10-01\\\", \\\"dealtCcy\\\": \\\"EUR\\\", \\\"side\\\": \\\"B\\\", \\\"orderQty\\\": \\\"100\\\",\\\"rateSetId\\\": \\\"142310\\\", \\\"ordType\\\": \\\"STANDARD\\\" } ] }\", \nCURLOPT_HTTPHEADER => array( \n\"accept: application/json\", \n\"authorization: Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEyAciLNKD3tsWcMS0Tzabo_6vnohvV_4n1CQuirlfy-hXVqqLYMvpZ12-mspSBzq-9VLhTZkrstSqgyCL8GJuJUfW-SOOYVPeoxMWq2Lyu6R0iQ7ttixnmRDKMPB9M8zt8uBLJJBe2vGhrGGxre4BqRQ\", \n\"content-type: application/json\", \n), \n)); \n$response = curl_exec($curl); \n$err = curl_error($curl); \ncurl_close($curl); \nif ($err) { \necho \"cURL Error #:\" . $err; \n} else \n{ \necho $response; \n}"
- lang: JAVA
label: Java
source: "/**Include following Maven dependency \n \n com.squareup.okhttp3 \n okhttp3 \n 3.9.0 \n \n */ \nimport java.io.IOException; \nimport java.net.InetSocketAddress; \nimport java.net.Proxy; \nimport okhttp3.MediaType; \nimport okhttp3.OkHttpClient; \nimport okhttp3.Request; \nimport okhttp3.RequestBody; \nimport okhttp3.Response;\npublic class Main { \n public static void main(String[] args) { \nOkHttpClient client = new OkHttpClient(); \n MediaType mediaType = MediaType.parse(\"application/json\"); \n RequestBody body = RequestBody.create(mediaType, \"{ \\\"action\\\": \\\"order-request\\\", \\\"senderCompId\\\": \\\"IFXCLIENT0\\\", \\\"onBehalfOfCompId\\\": \\\"IFXCLIENT0\\\", \\\"jsonReqId\\\": \\\"brs-25-09-2018-03\\\", \\\"sendingTime\\\": \\\"20180927-12:12:56.807\\\", \\\"deals\\\": [ { \\\"clOrdId\\\": \\\"test1134-27-09-2018-req5\\\", \\\"account\\\": \\\"XXXXXXXXXXX\\\", \\\"ccyPair\\\": \\\"EURUSD\\\", \\\"tenor\\\": \\\"BROKEN\\\", \\\"valueDate\\\": \\\"2018-10-01\\\", \\\"dealtCcy\\\": \\\"EUR\\\", \\\"side\\\": \\\"B\\\", \\\"orderQty\\\": \\\"100\\\",\\\"rateSetId\\\": \\\"142310\\\", \\\"ordType\\\": \\\"STANDARD\\\" } ] }\"); \n Request request = new Request.Builder() .url(\"https://sandbox.api.citivelocity.com/markets/fxgateway/sync/instantfxorder/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2\") \n .post(body) \n .addHeader(\"content-type\", \"application/json\") \n .addHeader(\"accept\", \"application/json\") \n .addHeader(\"authorization\", \"Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEyAciLNKD3tsWcMS0Tzabo_6vnohvV_4n1CQuirlfy-hXVqqLYMvpZ12-mspSBzq-9VLhTZkrstSqgyCL8GJuJUfW-SOOYVPeoxMWq2Lyu6R0iQ7ttixnmRDKMPB9M8zt8uBLJJBe2vGhrGGxre4BqRQ\") \n .build(); \n try { \n Response response = client.newCall(request).execute(); \n } catch (IOException e) { \n e.printStackTrace(); \n } \n } \n}"
- lang: Javacript
label: Node
source: " // Install request by running \"npm install --save request\" \n var request = require(\"request\"); \n var options = { \n method: 'POST', \n url: 'https://sandbox.api.citivelocity.com/markets/fxgateway/sync/instantfxorder/api/v1', \n qs: { client_id: 'REPLACE_THIS_VALUE' }, \n headers: \n { \n authorization: 'Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEyAciLNKD3tsWcMS0Tzabo_6vnohvV_4n1CQuirlfy-hXVqqLYMvpZ12-mspSBzq-9VLhTZkrstSqgyCL8GJuJUfW-SOOYVPeoxMWq2Lyu6R0iQ7ttixnmRDKMPB9M8zt8uBLJJBe2vGhrGGxre4BqRQ', \n accept: 'application/json', \n 'content-type': 'application/json' \n }, \n body: \n { \"action\": \"order-request\", \"senderCompId\": \"IFXCLIENT0\", \"onBehalfOfCompId\": \"IFXCLIENT0\", \"jsonReqId\": \"brs-25-09-2018-03\", \"sendingTime\": \"20180927-12:12:56.807\", \"deals\": [ { \"clOrdId\": \"test1134-27-09-2018-req5\", \"account\": \"XXXXXXXXXXX\", \"ccyPair\": \"EURUSD\", \"tenor\": \"BROKEN\", \"valueDate\": \"2018-10-01\", \"dealtCcy\": \"EUR\", \"side\": \"B\", \"orderQty\": \"100\",\"rateSetId\": \"142310\", \"ordType\": \"STANDARD\" } ] }, \n json: true }; \n request(options, function (error, response, body) { \n if (error) \n return console.error('Failed: %s', error.message); \n console.log('Success: ', body); \n });"
- lang: Go
label: Go
source: "package main \nimport ( \n\"fmt\" \n\"strings\" \n\"net/http\" \n\"io/ioutil\" \n) \nfunc main() { \nurl := \"https://sandbox.api.citivelocity.com/markets/fxgateway/sync/instantfxorder/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2\" \npayload := strings.NewReader(\"{ \\\"action\\\": \\\"order-request\\\", \\\"senderCompId\\\": \\\"IFXCLIENT0\\\", \\\"onBehalfOfCompId\\\": \\\"IFXCLIENT0\\\", \\\"jsonReqId\\\": \\\"brs-25-09-2018-03\\\", \\\"sendingTime\\\": \\\"20180927-12:12:56.807\\\", \\\"deals\\\": [ { \\\"clOrdId\\\": \\\"test1134-27-09-2018-req5\\\", \\\"account\\\": \\\"XXXXXXXXXXX\\\", \\\"ccyPair\\\": \\\"EURUSD\\\", \\\"tenor\\\": BROKEN\\\", \\\"valueDate\\\": \\\"2018-10-01\\\", \\\"dealtCcy\\\": \\\"EUR\\\", \\\"side\\\": \\\"B\\\", \\\"orderQty\\\": \\\"100\\\",\\\"rateSetId\\\": \\\"142310\\\", \\\"ordType\\\": \\\"STANDARD\\\" } ] }\") \nreq, _ := http.NewRequest(\"POST\", url, payload) \nreq.Header.Add(\"content-type\", \"application/json\") \nreq.Header.Add(\"accept\", \"application/json\") \nreq.Header.Add(\"authorization\", \"Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEyAciLNKD3tsWcMS0Tzabo_6vnohvV_4n1CQuirlfy-hXVqqLYMvpZ12-mspSBzq-9VLhTZkrstSqgyCL8GJuJUfW-SOOYVPeoxMWq2Lyu6R0iQ7ttixnmRDKMPB9M8zt8uBLJJBe2vGhrGGxre4BqRQ\") \nres, _ := http.DefaultClient.Do(req) \ndefer res.Body.Close() \nbody, _ := ioutil.ReadAll(res.Body) \nfmt.Println(res) \nfmt.Println(string(body)) }"
- lang: Swift
label: Swift
source: "import Foundation \nlet headers = [ \n\"content-type\": \"application/json\", \n\"authorization\": \"Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEyAciLNKD3tsWcMS0Tzabo_6vnohvV_4n1CQuirlfy-hXVqqLYMvpZ12-mspSBzq-9VLhTZkrstSqgyCL8GJuJUfW-SOOYVPeoxMWq2Lyu6R0iQ7ttixnmRDKMPB9M8zt8uBLJJBe2vGhrGGxre4BqRQ\", \n\"accept\": \"application/json\" \nvar request = URLRequest(url: URL(string: \"https://sandbox.api.citivelocity.com/markets/fxgateway/sync/instantfxorder/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2\")!, \ncachePolicy: .reloadIgnoringLocalAndRemoteCacheData, \ntimeoutInterval: 10.0) \nlet data: [String: Any] = [\"action\": \"order-request\", \"senderCompId\": \"IFXCLIENT0\", \"onBehalfOfCompId\": \"IFXCLIENT0\", \"jsonReqId\": \"brs-25-09-2018-03\", \"sendingTime\": \"20180927-12:12:56.807\", \"deals\": [ [ \"clOrdId\": \"test1134-27-09-2018-req5\", \"account\": \"XXXXXXXXXXX\", \"ccyPair\": \"EURUSD\", \"tenor\": \"BROKEN\", \"valueDate\": \"2018-10-01\", \"dealtCcy\": \"EUR\", \"side\": \"B\", \"orderQty\": \"100\",\"rateSetId\": \"142310\", \"ordType\": \"STANDARD\" ] ] ] \nlet jsonData: Data \ndo { \n jsonData = try JSONSerialization.data(withJSONObject: data, options: []) \n request.httpBody = jsonData \n} catch { \n print(\"Error: cannot create JSON from todo\") \n} \nrequest.httpMethod = \"POST\" \nrequest.allHTTPHeaderFields = headers \nlet session = URLSession.shared \nlet task = session.dataTask(with: request, completionHandler: { (data, response, error) in \n guard let data = data, error == nil else { // check for fundamental networking error \n print(\"error=\\(String(describing: error))\") \n return \n } \n if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 { // check for http errors \n print(\"statusCode should be 200, but is \\(httpStatus.statusCode)\") \n print(\"response = \\(String(describing: response))\") \n } \nlet responseString = String(data: data, encoding: .utf8) \n print(\"responseString = \\(String(describing: responseString))\") \n}) \ntask.resume()"
- lang: R
label: R
source: "## install the packages httr,jsonlite \nlibrary(httr) \nlibrary(jsonlite) \nurl<- 'https://sandbox.api.citivelocity.com/markets/fxgateway/sync/instantfxorder/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2' \nreq<- '{ \"action\": \"order-request\", \"senderCompId\": \"IFXCLIENT0\", \"onBehalfOfCompId\": \"IFXCLIENT0\", \"jsonReqId\": \"brs-25-09-2018-03\", \"sendingTime\": \"20180927-12:12:56.807\", \"deals\": [ { \"clOrdId\": \"test1134-27-09-2018-req5\", \"account\": \"XXXXXXXXXXX\", \"ccyPair\": \"EURUSD\", \"tenor\": \"BROKEN\", \"valueDate\": \"2018-10-01\", \"dealtCcy\": \"EUR\", \"side\": \"B\", \"orderQty\": \"100\",\"rateSetId\": \"142310\", \"ordType\": \"STANDARD\" } ] }' \nresp<- POST(url , body=req, add_headers(\"accept\" = \"applicaton/json\",\"authorization\" =\"Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEyAciLNKD3tsWcMS0Tzabo_6vnohvV_4n1CQuirlfy-hXVqqLYMvpZ12-mspSBzq-9VLhTZkrstSqgyCL8GJuJUfW-SOOYVPeoxMWq2Lyu6R0iQ7ttixnmRDKMPB9M8zt8uBLJJBe2vGhrGGxre4BqRQ\", \"content-type\" = \"application/json\")) \ndata<- (toJSON(content(resp, as = \"parsed\"))) \nprettify(data)"
- lang: Ruby
label: Ruby
source: "require 'uri' \nrequire 'openssl' \nrequire 'net/http' \nurl = URI(\"https://sandbox.api.citivelocity.com/markets/fxgateway/sync/instantfxorder/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2\") \nhttp = Net::HTTP.new(url.host, url.port) \nhttp.use_ssl = true \nhttp.verify_mode = OpenSSL::SSL::VERIFY_PEER \nrequest = Net::HTTP::Post.new(url) \nrequest[\"content-type\"] = 'application/json' \nrequest[\"accept\"] = 'application/json' \nrequest[\"authorization\"] = 'Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEyAciLNKD3tsWcMS0Tzabo_6vnohvV_4n1CQuirlfy-hXVqqLYMvpZ12-mspSBzq-9VLhTZkrstSqgyCL8GJuJUfW-SOOYVPeoxMWq2Lyu6R0iQ7ttixnmRDKMPB9M8zt8uBLJJBe2vGhrGGxre4BqRQ' \nrequest.body = \"{ \\\"action\\\": \\\"order-request\\\", \\\"senderCompId\\\": \\\"IFXCLIENT0\\\", \\\"onBehalfOfCompId\\\": \\\"IFXCLIENT0\\\", \\\"jsonReqId\\\": \\\"brs-25-09-2018-03\\\", \\\"sendingTime\\\": \\\"20180927-12:12:56.807\\\", \\\"deals\\\": [ { \\\"clOrdId\\\": \\\"test1134-27-09-2018-req5\\\", \\\"account\\\": \\\"XXXXXXXXXXX\\\", \\\"ccyPair\\\": \\\"EURUSD\\\", \\\"tenor\\\": BROKEN\\\", \\\"valueDate\\\": \\\"2018-10-01\\\", \\\"dealtCcy\\\": \\\"EUR\\\", \\\"side\\\": \\\"B\\\", \\\"orderQty\\\": \\\"100\\\",\\\"rateSetId\\\": \\\"142310\\\", \\\"ordType\\\": \\\"STANDARD\\\" } ] }\" \nresponse = http.request(request) \nputs response.read_body.force_encoding(\"utf-8\")"
- lang: C#
label: C#
source: "using System; \nusing System.Collections.Generic; \nusing System.Linq; \nusing System.Text; \nusing System; \nusing System.Web; \nusing System.Net; \nusing System.IO; \n\nnamespace ConsoleProgram \n{ \n public class Class1 \n { \n private const string URL = \"https://sandbox.api.citivelocity.com/markets/fxgateway/sync/instantfxorder/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2\"; \n private const string DATA = @\"{ \"\"action\"\": \"\"order-request\"\", \"\"senderCompId\"\": \"\"IFXCLIENT0\"\", \"\"onBehalfOfCompId\"\": \"\"IFXCLIENT0\"\", \"\"jsonReqId\"\": \"\"brs-25-09-2018-03\"\", \"\"sendingTime\"\": \"\"20180927-12:12:56.807\"\", \"\"deals\"\": [ { \"\"clOrdId\"\": \"\"test1134-27-09-2018-req5\"\", \"\"account\"\": \"\"XXXXXXXXXXX\"\", \"\"ccyPair\"\": \"\"EURUSD\"\", \"\"tenor\"\": \"\"BROKEN\"\", \"\"valueDate\"\": \"\"2018-10-01\"\", \"\"dealtCcy\"\": \"\"EUR\"\", \"\"side\"\": \"\"B\"\", \"\"orderQty\"\": \"\"100\"\",\"\"rateSetId\"\": \"\"142310\"\", \"\"ordType\"\": \"\"STANDARD\"\" } ] }\"; \n\n static void Main(string[] args) \n { \n Class1.CreateObject(); \n } \n\n private static void CreateObject() \n { \n HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL); \n request.Method = \"POST\"; \n request.ContentType = \"application/json\"; \n request.ContentLength = DATA.Length; \n request.Headers[\"authorization\"] = \"Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEyAciLNKD3tsWcMS0Tzabo_6vnohvV_4n1CQuirlfy-hXVqqLYMvpZ12-mspSBzq-9VLhTZkrstSqgyCL8GJuJUfW-SOOYVPeoxMWq2Lyu6R0iQ7ttixnmRDKMPB9M8zt8uBLJJBe2vGhrGGxre4BqRQ\"; \n using (Stream webStream = request.GetRequestStream()) \n using (StreamWriter requestWriter = new StreamWriter(webStream, System.Text.Encoding.ASCII)) \n { \n requestWriter.Write(DATA); \n } \n try \n { \n WebResponse webResponse = request.GetResponse(); \n using (Stream webStream = webResponse.GetResponseStream() ?? Stream.Null) \n using (StreamReader responseReader = new StreamReader(webStream)) \n { \n string response = responseReader.ReadToEnd(); \n Console.Out.WriteLine(response); \n } \n }catch (Exception e) \n { \n Console.Out.WriteLine(\"-----------------\"); \n Console.Out.WriteLine(e.Message); \n } \n\n } \n } \n}"
tags:
- Fxgateway
security:
- OAuth2:
- fxapi
operationId: postFxgatewaySyncInstantfxorderApiV1
x-operation-id-source: derived
servers:
- url: https://api.citivelocity.com/markets
description: production URL
- url: https://sandbox.api.citivelocity.com/markets
description: sanbox URL
/fxgateway/async/instantfxquote/api/v1:
post:
parameters:
- name: client_id
in: query
description: Your unique identifier shared during your API onboarding. It is the same client_id used for oauth token generation.
required: true
schema:
type: string
summary: Quote Request and Quote Report Request API
description: 'This endpoint facilitates requests for active rate enquiries - for a specific currency pair or all currency pairs and historic rate enquiries - for all currency pairs. The response will be sent via web socket connection.
For Quote Report Request, while the fields ‘tradeDate’, ‘rateSetId’, are optional, you must send them in at least one of the combinations below to fetch the results:
a) ‘tradeDate’
b) ‘rateSetId’'
requestBody:
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/FXQuoteRequest'
- $ref: '#/components/schemas/FXQuoteReportRequest'
required: true
responses:
'200':
description: "OK Acknowledged.\n\nNote: The quote response message will be sent via web socket. Please see the User Guide tab for more information on using the web socket connection.\n\nIn rate response, if you are configured to have time-based guaranteed rates, then all live rates are included. Expired rates are omitted in the sent response. \nIn rate report response, if you are configured to have time based guaranteed rates, then all the tier-based rates are included. \n\nThe different spot rates for a given currency pair will have different spreads and can be viewed based on the `validUntilTime` field. \n\nMissing rates are omitted in the rates and rates report response unless configured to receive missing rates."
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/FXQuoteResponse'
- $ref: '#/components/schemas/FXQuoteReportResponse'
'401':
description: Unauthorized user error
'403':
description: Access Forbidden error
'500':
description: Internal Server Error
x-codeSamples:
- lang: cURL
label: cURL
source: 'curl --request POST \
--url ''https://api.citivelocity.com/markets/fxgateway/async/instantfxquote/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2'' \
--header ''accept: application/json'' \
--header ''authorization: Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEy9q61Vj0ly6PHyTj84qbE5UaKGxf3fdz2ARY15Kszu-zf_SWLloRClpkg6aBQxG9I608HzrBB7FSV3DVJcyrpjsGtJx0rOfNEO_Sn708nqxQsBuPzn03YZ2OHi5Q0jLpLpvE-s5XoaAf74nLYKLHtnQ'' \
--header ''content-type: application/json'' \
--data ''{ "action": "rate-request", "senderCompId": "IFXCLIENT0", "onBehalfOfCompId": "IFXCLIENT0", "jsonReqId": "brs-25-09-2018-01", "sendingTime": "20180925-14:41:56.807", "symbol": "ALL", "account": "Xxxxxxxxxxx" }'''
- lang: python
label: Python
source: "import http.client \n\n#If a proxy is used, set the tunnel as per below:\n#conn=http.client.HTTPSConnection(\"your_proxy_host\",your_proxy_port)\n#conn.set_tunnel(\"api.citivelocity.com\",443)\nconn = http.client.HTTPSConnection(\"api.citivelocity.com\") \npayload = \"{ \\\"action\\\": \\\"rate-request\\\", \\\"senderCompId\\\": \\\"IFXCLIENT0\\\", \\\"onBehalfOfCompId\\\": \\\"IFXCLIENT0\\\", \\\"jsonReqId\\\": \\\"brs-25-09-2018-01\\\", \\\"sendingTime\\\": \\\"20180925-14:41:56.807\\\", \\\"symbol\\\": \\\"ALL\\\", \\\"account\\\": \\\"Xxxxxxxxxxx\\\" }\" \nheaders = { \n'content-type': \"application/json\", \n'accept': \"application/json\", \n'authorization': \"Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEy9q61Vj0ly6PHyTj84qbE5UaKGxf3fdz2ARY15Kszu-zf_SWLloRClpkg6aBQxG9I608HzrBB7FSV3DVJcyrpjsGtJx0rOfNEO_Sn708nqxQsBuPzn03YZ2OHi5Q0jLpLpvE-s5XoaAf74nLYKLHtnQ\" \n} \nconn.request(\"POST\", \"/markets/fxgateway/async/instantfxquote/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2\", payload, headers) \nres = conn.getresponse() \ndata = res.read() \nprint(data.decode(\"utf-8\"))"
- lang: PHP
label: PHP
source: " \"https://api.citivelocity.com/markets/fxgateway/async/instantfxquote/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2 \", \nCURLOPT_RETURNTRANSFER => true, \nCURLOPT_ENCODING => \" \", CURLOPT_MAXREDIRS => 10, \nCURLOPT_TIMEOUT => 30, \nCURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, \nCURLOPT_CUSTOMREQUEST => \"POST\", \nCURLOPT_POSTFIELDS => \"{ \\\"action\\\": \\\"rate-request\\\", \\\"senderCompId\\\": \\\"IFXCLIENT0\\\", \\\"onBehalfOfCompId\\\": \\\"IFXCLIENT0\\\", \\\"jsonReqId\\\": \\\"brs-25-09-2018-01\\\", \\\"sendingTime\\\": \\\"20180925-14:41:56.807\\\", \\\"symbol\\\": \\\"ALL\\\", \\\"account\\\": \\\"Xxxxxxxxxxx\\\" }\", \nCURLOPT_HTTPHEADER => array( \n\"accept: application/json\", \n\"authorization: Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEy9q61Vj0ly6PHyTj84qbE5UaKGxf3fdz2ARY15Kszu-zf_SWLloRClpkg6aBQxG9I608HzrBB7FSV3DVJcyrpjsGtJx0rOfNEO_Sn708nqxQsBuPzn03YZ2OHi5Q0jLpLpvE-s5XoaAf74nLYKLHtnQ\", \n\"content-type: application/json\", \n), \n)); \n$response = curl_exec($curl); \n$err = curl_error($curl); \ncurl_close($curl); \nif ($err) { \necho \"cURL Error #:\" . $err; \n} else \n{ \necho $response; \n}"
- lang: JAVA
label: Java
source: "/**Include following Maven dependency \n \n com.squareup.okhttp3 \n okhttp3 \n 3.9.0 \n \n */ \nimport java.io.IOException; \nimport java.net.InetSocketAddress; \nimport java.net.Proxy; \nimport okhttp3.MediaType; \nimport okhttp3.OkHttpClient; \nimport okhttp3.Request; \nimport okhttp3.RequestBody; \nimport okhttp3.Response;\npublic class Main { \n public static void main(String[] args) { \nOkHttpClient client = new OkHttpClient(); \n MediaType mediaType = MediaType.parse(\"application/json\"); \n RequestBody body = RequestBody.create(mediaType, \"{ \\\"action\\\": \\\"rate-request\\\", \\\"senderCompId\\\": \\\"IFXCLIENT0\\\", \\\"onBehalfOfCompId\\\": \\\"IFXCLIENT0\\\", \\\"jsonReqId\\\": \\\"brs-25-09-2018-01\\\", \\\"sendingTime\\\": \\\"20180925-14:41:56.807\\\", \\\"symbol\\\": \\\"ALL\\\", \\\"account\\\": \\\"Xxxxxxxxxxx\\\" }\"); \n Request request = new Request.Builder() .url(\"https://api.citivelocity.com/markets/fxgateway/async/instantfxquote/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2\") \n .post(body) \n .addHeader(\"content-type\", \"application/json\") \n .addHeader(\"accept\", \"application/json\") \n .addHeader(\"authorization\", \"Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEy9q61Vj0ly6PHyTj84qbE5UaKGxf3fdz2ARY15Kszu-zf_SWLloRClpkg6aBQxG9I608HzrBB7FSV3DVJcyrpjsGtJx0rOfNEO_Sn708nqxQsBuPzn03YZ2OHi5Q0jLpLpvE-s5XoaAf74nLYKLHtnQ\") \n .build(); \n try { \n Response response = client.newCall(request).execute(); \n } catch (IOException e) { \n e.printStackTrace(); \n } \n } \n}"
- lang: Javacript
label: Node
source: " // Install request by running \"npm install --save request\" \n var request = require(\"request\"); \n var options = { \n method: 'POST', \n url: 'https://api.citivelocity.com/markets/fxgateway/async/instantfxquote/api/v1', \n qs: { client_id: 'REPLACE_THIS_VALUE' }, \n headers: \n { \n authorization: 'Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEy9q61Vj0ly6PHyTj84qbE5UaKGxf3fdz2ARY15Kszu-zf_SWLloRClpkg6aBQxG9I608HzrBB7FSV3DVJcyrpjsGtJx0rOfNEO_Sn708nqxQsBuPzn03YZ2OHi5Q0jLpLpvE-s5XoaAf74nLYKLHtnQ', \n accept: 'application/json', \n 'content-type': 'application/json' \n }, \n body: \n { \"action\": \"rate-request\", \"senderCompId\": \"IFXCLIENT0\", \"onBehalfOfCompId\": \"IFXCLIENT0\", \"jsonReqId\": \"brs-25-09-2018-01\", \"sendingTime\": \"20180925-14:41:56.807\", \"symbol\": \"ALL\", \"account\": \"Xxxxxxxxxxx\" }, \n json: true }; \n request(options, function (error, response, body) { \n if (error) \n return console.error('Failed: %s', error.message); \n console.log('Success: ', body); \n });"
- lang: Go
label: Go
source: "package main \nimport ( \n\"fmt\" \n\"strings\" \n\"net/http\" \n\"io/ioutil\" \n) \nfunc main() { \nurl := \"https://api.citivelocity.com/markets/fxgateway/async/instantfxquote/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2\" \npayload := strings.NewReader(\"{ \\\"action\\\": \\\"rate-request\\\", \\\"senderCompId\\\": \\\"IFXCLIENT0\\\", \\\"onBehalfOfCompId\\\": \\\"IFXCLIENT0\\\", \\\"jsonReqId\\\": \\\"brs-25-09-2018-01\\\", \\\"sendingTime\\\": \\\"20180925-14:41:56.807\\\", \\\"symbol\\\": \\\"ALL\\\", \\\"account\\\": \\\"Xxxxxxxxxxx\\\" }\") \nreq, _ := http.NewRequest(\"POST\", url, payload) \nreq.Header.Add(\"content-type\", \"application/json\") \nreq.Header.Add(\"accept\", \"application/json\") \nreq.Header.Add(\"authorization\", \"Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEy9q61Vj0ly6PHyTj84qbE5UaKGxf3fdz2ARY15Kszu-zf_SWLloRClpkg6aBQxG9I608HzrBB7FSV3DVJcyrpjsGtJx0rOfNEO_Sn708nqxQsBuPzn03YZ2OHi5Q0jLpLpvE-s5XoaAf74nLYKLHtnQ\") \nres, _ := http.DefaultClient.Do(req) \ndefer res.Body.Close() \nbody, _ := ioutil.ReadAll(res.Body) \nfmt.Println(res) \nfmt.Println(string(body)) }"
- lang: Swift
label: Swift
source: "import Foundation \nlet headers = [ \n\"content-type\": \"application/json\", \n\"authorization\": \"Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEy9q61Vj0ly6PHyTj84qbE5UaKGxf3fdz2ARY15Kszu-zf_SWLloRClpkg6aBQxG9I608HzrBB7FSV3DVJcyrpjsGtJx0rOfNEO_Sn708nqxQsBuPzn03YZ2OHi5Q0jLpLpvE-s5XoaAf74nLYKLHtnQ\", \n\"accept\": \"application/json\" \nvar request = URLRequest(url: URL(string: \"https://api.citivelocity.com/markets/fxgateway/async/instantfxquote/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2\")!, \ncachePolicy: .reloadIgnoringLocalAndRemoteCacheData, \ntimeoutInterval: 10.0) \nlet data: [String: Any] = [ \"action\": \"rate-request\", \"senderCompId\": \"IFXCLIENT0\", \"onBehalfOfCompId\": \"IFXCLIENT0\", \"jsonReqId\": \"brs-25-09-2018-01\", \"sendingTime\": \"20180925-14:41:56.807\", \"symbol\": \"ALL\", \"account\": \"Xxxxxxxxxxx\" ] \nlet jsonData: Data \ndo { \n jsonData = try JSONSerialization.data(withJSONObject: data, options: []) \n request.httpBody = jsonData \n} catch { \n print(\"Error: cannot create JSON from todo\") \n} \nrequest.httpMethod = \"POST\" \nrequest.allHTTPHeaderFields = headers \nlet session = URLSession.shared \nlet task = session.dataTask(with: request, completionHandler: { (data, response, error) in \n guard let data = data, error == nil else { // check for fundamental networking error \n print(\"error=\\(String(describing: error))\") \n return \n } \n if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 { // check for http errors \n print(\"statusCode should be 200, but is \\(httpStatus.statusCode)\") \n print(\"response = \\(String(describing: response))\") \n } \nlet responseString = String(data: data, encoding: .utf8) \n print(\"responseString = \\(String(describing: responseString))\") \n}) \ntask.resume()"
- lang: R
label: R
source: "## install the packages httr,jsonlite \nlibrary(httr) \nlibrary(jsonlite) \nurl<- 'https://api.citivelocity.com/markets/fxgateway/async/instantfxquote/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2' \nreq<- '{ \"action\": \"rate-request\", \"senderCompId\": \"IFXCLIENT0\", \"onBehalfOfCompId\": \"IFXCLIENT0\", \"jsonReqId\": \"brs-25-09-2018-01\", \"sendingTime\": \"20180925-14:41:56.807\", \"symbol\": \"ALL\", \"account\": \"Xxxxxxxxxxx\" }' \nresp<- POST(url , body=req, add_headers(\"accept\" = \"applicaton/json\",\"authorization\" =\"Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEy9q61Vj0ly6PHyTj84qbE5UaKGxf3fdz2ARY15Kszu-zf_SWLloRClpkg6aBQxG9I608HzrBB7FSV3DVJcyrpjsGtJx0rOfNEO_Sn708nqxQsBuPzn03YZ2OHi5Q0jLpLpvE-s5XoaAf74nLYKLHtnQ\", \"content-type\" = \"application/json\")) \ndata<- (toJSON(content(resp, as = \"parsed\"))) \nprettify(data)"
- lang: Ruby
label: Ruby
source: "require 'uri' \nrequire 'openssl' \nrequire 'net/http' \nurl = URI(\"https://api.citivelocity.com/markets/fxgateway/async/instantfxquote/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2\") \nhttp = Net::HTTP.new(url.host, url.port) \nhttp.use_ssl = true \nhttp.verify_mode = OpenSSL::SSL::VERIFY_PEER \nrequest = Net::HTTP::Post.new(url) \nrequest[\"content-type\"] = 'application/json' \nrequest[\"accept\"] = 'application/json' \nrequest[\"authorization\"] = 'Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEy9q61Vj0ly6PHyTj84qbE5UaKGxf3fdz2ARY15Kszu-zf_SWLloRClpkg6aBQxG9I608HzrBB7FSV3DVJcyrpjsGtJx0rOfNEO_Sn708nqxQsBuPzn03YZ2OHi5Q0jLpLpvE-s5XoaAf74nLYKLHtnQ' \nrequest.body = \"{ \\\"action\\\": \\\"rate-request\\\", \\\"senderCompId\\\": \\\"IFXCLIENT0\\\", \\\"onBehalfOfCompId\\\": \\\"IFXCLIENT0\\\", \\\"jsonReqId\\\": \\\"brs-25-09-2018-01\\\", \\\"sendingTime\\\": \\\"20180925-14:41:56.807\\\", \\\"symbol\\\": \\\"ALL\\\", \\\"account\\\": \\\"Xxxxxxxxxxx\\\" }\" \nresponse = http.request(request) \nputs response.read_body.force_encoding(\"utf-8\")"
- lang: C#
label: C#
source: "using System; \nusing System.Collections.Generic; \nusing System.Linq; \nusing System.Text; \nusing System; \nusing System.Web; \nusing System.Net; \nusing System.IO; \n\nnamespace ConsoleProgram \n{ \n public class Class1 \n { \n private const string URL = \"https://api.citivelocity.com/markets/fxgateway/async/instantfxquote/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2\"; \n private const string DATA = @\"{ \\\"action\\\": \\\"rate-request\\\", \\\"senderCompId\\\": \\\"IFXCLIENT0\\\", \\\"onBehalfOfCompId\\\": \\\"IFXCLIENT0\\\", \\\"jsonReqId\\\": \\\"brs-25-09-2018-01\\\", \\\"sendingTime\\\": \\\"20180925-14:41:56.807\\\", \\\"symbol\\\": \\\"ALL\\\", \\\"account\\\": \\\"Xxxxxxxxxxx\\\" }\"; \n\n static void Main(string[] args) \n { \n Class1.CreateObject(); \n } \n\n private static void CreateObject() \n { \n HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL); \n request.Method = \"POST\"; \n request.ContentType = \"application/json\"; \n request.ContentLength = DATA.Length; \n request.Headers[\"authorization\"] = \"Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEy9q61Vj0ly6PHyTj84qbE5UaKGxf3fdz2ARY15Kszu-zf_SWLloRClpkg6aBQxG9I608HzrBB7FSV3DVJcyrpjsGtJx0rOfNEO_Sn708nqxQsBuPzn03YZ2OHi5Q0jLpLpvE-s5XoaAf74nLYKLHtnQ\"; \n using (Stream webStream = request.GetRequestStream()) \n using (StreamWriter requestWriter = new StreamWriter(webStream, System.Text.Encoding.ASCII)) \n { \n requestWriter.Write(DATA); \n } \n try \n { \n WebResponse webResponse = request.GetResponse(); \n using (Stream webStream = webResponse.GetResponseStream() ?? Stream.Null) \n using (StreamReader responseReader = new StreamReader(webStream)) \n { \n string response = responseReader.ReadToEnd(); \n Console.Out.WriteLine(response); \n } \n }catch (Exception e) \n { \n Console.Out.WriteLine(\"-----------------\"); \n Console.Out.WriteLine(e.Message); \n } \n\n } \n } \n}"
tags:
- Fxgateway
security:
- OAuth2:
- fxapi
operationId: postFxgatewayAsyncInstantfxquoteApiV1
x-operation-id-source: derived
servers:
- url: https://api.citivelocity.com/markets
description: production URL
- url: https://sandbox.api.citivelocity.com/markets
description: sanbox URL
/fxgateway/sync/instantfxquote/api/v1:
post:
parameters:
- name: client_id
in: query
description: Your unique identifier shared during your API onboarding. It is the same client_id used for oauth token generation.
required: true
schema:
type: string
summary: Quote Request and Quote Report Request API
description: 'This endpoint facilitates requests for active rate enquiries - for a specific currency pair or all currency pairs and historic rate enquiries - for all currency pairs.
For Quote Report Request, while the fields ‘tradeDate’, ‘rateSetId’, are optional, you must send them in at least one of the combinations below to fetch the results:
a) ‘tradeDate’
b) ‘rateSetId’'
requestBody:
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/FXQuoteRequest_2'
- $ref: '#/components/schemas/FXQuoteReportRequest_2'
required: true
responses:
'200':
description: "OK Acknowledged.\n\nIn rate response, if you are configured to have time-based guaranteed rates, then all live rates are included. \nIn rate report response, if you are configured to have time based guaranteed rates, then all the tier-based rates are included. Expired rates are omitted in the sent response. \n\nThe different spot rates for a given currency pair will have different spreads and can be viewed based on the `validUntilTime` field. \n\nMissing rates are omitted in the rates and rates report response unless configured to receive missing rates."
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/FXQuoteResponse'
- $ref: '#/components/schemas/FXQuoteReportResponse'
'401':
description: Unauthorized user error
'403':
description: Access Forbidden error
'500':
description: Internal Server Error
x-codeSamples:
- lang: cURL
label: cURL
source: 'curl --request POST \
--url ''https://api.citivelocity.com/markets/fxgateway/sync/instantfxquote/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2'' \
--header ''accept: application/json'' \
--header ''authorization: Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEy9q61Vj0ly6PHyTj84qbE5UaKGxf3fdz2ARY15Kszu-zf_SWLloRClpkg6aBQxG9I608HzrBB7FSV3DVJcyrpjsGtJx0rOfNEO_Sn708nqxQsBuPzn03YZ2OHi5Q0jLpLpvE-s5XoaAf74nLYKLHtnQ'' \
--header ''content-type: application/json'' \
--data ''{ "action": "rate-request", "senderCompId": "IFXCLIENT0", "onBehalfOfCompId": "IFXCLIENT0", "jsonReqId": "brs-25-09-2018-01", "sendingTime": "20180925-14:41:56.807", "symbol": "ALL", "account": "Xxxxxxxxxxx" }'''
- lang: python
label: Python
source: "import http.client \n\n#If a proxy is used, set the tunnel as per below:\n#conn=http.client.HTTPSConnection(\"your_proxy_host\",your_proxy_port)\n#conn.set_tunnel(\"api.citivelocity.com\",443)\nconn = http.client.HTTPSConnection(\"api.citivelocity.com\") \npayload = \"{ \\\"action\\\": \\\"rate-request\\\", \\\"senderCompId\\\": \\\"IFXCLIENT0\\\", \\\"onBehalfOfCompId\\\": \\\"IFXCLIENT0\\\", \\\"jsonReqId\\\": \\\"brs-25-09-2018-01\\\", \\\"sendingTime\\\": \\\"20180925-14:41:56.807\\\", \\\"symbol\\\": \\\"ALL\\\", \\\"account\\\": \\\"Xxxxxxxxxxx\\\" }\" \nheaders = { \n'content-type': \"application/json\", \n'accept': \"application/json\", \n'authorization': \"Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEy9q61Vj0ly6PHyTj84qbE5UaKGxf3fdz2ARY15Kszu-zf_SWLloRClpkg6aBQxG9I608HzrBB7FSV3DVJcyrpjsGtJx0rOfNEO_Sn708nqxQsBuPzn03YZ2OHi5Q0jLpLpvE-s5XoaAf74nLYKLHtnQ\" \n} \nconn.request(\"POST\", \"/markets/fxgateway/sync/instantfxquote/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2\", payload, headers) \nres = conn.getresponse() \ndata = res.read() \nprint(data.decode(\"utf-8\"))"
- lang: PHP
label: PHP
source: " \"https://api.citivelocity.com/markets/fxgateway/sync/instantfxquote/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2 \", \nCURLOPT_RETURNTRANSFER => true, \nCURLOPT_ENCODING => \" \", CURLOPT_MAXREDIRS => 10, \nCURLOPT_TIMEOUT => 30, \nCURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, \nCURLOPT_CUSTOMREQUEST => \"POST\", \nCURLOPT_POSTFIELDS => \"{ \\\"action\\\": \\\"rate-request\\\", \\\"senderCompId\\\": \\\"IFXCLIENT0\\\", \\\"onBehalfOfCompId\\\": \\\"IFXCLIENT0\\\", \\\"jsonReqId\\\": \\\"brs-25-09-2018-01\\\", \\\"sendingTime\\\": \\\"20180925-14:41:56.807\\\", \\\"symbol\\\": \\\"ALL\\\", \\\"account\\\": \\\"Xxxxxxxxxxx\\\" }\", \nCURLOPT_HTTPHEADER => array( \n\"accept: application/json\", \n\"authorization: Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEy9q61Vj0ly6PHyTj84qbE5UaKGxf3fdz2ARY15Kszu-zf_SWLloRClpkg6aBQxG9I608HzrBB7FSV3DVJcyrpjsGtJx0rOfNEO_Sn708nqxQsBuPzn03YZ2OHi5Q0jLpLpvE-s5XoaAf74nLYKLHtnQ\", \n\"content-type: application/json\", \n), \n)); \n$response = curl_exec($curl); \n$err = curl_error($curl); \ncurl_close($curl); \nif ($err) { \necho \"cURL Error #:\" . $err; \n} else \n{ \necho $response; \n}"
- lang: JAVA
label: Java
source: "/**Include following Maven dependency \n \n com.squareup.okhttp3 \n okhttp3 \n 3.9.0 \n \n */ \nimport java.io.IOException; \nimport java.net.InetSocketAddress; \nimport java.net.Proxy; \nimport okhttp3.MediaType; \nimport okhttp3.OkHttpClient; \nimport okhttp3.Request; \nimport okhttp3.RequestBody; \nimport okhttp3.Response;\npublic class Main { \n public static void main(String[] args) { \nOkHttpClient client = new OkHttpClient(); \n MediaType mediaType = MediaType.parse(\"application/json\"); \n RequestBody body = RequestBody.create(mediaType, \"{ \\\"action\\\": \\\"rate-request\\\", \\\"senderCompId\\\": \\\"IFXCLIENT0\\\", \\\"onBehalfOfCompId\\\": \\\"IFXCLIENT0\\\", \\\"jsonReqId\\\": \\\"brs-25-09-2018-01\\\", \\\"sendingTime\\\": \\\"20180925-14:41:56.807\\\", \\\"symbol\\\": \\\"ALL\\\", \\\"account\\\": \\\"Xxxxxxxxxxx\\\" }\"); \n Request request = new Request.Builder() .url(\"https://api.citivelocity.com/markets/fxgateway/sync/instantfxquote/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2\") \n .post(body) \n .addHeader(\"content-type\", \"application/json\") \n .addHeader(\"accept\", \"application/json\") \n .addHeader(\"authorization\", \"Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEy9q61Vj0ly6PHyTj84qbE5UaKGxf3fdz2ARY15Kszu-zf_SWLloRClpkg6aBQxG9I608HzrBB7FSV3DVJcyrpjsGtJx0rOfNEO_Sn708nqxQsBuPzn03YZ2OHi5Q0jLpLpvE-s5XoaAf74nLYKLHtnQ\") \n .build(); \n try { \n Response response = client.newCall(request).execute(); \n } catch (IOException e) { \n e.printStackTrace(); \n } \n } \n} "
- lang: Javacript
label: Node
source: " // Install request by running \"npm install --save request\" \n var request = require(\"request\"); \n var options = { \n method: 'POST', \n url: 'https://api.citivelocity.com/markets/fxgateway/sync/instantfxquote/api/v1', \n qs: { client_id: 'REPLACE_THIS_VALUE' }, \n headers: \n { \n authorization: 'Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEy9q61Vj0ly6PHyTj84qbE5UaKGxf3fdz2ARY15Kszu-zf_SWLloRClpkg6aBQxG9I608HzrBB7FSV3DVJcyrpjsGtJx0rOfNEO_Sn708nqxQsBuPzn03YZ2OHi5Q0jLpLpvE-s5XoaAf74nLYKLHtnQ', \n accept: 'application/json', \n 'content-type': 'application/json' \n }, \n body: \n { \"action\": \"rate-request\", \"senderCompId\": \"IFXCLIENT0\", \"onBehalfOfCompId\": \"IFXCLIENT0\", \"jsonReqId\": \"brs-25-09-2018-01\", \"sendingTime\": \"20180925-14:41:56.807\", \"symbol\": \"ALL\", \"account\": \"Xxxxxxxxxxx\" }, \n json: true }; \n request(options, function (error, response, body) { \n if (error) \n return console.error('Failed: %s', error.message); \n console.log('Success: ', body); \n });"
- lang: Go
label: Go
source: "package main \nimport ( \n\"fmt\" \n\"strings\" \n\"net/http\" \n\"io/ioutil\" \n) \nfunc main() { \nurl := \"https://api.citivelocity.com/markets/fxgateway/sync/instantfxquote/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2\" \npayload := strings.NewReader(\"{ \\\"action\\\": \\\"rate-request\\\", \\\"senderCompId\\\": \\\"IFXCLIENT0\\\", \\\"onBehalfOfCompId\\\": \\\"IFXCLIENT0\\\", \\\"jsonReqId\\\": \\\"brs-25-09-2018-01\\\", \\\"sendingTime\\\": \\\"20180925-14:41:56.807\\\", \\\"symbol\\\": \\\"ALL\\\", \\\"account\\\": \\\"Xxxxxxxxxxx\\\" }\") \nreq, _ := http.NewRequest(\"POST\", url, payload) \nreq.Header.Add(\"content-type\", \"application/json\") \nreq.Header.Add(\"accept\", \"application/json\") \nreq.Header.Add(\"authorization\", \"Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEy9q61Vj0ly6PHyTj84qbE5UaKGxf3fdz2ARY15Kszu-zf_SWLloRClpkg6aBQxG9I608HzrBB7FSV3DVJcyrpjsGtJx0rOfNEO_Sn708nqxQsBuPzn03YZ2OHi5Q0jLpLpvE-s5XoaAf74nLYKLHtnQ\") \nres, _ := http.DefaultClient.Do(req) \ndefer res.Body.Close() \nbody, _ := ioutil.ReadAll(res.Body) \nfmt.Println(res) \nfmt.Println(string(body)) }"
- lang: Swift
label: Swift
source: "import Foundation \nlet headers = [ \n\"content-type\": \"application/json\", \n\"authorization\": \"Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEy9q61Vj0ly6PHyTj84qbE5UaKGxf3fdz2ARY15Kszu-zf_SWLloRClpkg6aBQxG9I608HzrBB7FSV3DVJcyrpjsGtJx0rOfNEO_Sn708nqxQsBuPzn03YZ2OHi5Q0jLpLpvE-s5XoaAf74nLYKLHtnQ\", \n\"accept\": \"application/json\" \nvar request = URLRequest(url: URL(string: \"https://api.citivelocity.com/markets/fxgateway/sync/instantfxquote/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2\")!, \ncachePolicy: .reloadIgnoringLocalAndRemoteCacheData, \ntimeoutInterval: 10.0) \nlet data: [String: Any] = [\"action\": \"rate-request\", \"senderCompId\": \"IFXCLIENT0\", \"onBehalfOfCompId\": \"IFXCLIENT0\", \"jsonReqId\": \"brs-25-09-2018-01\", \"sendingTime\": \"20180925-14:41:56.807\", \"symbol\": \"ALL\", \"account\": \"Xxxxxxxxxxx\"] \nlet jsonData: Data \ndo { \n jsonData = try JSONSerialization.data(withJSONObject: data, options: []) \n request.httpBody = jsonData \n} catch { \n print(\"Error: cannot create JSON from todo\") \n} \nrequest.httpMethod = \"POST\" \nrequest.allHTTPHeaderFields = headers \nlet session = URLSession.shared \nlet task = session.dataTask(with: request, completionHandler: { (data, response, error) in \n guard let data = data, error == nil else { // check for fundamental networking error \n print(\"error=\\(String(describing: error))\") \n return \n } \n if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 { // check for http errors \n print(\"statusCode should be 200, but is \\(httpStatus.statusCode)\") \n print(\"response = \\(String(describing: response))\") \n } \nlet responseString = String(data: data, encoding: .utf8) \n print(\"responseString = \\(String(describing: responseString))\") \n}) \ntask.resume()"
- lang: R
label: R
source: "## install the packages httr,jsonlite \nlibrary(httr) \nlibrary(jsonlite) \nurl<- 'https://api.citivelocity.com/markets/fxgateway/sync/instantfxquote/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2' \nreq<- '{ \"action\": \"rate-request\", \"senderCompId\": \"IFXCLIENT0\", \"onBehalfOfCompId\": \"IFXCLIENT0\", \"jsonReqId\": \"brs-25-09-2018-01\", \"sendingTime\": \"20180925-14:41:56.807\", \"symbol\": \"ALL\", \"account\": \"Xxxxxxxxxxx\" }' \nresp<- POST(url , body=req, add_headers(\"accept\" = \"applicaton/json\",\"authorization\" =\"Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEy9q61Vj0ly6PHyTj84qbE5UaKGxf3fdz2ARY15Kszu-zf_SWLloRClpkg6aBQxG9I608HzrBB7FSV3DVJcyrpjsGtJx0rOfNEO_Sn708nqxQsBuPzn03YZ2OHi5Q0jLpLpvE-s5XoaAf74nLYKLHtnQ\", \"content-type\" = \"application/json\")) \ndata<- (toJSON(content(resp, as = \"parsed\"))) \nprettify(data)"
- lang: Ruby
label: Ruby
source: "require 'uri' \nrequire 'openssl' \nrequire 'net/http' \nurl = URI(\"https://api.citivelocity.com/markets/fxgateway/sync/instantfxquote/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2\") \nhttp = Net::HTTP.new(url.host, url.port) \nhttp.use_ssl = true \nhttp.verify_mode = OpenSSL::SSL::VERIFY_PEER \nrequest = Net::HTTP::Post.new(url) \nrequest[\"content-type\"] = 'application/json' \nrequest[\"accept\"] = 'application/json' \nrequest[\"authorization\"] = 'Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEy9q61Vj0ly6PHyTj84qbE5UaKGxf3fdz2ARY15Kszu-zf_SWLloRClpkg6aBQxG9I608HzrBB7FSV3DVJcyrpjsGtJx0rOfNEO_Sn708nqxQsBuPzn03YZ2OHi5Q0jLpLpvE-s5XoaAf74nLYKLHtnQ' \nrequest.body = \"{ \\\"action\\\": \\\"rate-request\\\", \\\"senderCompId\\\": \\\"IFXCLIENT0\\\", \\\"onBehalfOfCompId\\\": \\\"IFXCLIENT0\\\", \\\"jsonReqId\\\": \\\"brs-25-09-2018-01\\\", \\\"sendingTime\\\": \\\"20180925-14:41:56.807\\\", \\\"symbol\\\": \\\"ALL\\\", \\\"account\\\": \\\"Xxxxxxxxxxx\\\" }\" \nresponse = http.request(request) \nputs response.read_body.force_encoding(\"utf-8\")"
- lang: C#
label: C#
source: "using System; \nusing System.Collections.Generic; \nusing System.Linq; \nusing System.Text; \nusing System; \nusing System.Web; \nusing System.Net; \nusing System.IO; \n \nnamespace ConsoleProgram \n{ \n public class Class1 \n { \n private const string URL = \"https://api.citivelocity.com/markets/fxgateway/sync/instantfxquote/api/v1?client_id=da41c8aa-c96b-437c-ad95-dade40c85fa2\"; \n private const string DATA = @\"{ \\\"action\\\": \\\"rate-request\\\", \\\"senderCompId\\\": \\\"IFXCLIENT0\\\", \\\"onBehalfOfCompId\\\": \\\"IFXCLIENT0\\\", \\\"jsonReqId\\\": \\\"brs-25-09-2018-01\\\", \\\"sendingTime\\\": \\\"20180925-14:41:56.807\\\", \\\"symbol\\\": \\\"ALL\\\", \\\"account\\\": \\\"Xxxxxxxxxxx\\\" }\"; \n \n static void Main(string[] args) \n { \n Class1.CreateObject(); \n } \n \n private static void CreateObject() \n { \n HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL); \n request.Method = \"POST\"; \n request.ContentType = \"application/json\"; \n request.ContentLength = DATA.Length; \n request.Headers[\"authorization\"] = \"Bearer AAIkZGE0MWM4YWEtYzk2Yi00MzdjLWFkOTUtZGFkZTQwYzg1ZmEy9q61Vj0ly6PHyTj84qbE5UaKGxf3fdz2ARY15Kszu-zf_SWLloRClpkg6aBQxG9I608HzrBB7FSV3DVJcyrpjsGtJx0rOfNEO_Sn708nqxQsBuPzn03YZ2OHi5Q0jLpLpvE-s5XoaAf74nLYKLHtnQ\"; \n using (Stream webStream = request.GetRequestStream()) \n using (StreamWriter requestWriter = new StreamWriter(webStream, System.Text.Encoding.ASCII)) \n { \n requestWriter.Write(DATA); \n } \n try \n { \n WebResponse webResponse = request.GetResponse(); \n using (Stream webStream = webResponse.GetResponseStream() ?? Stream.Null) \n using (StreamReader responseReader = new StreamReader(webStream)) \n { \n string response = responseReader.ReadToEnd(); \n Console.Out.WriteLine(response); \n } \n }catch (Exception e) \n { \n Console.Out.WriteLine(\"-----------------\"); \n Console.Out.WriteLine(e.Message); \n } \n \n } \n } \n}"
tags:
- Fxgateway
security:
- OAuth2:
- fxapi
operationId: postFxgatewaySyncInstantfxquoteApiV1
x-operation-id-source: derived
servers:
- url: https://api.citivelocity.com/markets
description: production URL
- url: https://sandbox.api.citivelocity.com/markets
description: sanbox URL
components:
schemas:
Order_Rated:
description: The response will be published via web socket for Rated orders. In case of multiple orders, multiple dealResponses JSON objects will be present in the dealResponses JSON array.
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- dealResponses
properties:
action:
type: string
description: 'Defines the action of the message. Allowed value: order-response.'
example: order-response
jsonReqId:
type: string
example: Req20181011776
description: The unique identifier for the JSON request. Format is alphanumeric.
maxLength: 60
senderCompId:
type: string
description: The Citi-assigned value used to identify the firm sending the message.
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. This was assigned to you during onboarding.
example: Sub Entity
sendingTime:
type: string
description: The time of message transmission. Always expressed in UTC (Universal Time Coordinated, also known as 'GMT.' Format is YYYYMMDD-HH:MM:SS.mmm.
example: 20180820-04:48:29.125
deals:
type: array
items:
required:
- account
- clOrdId
- valueDate
- tradeDate
- ccyPair
- dealtCcy
- orderQty
- side
- fixingCode
- transactTime
- execId
- avgPx
- orderId
- orderStatus
- lastQty
- contAmtValue
- lastPx
- lastSpotRate
- lastForwardPoints
- purposeCode
properties:
account:
type: string
description: Your Citi-assigned client identifier.
example: 109430258
clOrdId:
type: string
description: The order reference you assigned.
example: TEST12345
side:
type: string
enum:
- B
- S
description: Indicates whether you are buying (B) or selling (S) the dealt ccy.
example: B
valueDate:
type: string
description: Populated for Rated deal.
example: '20240502'
tradeDate:
type: string
description: Populated for Rated deal.
example: '20240429'
purposeCode:
type: string
description: Populates with the same value as sent in the incoming request, else null.
ccyPair:
type: string
description: The currency pair that you are trading on.
maxLength: 6
example: GBPUSD
dealtCcy:
type: string
description: The currency for which you supplied the dealt amount.
maxLength: 3
example: GBP
fixingCode:
type: string
description: The fixing code you requested when sending the deal.
example: QOUTED or LDN1500BFIX
transactTime:
type: string
description: The time of the transaction represented by this single order occurrance.
example: Mon Apr 29 12:50:33 IST 2024
execId:
type: string
description: The unique identifier of the execution message.
example: Alphanumeric and special character hyphen (-)
avgPx:
type: number
description: The calculated average price of all fills on this order.
example: 0
orderId:
type: number
description: The Citi-assigned order ID. This will be the same value as sent in orderId field of Acknowledged and Accepted deal.
example: 3714864
orderStatus:
type: string
description: The current status of the deal.
example: COMPLETED
contAmtValue:
type: number
description: The counter amount, i.e., non dealt amount.
example: 54321.21
lastPx:
type: number
description: The Outright Rate.
example: 1.51446
lastQty:
type: number
description: Amount.
example: 12345.56
lastSpotRate:
type: number
description: Spot Rate.
example: 1.5144
lastForwardPoints:
type: number
description: Forward Points.
example: 0
lastForwardPoints2:
type: number
description: Forward Points. Applicable for swap orders only.
example: 6.0e-06
valueDate2:
type: string
description: Far Leg Value Date. Applicable for SWAP orders only.
example: 20250525
orderQty2:
type: number
description: Far Leg Amount. Applicable for SWAP orders only.
example: 1000
settlCurrAmt:
type: number
description: Far Counter Amount. Applicable for SWAP orders only.
example: 54321.21
securityId:
type: string
description: MIFID Field. ISIN Code for the FX Security.
securityIdSource:
type: string
description: 'MIFID Field. Allowed Values: 4 = ISIN.'
legSecurityId:
type: string
description: MIFID Field. For SWAP Deals only.
legSecurityIdSource:
type: string
description: MIFID Field. For SWAP Deals only.
lastCapacity:
type: string
description: 'MIFID Field. Allowed Values: 4 = Principal.'
tradeReportingIndicator:
type: string
description: MIFID Field
matchType:
type: string
description: MIFID Field
example:
senderCompId: TESTCLIENT2
onBehalfOfCompId: TCL0
action: order-response
jsonReqId: e4c0bb9-6
sendingTime: 20240429-07:20:36.683
senderSubId: System
dealResponses:
- account: LDN|xxxxxxxxxx
clOrdId: TEST98
side: S
fixingCode: QUOTED
transactTime: Mon Apr 29 07:20:35 GMT 2024
valueDate: '20240502'
tradeDate: '20240429'
dealtCcy: USD
ccyPair: EURUSD
execId: '323595562789'
avgPx: '7.7262'
orderId: '3714864'
orderStatus: COMPLETED
lastQty: '1'
contAmtValue: '0.13'
lastPx: '7.7262'
lastSpotRate: '7.7262'
lastForwardPoints: '0'
purposeCode: 'null'
Order_Acknowledged_Or_Rejected:
description: The response will be published via web socket for Acknowledged or Rejected orders. In case of multiple orders, multiple dealResponses JSON objects will be present in the dealResponses JSON array. Response array can be of both Ack, Nack. This is also applicable for cancelled and cancel rejection. Upon receipt of the deal request, you will receive a status update as ACKNOWLEDGED (with orderId) or REJECTED (without orderId).
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- dealResponses
properties:
action:
type: string
example: order-response
description: 'Defines the action of the message. Allowed value: order-response.'
jsonReqId:
type: string
example: Req20181011776
description: The unique identifier for the JSON request. Format is alphanumeric.
maxLength: 60
senderCompId:
type: string
description: The Citi-assigned value used to identify the firm sending the message.
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. This was assigned to you during onboarding.
example: Sub Entity
sendingTime:
type: string
description: The time of message transmission. Always expressed in UTC (Universal Time Coordinated, also known as 'GMT.' Format is YYYYMMDD-HH:MM:SS.mmm.
example: 20180820-04:48:29.125
deals:
type: array
items:
required:
- account
- clOrdId
- ccyPair
- dealtCcy
- orderQty
- side
- fixingCode
- transactTime
- execId
- avgPx
- orderStatus
- purposeCode
properties:
account:
type: string
description: Your Citi-assigned client identifier.
example: 109430258
clOrdId:
type: string
description: The order reference you assigned.
example: TEST12345
side:
type: string
enum:
- B
- S
description: Indicates whether you are buying (B) or selling (S) the dealt ccy.
example: B
valueDate:
type: string
description: Populated for Acknowledged deal.
example: '20240502'
tradeDate:
type: string
description: Populated for Acknowledged deal.
example: '20240429'
purposeCode:
type: string
description: Populates with the same value as sent in the incoming request, else null.
ccyPair:
type: string
description: The currency pair that you are trading on.
maxLength: 6
example: GBPUSD
dealtCcy:
type: string
description: The currency for which you supplied the dealt amount.
maxLength: 3
example: GBP
fixingCode:
type: string
description: The fixing code you requested when sending the deal.
example: QOUTED
transactTime:
type: string
description: The time of the transaction represented by this single order occurrance.
example: Mon Apr 29 12:50:33 IST 2024
execId:
type: string
description: Populates as 0 for an Acknowledged deal or a unique identifier for a Rejected deal.
example: 0 (or) Alphanumeric & special character hyphen (-)
avgPx:
type: number
description: The calculated average price of all fills on this order.
example: 0
orderId:
type: number
description: The Citi-assigned order ID for an Acknowledged deal. This field is not populated for Rejected deals.
example: 3714864
orderStatus:
type: string
description: The current status of the deal.
example: ACKNOWLEDGED or REJECTED
lastQty:
type: number
description: Populates with value 0 only for Acknowledged deals.
example: 0
cumQty:
type: number
description: Populates with value 0 only for Rejected deals.
leavesQty:
type: number
description: Populates with value 0 only for Rejected deals.
execType:
type: number
description: Populates with value 8 for Rejected deals. Does not get populated for Acknowledged deals.
example: 8
ordRejReason:
type: number
description: Applicable only for Rejected deals. Contains the rejection code.
example: 99
text:
type: string
description: Applicable only for Rejected deals. Contains actual rejection reason.
example: 0
secondaryClOrdId:
type: string
description: Secondary order reference.
example: OR12345
valueDate2:
type: string
description: Far Leg Value Date. Applicable for SWAP orders only. Date format is yyyyMMdd.
example: 20250525
orderQty2:
type: string
description: Far Leg Amount. Applicable for SWAP orders only.
example: 1000
example:
senderCompId: TESTCLIENT0
onBehalfOfCompId: TCL0
action: order-response
jsonReqId: e4c0bb9-6
sendingTime: 20240429-07:20:36.683
senderSubId: System
dealResponses:
- account: LDN|xxxxxxxxxx
clOrdId: TEST98
side: S
fixingCode: QUOTED
transactTime: Mon Apr 29 07:20:35 GMT 2024
valueDate: '20240502'
tradeDate: '20240429'
dealtCcy: USD
ccyPair: EURUSD
execId: '0'
avgPx: '0.0'
orderId: '3714864'
orderStatus: ACKNOWLEDGED
lastQty: '0'
purposeCode: 'null'
FXBenchmarkOrder:
type: object
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- deals
properties:
action:
type: string
description: 'The service you are requesting. Allowed values: NEW.'
jsonReqId:
type: string
example: Req20181011776
description: The unique identifier for the JSON request. Format is alphanumeric.
maxLength: 60
senderCompId:
type: string
description: The Citi-assigned value used to identify the message sender. This was assigned to you during onboarding.
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the message sender. This was assigned to you during onboarding.
example: Sub Entity
sendingTime:
type: string
description: 'The time of the message transmission expressed in UTC (Universal Time Coordinated, also known as "GMT"). Format: YYYYMMDD-HH:MM:SS.mmm.'
example: 20180820-04:48:29.125
deals:
type: array
items:
required:
- account
- clOrdId
- tenor
- ccyPair
- dealtCcy
- orderQty
- side
- fixingCode
properties:
account:
type: string
description: Your Citi-assigned client identifier.
example: '109430258'
clOrdId:
type: string
description: The unique identifier that you assign to the order. Max 32 characters. Only alphanumeric characters are allowed.
example: TEST12345
secondaryClOrdId:
type: string
description: The secondary unique identifier that you assign to the order.
example: OR12345
tenor:
type: string
description: "The following FX standard tenors are supported:\n \n|Tenor | Value |\n|---------------|-------|\nOvernight | ON |\nTom/Next | TN |\nSpot | SP |\nSpot/Next | SN |\nOne Week | 1W |\nTwo Week | 2W |\nThree Week | 3W |\nOne Month | 1M |\nTwo Month | 2M |\nThree Month | 3M |\nFour Month | 4M |\nFive Month | 5M |\nSix Month | 6M |\nSeven Month | 7M |\nEight Month | 8M |\nNine Month | 9M |\nTen Month | 10M |\nEleven Month | 11M |\nOne Year | 1Y |\nFifteen Months | 15M |\nEighteen Months | 18M |\nTwenty One Months| 21M |\nTwo Years | 2Y |\nSpecify a Broken Date| BROKEN |\n \nBroken Dates (the dates that fall between the tenors) are supported. To supply a Broken Date, the Tenor mut be specified as “BROKEN” and a Value Date specified.\n\nIf SP is supplied, this implies a SPOT instrument is requested. Otherwise the trade will be a forward. For SWAP orders, this field should have a \"-\" (hyphen) separated value e.g.: 1W-1M."
example: SP
valueDate:
type: string
description: The value date the order is being placed for. Required if tenor = ‘BROKEN’. Format is yyyyMMdd.
example: '20250525'
tradeDate:
type: string
description: Only required for Advanced Orders. If a future trade date is supplied, the trade will be classified as an Advanced Order and the request will only be ‘accepted’ on the execution date. Note that the advanced order feature cannot be used when requesting the next available fixing.
example: '20250525'
ccyPair:
type: string
description: "Please contact your Citi Representative to obtain a list of currency pairs currently supported by CitiFX Gateway.\n\nCitiFX Gateway can accept currency pairs in any of the below formats:\n- Alpha Sorted\n- BaseTerm\n- Base/Term\n- TermBase\n- Term/Base\n\nNote: Specifying term first in the currency pair field does not signify an inverted quote. Instead the following logic is used to determine if an inverted quote is being requested. \n - If inverseCcy parameter value is blank, then market convention will be used\n - If inverseCcy is present and is the Base Currency, then market convention will be used\n - If inverseCcy is present and is the Term Currency, then Inverted Quote will be used\n - If inverseCcy is present and is neither the Base or the Term Currency, then request will be rejected\n \nRefer to the examples in the table below indicating the market convention / inverted quoted in the request message.\n\n|Currency Pair | Inverse Curreny | Dealt Currency | Side | Last Spot Rate| Last Forward Points| Outright Rate | Remarks|\n|--------------|-----------------|----------------|-------|-----------------|--------------------|----------------|--------|\nUSDSGD (or) SGDUSD | |SGD | 2 (Sell SGD) | 1.32618 | 0.000123 | 1.326303 | If value of inverseCcy is blank, then market convention will be used. \nUSDSGD (or) SGDUSD | |USD |1 (BUY USD)| 1.32616 | 0.000123 | 1.326283 | If value of inverseCcy is blank, then market convention will be used\nUSDSGD (or) SGDUSD | USD | USD| 1 | 1.32616| 0.000123| 1.326283| If value of inverseCcy is NOT blank and is equal to Base Currency then market convention will be used\nUSDSGD (or) SGDUSD | SGD | SGD |2 | 0.75399 | -0.0000699 | 0.7539201 |If value of inverseCcy is sent and is equal to Term Currency then Inverted Quote will be used"
maxLength: 6
example: GBPUSD
dealtCcy:
type: string
description: The currency that you wish to deal on.
maxLength: 3
example: GBP
inverseCcy:
type: string
description: This value should be sent if you expect an inverted rate. Not required for market convention. Refer to the Currency Pair description for more information.
maxLength: 3
example: GBP
orderQty:
type: number
description: The order quanitity of the dealt currency.
example: 1000
side:
type: string
enum:
- B
- S
description: The Buy Or Sell Indicator from your perspective. B=Client buys dealt ccy S=Client sells dealt ccy.
example: B
fixingCode:
type: string
description: "\n| DESCRIPTION | TIME | GMTEQUIV | SHORTCODE |\n|---------------------------|-------|----------|------------|\nWMR Australian 10:00 Fixing | 1000 | 0 | SYD1000WMR\nBFIX Australian 10:00 Fixing| 1000 | 0 | SYD1000BFIX\nBFIX Tokyo 09:00 Fixing| 900| 0 |TOK0900BFIX\nWMR Tokyo 09:00 Fixing| 900| 0 |TOK0900WMR\nWMR Tokyo 09:55 Fixing| 955| 55| TOK0955WMR\nBFIX Tokyo 11:00 Fixing |1100| 200| TOK1100BFIX\nWMR Tokyo 11:00 Fixing| 1100| 200 |TOK1100WMR\nBFIX Tokyo 12:00 Fixing| 1200| 300| TOK1200BFIX\nWMR Tokyo 12:00 Fixing| 1200| 300| TOK1200WMR\nWMR Tokyo 13:00 Fixing| 1300| 400| TOK1300BFIX\nWMR Tokyo 14:00 Fixing| 1400| 500| TOK1400WMR\nBFIX Tokyo 14:00 Fixing| 1400| 500| TOK1400BFIX\nWMR Tokyo 15:00 Fixing| 1500| 600| TOK1500WMR\nBFIX Tokyo 15:00 Fixing| 1500| 600| TOK1500BFIX\nWMR Tokyo 16:00 Fixing| 1600| 700| TOK1600WMR\nBFIX Tokyo 16:00 Fixing| 1600| 700| TOK1600BFIX\nWMR London 08:00 Fixing| 800 |700| LDN0800WMR\nBFIX London 08:00 Fixing| 800| 700| LDN0800BFIX\nWMR London 09:00 Fixing| 900| 800| LDN0900WMR\nBFIX London 09:00 Fixing| 900| 800| LDN0900BFIX\nBFIX London 10:00 Fixing| 1000| 900 |LDN1000BFIX\nWMR London 10:00 Fixing |1000| 900 |LDN1000WMR\nBFIX London 11:00 Fixing| 1100| 1000| LDN1100BFIX\nWMR London 11:00 Fixing |1100| 1000| LDN1100WMR\nBFIX London 12:00 Fixing| 1200| 1100| LDN1200BFIX\nWMR London 12:00 Fixing |1200 |1100 |LDN1200WMR\nWMR London 13:00 Fixing |1300 |1200 |LDN1300WMR\nBFIX London 13:00 Fixing| 1300| 1200| LDN1300BFIX\nWMR London 14:00 Fixing |1400 |1300 |LDN1400WMR\nBFIX London 14:00 Fixing| 1400| 1300| LDN1400BFIX\nWMR London 15:00 Fixing |1500 |1400 |LDN1500WMR\nBFIX London 15:00 Fixing| 1500| 1400| LDN1500BFIX\nBFIX London 16:00 Fixing| 1600| 1500| LDN1600BFIX\nWMR London 16:00 Fixing |1600 |1500 |LDN1600WMR\nBFIX New York 12:00 Fixing| 1200| 1600| NYK1200BFIX\nWMR New York 12:00 Fixing |1200 |1600 |NYK1200WMR\nBFIX New York 13:00 Fixing| 1300| 1700 |NYK1300BFIX\nWMR New York 13:00 Fixing |1300 |1700 |NYK1300WMR\nBFIX New York 14:00 Fixing| 1400| 1800| NYK1400BFIX\nWMR New York 14:00 Fixing |1400 |1800 |NYK1400WMR\nBFIX New York 15:00 Fixing| 1500| 1900| NYK1500BFIX\nWMR New York 15:00 Fixing |1500 |1900 |NYK1500WMR\nWMR New York 16:00 Fixing |1600 |2000 |NYK1600WMR\nBFIX New York 16:00 Fixing| 1600| 2000| NYK1600BFIX\n\nYou must be permissioned to a fixing by Citi's Benchmark system in order to successfully add a trade against it. Otherwise the trade will be rejected. \n\nContact your Citi Representative for fixing cut-off times. GMT Equivalent time will change during DST changes for SYD, LDN, and NY Fixings.\n "
example: QOUTED
purposeCode:
type: string
description: Optional field for the purpose code of the deal booking.
valueDate2:
type: string
description: The Far Leg Value Date. Only required for Swap requests.
example: '20250525'
orderQty2:
type: number
description: The Far Leg Amount. Only required for Swap requests.
example: 120000
transactTime:
type: string
description: The time of the transaction represented by this single order occurrance.
example: Mon Apr 29 12:50:33 IST 2024
securityId:
type: string
description: MIFID Field. ISIN Code for the FX Security. See the Additional Information tab for details on MIFID fields.
securityIdSource:
type: string
description: 'MIFID Field. Allowed Values: 4 = ISIN. See the Additional Information tab for details on MIFID fields.'
legSecurityId:
type: string
description: MIFID Field. For SWAP Deals only. See the Additional Information tab for details on MIFID fields.
legSecurityIdSource:
type: string
description: MIFID Field. For SWAP Deals only. See the Additional Information tab for details on MIFID fields.
marketSegmentId:
type: string
description: "MIFID Field. Identifies the market segment. Allowed values are: \n 1. XOFF – Off Market Transaction (default). \n 2. SEF – This entity is not an MTF. \n 3. MTF – Multilateral Trading Facility (MTF). \n 4. MIF – MIFID Opt In (Non MTF’s who want to receive MIFID Fields). See the Additional Information tab for details on MIFID fields."
example:
action: NEW
senderCompId: TESTCLIENT0
onBehalfOfCompId: TCL0
jsonReqId: e4c0bb9-6
sendingTime: Mon Apr 29 12:50:33 IST 2024
deals:
- account: LDN|xxxxxxxxxx
clOrdId: TEST98
tenor: BROKEN
valueDate: '20250522'
ccyPair: EURUSD
dealtCcy: USD
orderQty: '200'
side: S
fixingCode: QUOTED
transactTime: Mon Apr 29 12:50:33 IST 2024
Order_Accepted:
description: The response will be published via web socket for Accepted orders. In case of multiple orders, multiple dealResponses JSON objects will be present in the dealResponses JSON array. This is the second response for a Benchmark order that has been accepted. It will include the original order details including fixing code such as “NYK1500WMR” with the same orderId provided in the Acknowledged status update.
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- dealResponses
properties:
action:
type: string
description: 'Defines the action of the message. Allowed value: order-response.'
example: order-response
jsonReqId:
type: string
example: Req20181011776
description: The unique identifier for the JSON request. Format is alphanumeric.
maxLength: 60
senderCompId:
type: string
description: The Citi-assigned value used to identify the firm sending the message.
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. This was assigned to you during onboarding.
example: Sub Entity
sendingTime:
type: string
description: The time of message transmission. Always expressed in UTC (Universal Time Coordinated, also known as 'GMT.' Format is YYYYMMDD-HH:MM:SS.mmm.
example: 20180820-04:48:29.125
deals:
type: array
items:
required:
- account
- clOrdId
- ccyPair
- dealtCcy
- orderQty
- side
- fixingCode
- transactTime
- execId
- avgPx
- orderStatus
- orderId
- purposeCode
properties:
account:
type: string
description: Your Citi-assigned client identifier.
example: 109430258
clOrdId:
type: string
description: The order reference you assigned.
example: TEST12345
side:
type: string
enum:
- B
- S
description: Indicates whether you are buying (B) or selling (S) the dealt ccy.
valueDate:
type: string
description: Populated for Accepted deal.
example: '20240502'
tradeDate:
type: string
description: Populated for Accepted deal.
example: '20240429'
purposeCode:
type: string
description: Populates with the same value as sent in the incoming request, else null.
ccyPair:
type: string
description: The currency pair that you are trading on.
maxLength: 6
example: GBPUSD
dealtCcy:
type: string
description: The currency for which you supplied the dealt amount.
maxLength: 3
example: GBP
fixingCode:
type: string
description: The fixing code you requested when sending the deal.
example: QOUTED or LDN1500BFIX
transactTime:
type: string
description: The time of the transaction represented by this single order occurrance.
example: Mon Apr 29 12:50:33 IST 2024
execId:
type: string
description: Populates as 0 for an Accepted deal.
example: 0
avgPx:
type: number
description: The calculated average price of all fills on this order.
example: 0
orderId:
type: number
description: The Citi-assigned order ID, same as an Acknowledged deal.
example: 3714864
orderStatus:
type: string
description: The current status of the deal.
example: ACCEPTED
lastQty:
type: number
description: Populates with value 0 only for Acknowledged deals.
example: 0
example:
senderCompId: TESTCLIENt0
onBehalfOfCompId: TCL0
action: order-response
jsonReqId: e4c0bb9-6
sendingTime: 20240429-07:20:36.683
senderSubId: System
dealResponses:
- account: LDN|xxxxxxxxxx
clOrdId: TEST98
side: S
fixingCode: QUOTED
transactTime: Mon Apr 29 07:20:35 GMT 2024
valueDate: '20240502'
tradeDate: '20240429'
dealtCcy: USD
ccyPair: EURUSD
execId: '0'
avgPx: '0.0'
orderId: '3714864'
orderStatus: ACCEPTED
lastQty: '0'
purposeCode: 'null'
Order_Rated_2:
description: RATED response can be consumed only through “Reporting API” request. If the Bench order is in Completed status, below will be the format in which response will be received. In case of multiple orders, multiple dealResponse JSON objects will be present in the dealResponses JSON array. Response array can be of both Ack / Nack.
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- dealResponses
properties:
action:
type: string
example: order-response
description: 'Defines the action of the message. Allowed value: order-response.'
jsonReqId:
type: string
example: Req20181011776
description: The unique identifier for the JSON request. Format is alphanumeric.
maxLength: 60
senderCompId:
type: string
description: The Citi-assigned value used to identify the firm sending the message.
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. This was assigned to you during onboarding.
example: Sub Entity
sendingTime:
type: string
description: The time of message transmission. Always expressed in UTC (Universal Time Coordinated, also known as 'GMT.' Format is YYYYMMDD-HH:MM:SS.mmm.
example: 20180820-04:48:29.125
deals:
type: array
items:
required:
- account
- clOrdId
- valueDate
- tradeDate
- ccyPair
- dealtCcy
- orderQty
- side
- fixingCode
- transactTime
- execId
- avgPx
- orderId
- orderStatus
- lastQty
- contAmtValue
- lastPx
- lastSpotRate
- lastForwardPoints
- purposeCode
properties:
account:
type: string
description: Your Citi-assigned client identifier.
example: 109430258
clOrdId:
type: string
description: The order reference you assigned.
example: TEST12345
side:
type: string
enum:
- B
- S
description: Indicates whether you are buying (B) or selling (S) the dealt ccy.
example: B
valueDate:
type: string
description: Populated for Rated deal.
example: 20240502
tradeDate:
type: string
description: Populated for Rated deal.
example: 20240429
purposeCode:
type: string
description: Populates with the same value as sent in the incoming request, else null.
ccyPair:
type: string
description: The currency pair that you are trading on.
maxLength: 6
example: GBPUSD
dealtCcy:
type: string
description: The currency for which you supplied the dealt amount.
maxLength: 3
example: GBP
fixingCode:
type: string
description: The fixing code you requested when sending the deal.
example: QOUTED or LDN1500BFIX
transactTime:
type: string
description: The time of the transaction represented by this single order occurrance.
example: Mon Apr 29 12:50:33 IST 2024
execId:
type: string
description: Unique identifier of execution message.
example: Alphanumeric & special character hyphen (-)
avgPx:
type: number
description: Calculated average price of all fills on this order.
example: 0
orderId:
type: number
description: Citi-assigned order ID. This will be the same value as sent in orderId field of Acknowledged and Accepted deal.
example: 3714864
orderStatus:
type: string
example: COMPLETED
description: The current status of the deal.
contAmtValue:
type: number
description: Counter Amount i.e. non dealt amount.
example: 54321.21
lastPx:
type: number
description: Outright Rate.
example: 1.51446
lastQty:
type: number
description: Amount.
example: 12345.56
lastSpotRate:
type: number
description: Spot Rate.
example: 1.5144
lastForwardPoints:
type: number
description: Forward Points.
example: 0
lastForwardPoints2:
type: number
description: Far Forward Points. Applicable for SWAP orders only.
example: 6.0e-06
valueDate2:
type: string
description: Far Leg Value Date. Applicable for SWAP orders only
example: 20250525
orderQty2:
type: number
description: Far Leg Amount. Applicable for SWAP orders only.
example: 1000
settlCurrAmt:
type: number
description: Far Counter Amount. Applicable for SWAP orders only
example: 54321.21
securityId:
type: string
description: MIFID Field. ISIN Code for the FX Security.
securityIdSource:
type: string
description: 'MIFID Field. Allowed Values: 4 = ISIN.'
legSecurityId:
type: string
description: MIFID Field. For SWAP Deals only.
legSecurityIdSource:
type: string
description: MIFID Field. For SWAP Deals only.
lastCapacity:
type: string
description: 'MIFID Field. Allowed Values: 4 = Principal.'
tradeReportingIndicator:
type: string
description: MIFID Field
matchType:
type: string
description: MIFID Field
example:
senderCompId: TESTCLIENT2
onBehalfOfCompId: TCL0
action: order-response
jsonReqId: e4c0bb9-6
sendingTime: 20240429-07:20:36.683
senderSubId: System
dealResponses:
- account: LDN|xxxxxxxxxx
clOrdId: TEST98
side: S
fixingCode: QUOTED
transactTime: Mon Apr 29 07:20:35 GMT 2024
valueDate: '20240502'
tradeDate: '20240429'
dealtCcy: USD
ccyPair: EURUSD
execId: '323595562789'
avgPx: '7.7262'
orderId: '3714864'
orderStatus: COMPLETED
lastQty: '1'
contAmtValue: '0.13'
lastPx: '7.7262'
lastSpotRate: '7.7262'
lastForwardPoints: '0'
purposeCode: 'null'
Order_Acknowledged_Or_Rejected_2:
description: Response for Order will be published as HTTP response for order acknowledgement/Rejection. Bidding acceptance and execution completion can be retrieved via subsequent ENQUIRY request. Upon receipt of the deal request, you will receive a status update as ACKNOWLEDGED (with orderId) or REJECTED (without orderId). In case of multiple orders, multiple dealResponse JSON objects will be present in the dealResponses JSON array. Response array can be of both Ack / Nack.
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- dealResponses
properties:
action:
type: string
example: order-response
description: 'Defines the action of the message. Allowed value: order-response.'
jsonReqId:
type: string
example: Req20181011776
description: The unique identifier for the JSON request. Format is alphanumeric.
maxLength: 60
senderCompId:
type: string
description: The Citi-assigned value used to identify the firm sending the message.
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. This was assigned to you during onboarding.
example: Sub Entity
sendingTime:
type: string
description: The time of message transmission. Always expressed in UTC (Universal Time Coordinated, also known as 'GMT.' Format is YYYYMMDD-HH:MM:SS.mmm.
example: 20180820-04:48:29.125
deals:
type: array
items:
required:
- account
- clOrdId
- ccyPair
- dealtCcy
- orderQty
- side
- fixingCode
- transactTime
- execId
- avgPx
- orderStatus
- purposeCode
properties:
account:
type: string
description: Your Citi-assigned client identifier.
example: 109430258
clOrdId:
type: string
description: The order reference you assigned.
example: TEST12345
side:
type: string
enum:
- B
- S
description: Indicates whether you are buying (B) or selling (S) the dealt ccy.
example: B
valueDate:
type: string
description: Populated for Acknowledged deal.
example: 20240502
tradeDate:
type: string
description: Populated for Acknowledged deal.
example: 20240429
purposeCode:
type: string
description: Populates with the same value as sent in the incoming request, else null.
ccyPair:
type: string
description: The currency pair that you are trading on.
maxLength: 6
example: GBPUSD
dealtCcy:
type: string
description: The currency for which you supplied the dealt amount.
maxLength: 3
example: GBP
fixingCode:
type: string
description: The fixing code you requested when sending the deal.
example: QOUTED
transactTime:
type: string
description: The time of the transaction represented by this single order occurrance.
example: Mon Apr 29 12:50:33 IST 2024
execId:
type: string
description: Populates as 0 for ACKNOWLEDGED deal. A unique identifier for a REJECTED deal.
example: 0 (or) Alphanumeric & special character hyphen (-)
avgPx:
type: number
description: Calculated average price of all fills on this order.
example: 0
orderId:
type: number
description: The Citi-assigned order ID for an Acknowledged deal. This field is not populated for Rejected deals.
example: 3714864
orderStatus:
type: string
description: The current status of the deal.
example: ACKNOWLEDGED or REJECTED
lastQty:
type: number
description: Populates with value 0 only for ACKNOWLEDGED deals.
example: 0
cumQty:
type: number
description: Populates with value 0 only for REJECTED deals.
leavesQty:
type: number
description: Populates with value 0 only for REJECTED deals.
execType:
type: number
description: 'Populates with value : 8 for REJECTED deals. This field is not populated for ACKNOWLEDGED deals.'
example: 8
ordRejReason:
type: number
description: Only for REJECTED deals. Contains rejection code.
example: 99
text:
type: string
description: Only for REJECTED deals. Contains actual rejection reason.
example: 0
secondaryClOrdId:
type: string
description: Secondary client order reference.
example: OR12345
valueDate2:
type: string
description: 'Far Leg Value Date. Applicable for SWAP orders only. Date Format: yyyyMMdd.'
example: 20250525
orderQty2:
type: number
description: Far Leg Amount. Applicable for SWAP orders only.
example: 1000
example:
senderCompId: TESTCLIENT0
onBehalfOfCompId: TCL0
action: order-response
jsonReqId: e4c0bb9-6
sendingTime: 20240429-07:20:36.683
senderSubId: System
dealResponses:
- account: LDN|xxxxxxxxxx
clOrdId: TEST98
side: S
fixingCode: QUOTED
transactTime: Mon Apr 29 07:20:35 GMT 2024
valueDate: '20240502'
tradeDate: '20240429'
dealtCcy: USD
ccyPair: EURUSD
execId: '0'
avgPx: '0.0'
orderId: '3714864'
orderStatus: ACKNOWLEDGED
lastQty: '0'
purposeCode: 'null'
Order_Accepted_2:
description: This is the second response for a Benchmark order that has been accepted. It will include the original order details including fixing code such as “NYK1500WMR” with the same orderId provided in the Acknowledged status update. This response can be consumed only through “Reporting API” request. In case of multiple orders, multiple dealResponse JSON objects will be present in the dealResponses JSON array. Response array can be of both Ack / Nack.
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- dealResponses
properties:
action:
type: string
example: order-response
description: 'Defines the action of the message. Allowed value: order-response.'
jsonReqId:
type: string
example: Req20181011776
description: The unique identifier for the JSON request. Format is alphanumeric.
maxLength: 60
senderCompId:
type: string
description: The Citi-assigned value used to identify the firm sending the message.
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. This was assigned to you during onboarding.
example: Sub Entity
sendingTime:
type: string
description: The time of message transmission. Always expressed in UTC (Universal Time Coordinated, also known as 'GMT.' Format is YYYYMMDD-HH:MM:SS.mmm.
example: 20180820-04:48:29.125
deals:
type: array
items:
required:
- account
- clOrdId
- ccyPair
- dealtCcy
- orderQty
- side
- fixingCode
- transactTime
- execId
- avgPx
- orderStatus
- orderId
- purposeCode
properties:
account:
type: string
description: Your Citi-assigned client identifier.
example: 109430258
clOrdId:
type: string
description: The order reference you assigned.
example: TEST12345
side:
type: string
enum:
- B
- S
description: Indicates whether you are buying (B) or selling (S) the dealt ccy.
valueDate:
type: string
description: Populated for Accepted deal.
example: 20240502
tradeDate:
type: string
description: Populated for Accepted deal.
example: 20240429
purposeCode:
type: string
description: Populates with the same value as sent in the incoming request, else null.
ccyPair:
type: string
description: The Currency Pair that you are dealing on. CCY1CCY2.
maxLength: 6
example: GBPUSD
dealtCcy:
type: string
description: The currency for which you supplied the dealt amount.
maxLength: 3
example: GBP
fixingCode:
type: string
description: The fixing code you requested when sending the deal.
example: QOUTED or LDN1500BFIX
transactTime:
type: string
description: The time of the transaction represented by this single order occurrance.
example: Mon Apr 29 12:50:33 IST 2024
execId:
type: string
description: Populates as 0 for ACCEPTED deal.
example: 0
avgPx:
type: number
description: Calculated average price of all fills on this order.
example: 0
orderId:
type: number
description: Citi assigned order id. Same as in ACKNOWLEDGED deal.
example: 3714864
orderStatus:
type: string
example: ACCEPTED
description: The current status of the deal.
lastQty:
type: number
description: Populates with value 0 only for ACKNOWLEDGED deals.
example: 0
example:
senderCompId: TESTCLIENT0
onBehalfOfCompId: TCL0
action: order-response
jsonReqId: e4c0bb9-6
sendingTime: 20240429-07:20:36.683
senderSubId: System
dealResponses:
- account: LDN|xxxxxxxxxx
clOrdId: TEST98
side: S
fixingCode: QUOTED
transactTime: Mon Apr 29 07:20:35 GMT 2024
valueDate: '20240502'
tradeDate: '20240429'
dealtCcy: USD
ccyPair: EURUSD
execId: '0'
avgPx: '0.0'
orderId: '3714864'
orderStatus: ACCEPTED
lastQty: '0'
purposeCode: 'null'
FXBenchMarkOrder:
type: object
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- deals
properties:
action:
type: string
description: 'The service you are requesting. Allowed value: NEW.'
jsonReqId:
type: string
example: Req20181011776
description: The unique identifier for the JSON request. Format is alphanumeric.
maxLength: 60
senderCompId:
type: string
description: The Citi-assigned value used to identify the message sender. This was assigned to you during onboarding.
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the message sender. This was assigned to you during onboarding.
example: Sub Entity
sendingTime:
type: string
description: 'The time of the message transmission expressed in UTC (Universal Time Coordinated, also known as "GMT"). Format: YYYYMMDD-HH:MM:SS.mmm.'
example: 20180820-04:48:29.125
deals:
type: array
items:
required:
- account
- clOrdId
- tenor
- ccyPair
- dealtCcy
- orderQty
- side
- fixingCode
properties:
account:
type: string
description: Your Citi-assigned client identifier.
example: '109430258'
clOrdId:
type: string
description: The unique identifier that you assign to the order. Max 32 characters. Only alphanumeric characters are allowed.
example: TEST12345
secondaryClOrdId:
type: string
description: The secondary unique identifier that you assign to the order.
example: OR12345
tenor:
type: string
description: "The following FX standard tenors are supported:\n \n|Tenor | Value |\n|---------------|-------|\nOvernight | ON |\nTom/Next | TN |\nSpot | SP |\nSpot/Next | SN |\nOne Week | 1W |\nTwo Week | 2W |\nThree Week | 3W |\nOne Month | 1M |\nTwo Month | 2M |\nThree Month | 3M |\nFour Month | 4M |\nFive Month | 5M |\nSix Month | 6M |\nSeven Month | 7M |\nEight Month | 8M |\nNine Month | 9M |\nTen Month | 10M |\nEleven Month | 11M |\nOne Year | 1Y |\nFifteen Months | 15M |\nEighteen Months | 18M |\nTwenty One Months| 21M |\nTwo Years | 2Y |\nSpecify a Broken Date| BROKEN |\n \nBroken Dates (the dates that fall between the tenors) are supported. To supply a Broken Date, the Tenor mut be specified as “BROKEN” and a Value Date specified.\n\nIf SP is supplied, this implies a SPOT instrument is requested. Otherwise the trade will be a forward. For SWAP orders, this field should have a \"-\" (hyphen) separated value e.g.: 1W-1M."
example: SP
valueDate:
type: string
description: 'The value date the order is being placed for. Required if tenor = ‘BROKEN’. Format: yyyyMMdd.'
example: 20250525
tradeDate:
type: string
description: 'Only required for Advanced Orders. If a future trade date is supplied, this trade is classified as an “Advanced Order.” If sent to FX Benchmark, the request will only be ‘Accepted’ on the execution date. Note that the advanced order feature cannot be used when requesting the next available fixing. Format: yyyyMMdd.'
example: 20250525
ccyPair:
type: string
description: "Please contact your Citi Representative to obtain a list of currency pairs currently supported by CitiFX Gateway.\n\nCitiFX Gateway can accept currency pairs in any of the below formats:\n- Alpha Sorted\n- BaseTerm\n- Base/Term\n- TermBase\n- Term/Base\n\nNote: Specifying term first in the currency pair field does not signify an inverted quote. Instead the following logic is used to determine if an inverted quote is being requested. \n - If inverseCcy parameter value is blank, then market convention will be used\n - If inverseCcy is present and is the Base Currency, then market convention will be used\n - If inverseCcy is present and is the Term Currency, then Inverted Quote will be used\n - If inverseCcy is present and is neither the Base or the Term Currency, then request will be rejected\n \nRefer to the examples in the table below indicating the market convention / inverted quoted in the request message.\n\n|Currency Pair | Inverse Curreny | Dealt Currency | Side | Last Spot Rate| Last Forward Points| Outright Rate | Remarks|\n|--------------|-----------------|----------------|-------|-----------------|--------------------|----------------|--------|\nUSDSGD (or) SGDUSD | |SGD | 2 (Sell SGD) | 1.32618 | 0.000123 | 1.326303 | If value of inverseCcy is blank, then market convention will be used. \nUSDSGD (or) SGDUSD | |USD |1 (BUY USD)| 1.32616 | 0.000123 | 1.326283 | If value of inverseCcy is blank, then market convention will be used\nUSDSGD (or) SGDUSD | USD | USD| 1 | 1.32616| 0.000123| 1.326283| If value of inverseCcy is NOT blank and is equal to Base Currency then market convention will be used\nUSDSGD (or) SGDUSD | SGD | SGD |2 | 0.75399 | -0.0000699 | 0.7539201 |If value of inverseCcy is sent and is equal to Term Currency then Inverted Quote will be used"
maxLength: 6
example: GBPUSD
dealtCcy:
type: string
description: The currency that you wish to deal on.
maxLength: 3
example: GBP
inverseCcy:
type: string
description: This value should be sent if you expect an inverted rate. Not required for market convention. Refer to the Currency Pair description for more information.
maxLength: 3
example: GBP
orderQty:
type: number
description: The order quanitity of the dealt currency.
example: 1000
side:
type: string
enum:
- B
- S
description: The Buy Or Sell Indicator from your perspective. B=Client buys dealt ccy S=Client sells dealt ccy.
example: B
fixingCode:
type: string
description: "\n| DESCRIPTION | TIME | GMTEQUIV | SHORTCODE |\n|---------------------------|-------|----------|------------|\nWMR Australian 10:00 Fixing | 1000 | 0 | SYD1000WMR\nBFIX Australian 10:00 Fixing| 1000 | 0 | SYD1000BFIX\nBFIX Tokyo 09:00 Fixing| 900| 0 |TOK0900BFIX\nWMR Tokyo 09:00 Fixing| 900| 0 |TOK0900WMR\nWMR Tokyo 09:55 Fixing| 955| 55| TOK0955WMR\nBFIX Tokyo 11:00 Fixing |1100| 200| TOK1100BFIX\nWMR Tokyo 11:00 Fixing| 1100| 200 |TOK1100WMR\nBFIX Tokyo 12:00 Fixing| 1200| 300| TOK1200BFIX\nWMR Tokyo 12:00 Fixing| 1200| 300| TOK1200WMR\nWMR Tokyo 13:00 Fixing| 1300| 400| TOK1300BFIX\nWMR Tokyo 14:00 Fixing| 1400| 500| TOK1400WMR\nBFIX Tokyo 14:00 Fixing| 1400| 500| TOK1400BFIX\nWMR Tokyo 15:00 Fixing| 1500| 600| TOK1500WMR\nBFIX Tokyo 15:00 Fixing| 1500| 600| TOK1500BFIX\nWMR Tokyo 16:00 Fixing| 1600| 700| TOK1600WMR\nBFIX Tokyo 16:00 Fixing| 1600| 700| TOK1600BFIX\nWMR London 08:00 Fixing| 800 |700| LDN0800WMR\nBFIX London 08:00 Fixing| 800| 700| LDN0800BFIX\nWMR London 09:00 Fixing| 900| 800| LDN0900WMR\nBFIX London 09:00 Fixing| 900| 800| LDN0900BFIX\nBFIX London 10:00 Fixing| 1000| 900 |LDN1000BFIX\nWMR London 10:00 Fixing |1000| 900 |LDN1000WMR\nBFIX London 11:00 Fixing| 1100| 1000| LDN1100BFIX\nWMR London 11:00 Fixing |1100| 1000| LDN1100WMR\nBFIX London 12:00 Fixing| 1200| 1100| LDN1200BFIX\nWMR London 12:00 Fixing |1200 |1100 |LDN1200WMR\nWMR London 13:00 Fixing |1300 |1200 |LDN1300WMR\nBFIX London 13:00 Fixing| 1300| 1200| LDN1300BFIX\nWMR London 14:00 Fixing |1400 |1300 |LDN1400WMR\nBFIX London 14:00 Fixing| 1400| 1300| LDN1400BFIX\nWMR London 15:00 Fixing |1500 |1400 |LDN1500WMR\nBFIX London 15:00 Fixing| 1500| 1400| LDN1500BFIX\nBFIX London 16:00 Fixing| 1600| 1500| LDN1600BFIX\nWMR London 16:00 Fixing |1600 |1500 |LDN1600WMR\nBFIX New York 12:00 Fixing| 1200| 1600| NYK1200BFIX\nWMR New York 12:00 Fixing |1200 |1600 |NYK1200WMR\nBFIX New York 13:00 Fixing| 1300| 1700 |NYK1300BFIX\nWMR New York 13:00 Fixing |1300 |1700 |NYK1300WMR\nBFIX New York 14:00 Fixing| 1400| 1800| NYK1400BFIX\nWMR New York 14:00 Fixing |1400 |1800 |NYK1400WMR\nBFIX New York 15:00 Fixing| 1500| 1900| NYK1500BFIX\nWMR New York 15:00 Fixing |1500 |1900 |NYK1500WMR\nWMR New York 16:00 Fixing |1600 |2000 |NYK1600WMR\nBFIX New York 16:00 Fixing| 1600| 2000| NYK1600BFIX\n\nYou must be permissioned to a fixing by Citi's Benchmark system in order to successfully add a trade against it. Otherwise the trade will be rejected. \n\nContact your Citi Representative for fixing cut-off times. GMT Equivalent time will change during DST changes for SYD, LDN, and NY Fixings.\n "
example: QOUTED
purposeCode:
type: string
description: Optional field for the purpose code of the deal booking.
suppressSettlement:
type: string
description: Flag to suppress the settlement on FX side.
example: Y (or) N
valueDate2:
type: string
description: Far Leg Value Date. Only required for Swap requests Date.
example: 20250525
orderQty2:
type: number
description: Far Leg Amount. Only required for Swap requests.
example: 120000
transactTime:
type: string
description: Time the transaction represented by this single order occurred.
example: Mon Apr 29 12:50:33 IST 2024
securityId:
type: string
description: MIFID Field. ISIN Code for the FX Security. See the Additional Information tab for details on MIFID fields.
securityIdSource:
type: string
description: 'MIFID Field. Allowed Values: 4 = ISIN. See the Additional Information tab for details on MIFID fields.'
legSecurityId:
type: string
description: MIFID Field. For SWAP Deals only. See the Additional Information tab for details on MIFID fields.
legSecurityIdSource:
type: string
description: MIFID Field. For SWAP Deals only. See the Additional Information tab for details on MIFID fields.
marketSegmentId:
type: string
description: "MIFID Field. Identifies the market segment. Allowed values are \n 1. XOFF – Off Market Transaction (default). \n 2. SEF – This entity is not an MTF. \n 3. MTF – Multilateral Trading Facility (MTF). \n 4. MIF – MIFID Opt In (Non MTF’s who want to receive MIFID Fields). See the Additional Information tab for details on MIFID fields."
example:
action: NEW
senderCompId: TESTCLIENT0
onBehalfOfCompId: TCL0
jsonReqId: e4c0bb9-6
sendingTime: Mon Apr 29 12:50:33 IST 2024
deals:
- account: LDN|xxxxxxxxxx
clOrdId: TEST98
tenor: BROKEN
valueDate: '20250522'
ccyPair: EURUSD
dealtCcy: USD
orderQty: '200'
side: S
fixingCode: QUOTED
transactTime: ' Mon Apr 29 12:50:33 IST 2024'
FXOrderCancel:
type: object
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- deals
properties:
action:
type: string
description: 'The service you are requesting. Allowed values: CANCEL.'
jsonReqId:
type: string
example: Req20181011776
description: The unique identifier for the JSON request. Format is alphanumeric.
maxLength: 60
senderCompId:
type: string
description: The Citi-assigned value used to identify the message sender. This was assigned to you during onboarding.
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. This was assigned to you during onboarding.
example: Sub Entity
sendingTime:
type: string
description: 'The time of the message transmission expressed in UTC (Universal Time Coordinated, also known as "GMT"). Format: YYYYMMDD-HH:MM:SS.mmm.'
example: 20180820-04:48:29.125
deals:
type: array
description: Order can be cancelled based on the given fields below. clOrdId is required, and should be sent along with origClOrdID OR origJsonReqId.
items:
required:
- clOrdId
- origClOrdID
- origJsonReqId
properties:
clOrdId:
type: string
description: The unique identifier that you assign to the order. A reference specific to this client/request combination. Market orders support max 15 characters. Benchmark orders support 45 characters. Alphanumeric and special character hyphen (-) allowed.
example: TEST12345
origClOrdID:
type: string
description: ClOrdID of the previous non-rejected order (NOT the initial order of the day) when cancelling or replacing an order. This has to be given along with ClOrdId.
example: OR12345
origJsonReqId:
type: string
description: Unique identifier for the original JSON Request. ClOrdId must be populated along with this field.
example: Req20181011776
example:
action: CANCEL
senderCompId: TESTCLIENT0
onBehalfOfCompId: TCL0
jsonReqId: 27SepT30
sendingTime: 20180829-04:48:29.125
deals:
- clOrdId: CANCELTEST01
origClOrdId: TEST01
Order_Cancel_Response:
description: The response for this endpoint will be sent via web socket. In the case of multiple orders, multiple dealResponse JSON objects will be present in the dealResponses JSON array. Response array can be of both Ack / Nack.
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- dealResponses
- deals
properties:
action:
type: string
example: order-response
description: 'Allowed value: cancel-response.'
jsonReqId:
type: string
example: Req20181011776
description: The unique identifier for the JSON request. Format is alphanumeric.
maxLength: 60
senderCompId:
type: string
description: The Citi-assigned value used to identify the firm sending the message.
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. May contain special characters ( ‘_’, ‘.’, ‘-‘).
example: Sub Entity
sendingTime:
type: string
description: The time of message transmission. Always expressed in UTC (Universal Time Coordinated, also known as 'GMT.' Format is YYYYMMDD-HH:MM:SS.mmm.
example: 20180820-04:48:29.125
deals:
type: array
items:
required:
- clOrdId
- orderId
- transactTime
- execId
- orderStatus
properties:
account:
type: string
description: Your Citi-assigned client identifier.
example: 109430258
clOrdId:
type: string
description: The unique identifier you assign. Market order cancellations support max 15 characters. Benchmark order cancellations support max 45 characters.
example: TEST12345
side:
type: string
enum:
- B
- S
description: The Buy Or Sell Indicator from your perspective. B=Client buys dealt ccy, S=Client sells dealt ccy.
example: B
valueDate:
type: string
description: The value date of the deal placed.
example: 20240502
ccyPair:
type: string
description: The currency pair that you are dealing on. CCY1CCY2.
maxLength: 6
example: GBPUSD
dealtCcy:
type: string
description: The currency for which you supplied the dealt amount.
maxLength: 3
example: GBP
transactTime:
type: string
description: Time of the transaction represented by this single order.
example: Mon Apr 29 12:50:33 IST 2024
execId:
type: string
description: The unique identifier of execution message.
example: ABC123
avgPx:
type: number
description: Calculated average price of all fills on this order.
example: 0
orderId:
type: number
description: The Citi-assigned order ID. This is not populated for REJECTED deals.
example: 3714864
orderStatus:
type: string
description: Value = CANCELLED (if cancellation request is accepted by pricing system) Value = CANCELLATION_REJECTED (if cancellation request is rejected by pricing system).
example: CANCELLED or CANCELLATION_REJECTED
lastQty:
type: number
description: The dealt amount.
example: 1234.56
secondaryClOrdId:
type: string
description: Secondary order reference.
example: OR12345
example:
action: cancel-response
senderCompId: TESTCLIENT0
onBehalfOfCompId: TCL0
jsonReqId: 27SepT30
sendingTime: 20180829-04:49:25.125
dealResponses:
- clOrdId: CANCELTEST01
side: B
execId: 363747-1538036158154
avgPx: '0'
orderId: TCL0-TEST01
orderStatus: CANCELLED
cumQty: '0'
leavesQty: '0'
execType: '4'
ordRejReason: '99'
text: Quote TCL0-TEST01 processed in eDealer.
FXOrderCancel_2:
type: object
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- deals
properties:
action:
type: string
description: 'The service you are requesting. Allowed values: CANCEL.'
jsonReqId:
type: string
example: Req20181011776
description: The unique identifier for the JSON request. Format is alphanumeric.
maxLength: 60
senderCompId:
type: string
description: The Citi-assigned value used to identify the message sender. This was assigned to you during onboarding.
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. This was assigned to you during onboarding.
example: Sub Entity
sendingTime:
type: string
description: 'The time of the message transmission expressed in UTC (Universal Time Coordinated, also known as "GMT"). Format: YYYYMMDD-HH:MM:SS.mmm.'
example: 20180820-04:48:29.125
deals:
type: array
description: Order can be cancelled based on the given fields below. clOrdId is required, and should be sent along with origClOrdID OR origJsonReqId.
items:
required:
- clOrdId
- origClOrdID
- origJsonReqId
properties:
clOrdId:
type: string
description: The unique identifier that you assign to the order. A reference specific to this client/request combination. Market orders support max 15 characters. Benchmark orders support 45 characters. Alphanumeric and special character hyphen (-) allowed.
example: TEST12345
origClOrdID:
type: string
description: ClOrdID of the previous non-rejected order (NOT the initial order of the day) when cancelling or replacing an order. This has to be given along with ClOrdId.
example: OR12345
origJsonReqId:
type: string
description: The unique identifier for the original JSON Request. ClOrdId must be populated along with this field. All the deals originally given under this JsonReqD will be eligible for cancellation.
example: Req20181011776
example:
action: CANCEL
senderCompId: TESTCLIENT0
onBehalfOfCompId: TCL0
jsonReqId: 27SepT30
sendingTime: 20180829-04:48:29.125
deals:
- clOrdId: CANCELTEST01
origClOrdId: TEST01
Order_Cancel_Response_2:
description: In case of multiple orders, multiple dealResponse JSON objects will be present in the dealResponses JSON array. Response array can be of both Ack / Nack.
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- dealResponses
- deals
properties:
action:
type: string
example: order-response
description: 'Allowed value: cancel-response.'
jsonReqId:
type: string
example: Req20181011776
description: The unique identifier for the JSON request. Format is alphanumeric.
maxLength: 60
senderCompId:
type: string
description: The Citi-assigned value used to identify the firm sending the message.
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. May contain special characters ( ‘_’, ‘.’, ‘-‘).
example: Sub Entity
sendingTime:
type: string
description: The time of message transmission. Always expressed in UTC (Universal Time Coordinated, also known as 'GMT.' Format is YYYYMMDD-HH:MM:SS.mmm.
example: 20180820-04:48:29.125
deals:
type: array
items:
required:
- clOrdId
- orderId
- transactTime
- execId
- orderStatus
properties:
account:
type: string
description: Your Citi-assigned client identifier.
example: 109430258
clOrdId:
type: string
description: The unique identifier you assign. Market order cancellations support max 15 characters. Benchmark order cancellations support max 45 characters.
example: TEST12345
side:
type: string
enum:
- B
- S
description: The Buy Or Sell Indicator from your perspective. B=Client buys dealt ccy, S=Client sells dealt ccy.
example: B
valueDate:
type: string
description: The value date of the deal placed.
example: 20240502
ccyPair:
type: string
description: The currency pair that you are dealing on. CCY1CCY2.
maxLength: 6
example: GBPUSD
dealtCcy:
type: string
description: The currency for which you supplied the dealt amount.
maxLength: 3
example: GBP
transactTime:
type: string
description: Time of the transaction represented by this single order.
example: Mon Apr 29 12:50:33 IST 2024
execId:
type: string
description: The unique identifier of execution message.
example: ABC123
avgPx:
type: number
description: Calculated average price of all fills on this order.
example: 0
orderId:
type: number
description: The Citi-assigned order ID. This is not populated for REJECTED deals.
example: 3714864
orderStatus:
type: string
description: Value = CANCELLED (if cancellation request is accepted by pricing system) Value = CANCELLATION_REJECTED (if cancellation request is rejected by pricing system).
example: CANCELLED or CANCELLATION_REJECTED
lastQty:
type: number
description: The dealt amount.
example: 1234.56
secondaryClOrdId:
type: string
description: Secondary order reference.
example: OR12345
example:
action: cancel-response
senderCompId: TESTCLIENT0
onBehalfOfCompId: TCL0
jsonReqId: 27SepT30
sendingTime: 20180829-04:49:25.125
dealResponses:
- clOrdId: CANCELTEST01
side: B
execId: 363747-1538036158154
avgPx: '0'
orderId: TCL0-TEST01
orderStatus: CANCELLED
cumQty: '0'
leavesQty: '0'
execType: '4'
ordRejReason: '99'
text: Quote TCL0-TEST01 processed in eDealer.
FXBenchMarkOrder_Acknowledged_Or_Rejected:
description: The response for enquired order will be published via web socket. If the Bench order is in Acknowledged/Rejected status, you will receive the response below. In case of multiple orders, multiple dealResponses JSON objects will be present in the dealResponses JSON array. Response array can be of both Ack / Nack.
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- dealResponses
properties:
action:
type: string
example: enquiry-response
description: 'Allowed Value: enquiry-response'
jsonReqId:
type: string
example: Req20181011776
description: The unique identifier for the JSON request. Format is alphanumeric.
maxLength: 60
senderCompId:
type: string
description: The Citi-assigned value used to identify the message sender. This was assigned to you during onboarding.
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. This was assigned to you during onboarding.
example: Sub Entity
sendingTime:
type: string
description: The time of message transmission. Always expressed in UTC (Universal Time Coordinated, also known as 'GMT.' Format is YYYYMMDD-HH:MM:SS.mmm.
example: 20180820-04:48:29.125
deals:
type: array
items:
required:
- account
- clOrdId
- ccyPair
- dealtCcy
- orderQty
- side
- fixingCode
- transactTime
- execId
- avgPx
- orderStatus
- purposeCode
properties:
account:
type: string
description: Your Citi-assigned client identifier.
example: 109430258
clOrdId:
type: string
description: The order reference you assigned.
example: TEST12345
side:
type: string
enum:
- B
- S
description: Indicates whether you are buying (B) or selling (S) the dealt ccy.
valueDate:
type: string
description: Populated for an Acknowledged deal.
example: 20240502
tradeDate:
type: string
description: Populated for an Acknowledged deal.
example: 20240429
purposeCode:
type: string
description: Populates the same value sent in incoming request when sent else null.
ccyPair:
type: string
description: The currency pair that you are dealing on. CCY1CCY2.
maxLength: 6
example: GBPUSD
dealtCcy:
type: string
description: The currency for which you supplied the dealt amount.
maxLength: 3
example: GBP
fixingCode:
type: string
description: Fixing code requested when sending the deal.
example: QOUTED
transactTime:
type: string
description: Time the transaction represented by this single order occurred.
example: Mon Apr 29 12:50:33 IST 2024
execId:
type: string
description: Populates as 0 for ACKNOWLEDGED deal. A unique identifier for REJECTED deal.
example: 0 (or) Alphanumeric & special character hyphen (-)
avgPx:
type: number
description: Calculated average price of all fills on this order.
example: 0
orderId:
type: number
description: Citi-assigned order ID. Mandatory for ACKNOWLEDGED deal. Not populated for REJECTED deals
example: 3714864
orderStatus:
type: string
description: The current status of the deal.
example: ACKNOWLEDGED or REJECTED
lastQty:
type: number
description: Populates with value 0 only for ACKNOWLEDGED deals.
example: 0
cumQty:
type: number
description: Populates with value 0 only for REJECTED deals.
leavesQty:
type: number
description: Populates with value 0 only for REJECTED deals.
execType:
type: number
description: 'Populates with value: 8 for REJECTED deals. Does not get populated for ACKNOWLEDGED deals'
example: 8
ordRejReason:
type: number
description: Only for REJECTED deals. Contains rejection code.
example: 99
text:
type: string
description: Only for REJECTED deals. Contains rejection reason.
example: 0
secondaryClOrdId:
type: string
description: Secondary order reference.
example: OR12345
valueDate2:
type: string
description: 'Far Leg Value Date. Applicable for SWAP orders only. Date Format: yyyyMMdd'
example: 20250525
orderQty2:
type: number
description: Far Leg Amount. Applicable for SWAP orders only
example: 1000
example:
senderCompId: TESTCLIENT0
onBehalfOfCompId: TCL0
action: enquiry-response
jsonReqId: 56ae4527
sendingTime: 20240429-07:20:36.683
senderSubId: System
dealResponses:
- account: LDN|xxxxxxxxxx
clOrdId: TESTCL01
side: S
fixingCode: QUOTED
transactTime: Mon Apr 29 07:20:35 GMT 2024
valueDate: '20240502'
tradeDate: '20240429'
dealtCcy: USD
ccyPair: EURUSD
execId: '0'
avgPx: '0.0'
orderId: '3714864'
orderStatus: ACKNOWLEDGED
lastQty: '0'
purposeCode: 'null'
FXCustomEnquiry_Response:
description: Response for custom enquired orders will be published via web socket. When enquiryStatus value is sent as ACKNOWLEDGED, you will receive the response below. Sample given here is BenchMarkOrder response. In case of multiple orders, multiple dealResponse JSON objects will be present in the dealResponses JSON array. Response array can be of both Ack / Nack.
example:
senderCompId: TESTCLIENT0
onBehalfOfCompId: TCL0
action: enquiry-response
jsonReqId: 56ae4527
sendingTime: 20240429-07:20:36.683
senderSubId: System
dealResponses:
- account: LDN|xxxxxxx
clOrdId: TESTCL01
side: S
fixingCode: QUOTED
transactTime: Mon Apr 29 07:20:35 GMT 2024
valueDate: '20240502'
tradeDate: '20240429'
dealtCcy: USD
ccyPair: EURUSD
execId: '0'
avgPx: '0.0'
orderId: '3714864'
orderStatus: ACKNOWLEDGED
lastQty: '0'
purposeCode: 'null'
FxOrderEnquiry:
type: object
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- deals
properties:
action:
type: string
description: 'The service you are requesting. Allowed values: ENQUIRY.'
jsonReqId:
type: string
example: Req20181011776
description: The unique identifier for the JSON request. Alphanumeric, special characters, underscores '_', and hyphens '-' are allowed.
maxLength: 60
senderCompId:
type: string
description: The Citi-assigned value used to identify the message sender. This was assigned to you during onboarding.
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. This was assigned to you during onboarding.
example: Sub Entity
sendingTime:
type: string
description: 'The time of the message transmission expressed in UTC (Universal Time Coordinated, also known as "GMT"). Format: YYYYMMDD-HH:MM:SS.mmm.'
example: 20180820-04:48:29.125
deals:
type: array
description: You must send one of the below 3 fields. All 3 fields should not be sent.
items:
required:
- clOrdId
- tradeDate
- origJsonReqId
properties:
clOrdId:
type: string
description: The unique identifier that you assign to the order. A reference specific to this client/request combination. Market orders support max 15 characters. Benchmark orders support 45 characters. Alphanumeric and special character hyphen (-) allowed.
example: TEST12345
tradeDate:
type: string
description: 'The trade date of the order being enquired. Format: yyyyMMdd'
example: 20250525
origJsonReqId:
type: string
description: The unique identifier of the original JSON Request.
example: Req20181011776
example:
action: ENQUIRY
senderCompId: TESTCLIENT0
onBehalfOfCompId: TCL0
jsonReqId: 56ae4527
sendingTime: 20240315-15:48:49.635
deals:
- origJsonReqId: avbghukiopl
FXBenchMarkOrder_Rated:
description: The response for enquired orders will be published via web socket. If the currenst status of the deal is COMPLETED, you will receive the response below. In case of multiple orders, multiple dealResponses JSON objects will be present in the dealResponses JSON array. Response array can be of both Ack / Nack.
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- dealResponses
properties:
action:
type: string
example: enquiry-response
description: 'Allowed Value: enquiry-response'
jsonReqId:
type: string
example: Req20181011776
description: The unique identifier for the JSON request. Format is alphanumeric.
maxLength: 60
senderCompId:
type: string
description: The Citi-assigned value used to identify the message sender. This was assigned to you during onboarding.
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. This was assigned to you during onboarding.
example: Sub Entity
sendingTime:
type: string
description: The time of message transmission. Always expressed in UTC (Universal Time Coordinated, also known as 'GMT.' Format is YYYYMMDD-HH:MM:SS.mmm.
example: 20180820-04:48:29.125
deals:
type: array
items:
required:
- account
- clOrdId
- valueDate
- tradeDate
- ccyPair
- dealtCcy
- orderQty
- side
- fixingCode
- transactTime
- execId
- avgPx
- orderId
- orderStatus
- lastQty
- contAmtValue
- lastPx
- lastSpotRate
- lastForwardPoints
- purposeCode
properties:
account:
type: string
description: Your Citi-assigned client identifier.
example: 109430258
clOrdId:
type: string
description: The order reference you assigned.
example: TEST12345
side:
type: string
enum:
- B
- S
description: Indicates whether you are buying (B) or selling (S) the dealt ccy.
valueDate:
type: string
description: Populated for a Rated deal.
example: 20240502
tradeDate:
type: string
description: Populated for a Rated deal.
example: 20240429
purposeCode:
type: string
description: Populates the same value sent in incoming request when else sent is null.
ccyPair:
type: string
description: The currency pair that you are trading on. CCY1CCY2.
maxLength: 6
example: GBPUSD
dealtCcy:
type: string
description: The currency for which you supplied the dealt amount.
maxLength: 3
example: GBP
fixingCode:
type: string
description: Fixing code when sending the deal.
example: QOUTED or LDN1500BFIX
transactTime:
type: string
description: Time the transaction represented by this single order occurred.
example: Mon Apr 29 12:50:33 IST 2024
execId:
type: string
description: Unique identifier of execution message.
example: Alphanumeric & special character hyphen (-)
avgPx:
type: number
description: Calculated average price of all fills on this order.
example: 0
orderId:
type: number
description: Citi-assigned order ID. This will be the same value as sent in orderId field of Acknowledged and Accepted deal.
example: 3714864
orderStatus:
type: string
example: COMPLETED
description: The current status of the deal. Allowed value = COMPLETED.
contAmtValue:
type: number
description: The counter amount, i.e., non-dealt amount
example: 54321.21
lastPx:
type: number
description: Outright Rate
example: 1.51446
lastQty:
type: number
description: Dealt Amount
example: 12345.56
lastSpotRate:
type: number
description: Spot Rate
example: 1.5144
lastForwardPoints:
type: number
description: Forward Points
example: 0
lastForwardPoints2:
type: number
description: Far Forward Points. Applicable for SWAP orders only.
example: 6.0e-06
valueDate2:
type: string
description: Far Leg Value Date. Applicable for SWAP orders only
example: 20250525
orderQty2:
type: number
description: Far Leg Amount. Applicable for SWAP orders only
example: 1000
settlCurrAmt:
type: number
description: Far Counter Amount. Applicable for SWAP orders only
example: 54321.21
securityId:
type: string
description: MIFID Field. ISIN Code for the FX Security
securityIdSource:
type: string
description: 'MIFID Field. Allowed Values: 4 = ISIN'
legSecurityId:
type: string
description: MIFID Field. For SWAP Deals only
legSecurityIdSource:
type: string
description: MIFID Field. For SWAP Deals only
lastCapacity:
type: string
description: 'MIFID Field. Allowed Values: 4 = Principal'
tradeReportingIndicator:
type: string
description: MIFID Field
matchType:
type: string
description: MIFID Field
example:
senderCompId: TESTCLIENT2
onBehalfOfCompId: TCL2R
action: enquiry-response
jsonReqId: 56ae4527
sendingTime: 20240429-07:20:36.683
senderSubId: System
dealResponses:
- account: LDN|xxxxxxxxxx
clOrdId: TESTCL01
side: S
fixingCode: QUOTED
transactTime: Mon Apr 29 07:20:35 GMT 2024
valueDate: '20240502'
tradeDate: '20240429'
dealtCcy: USD
ccyPair: EURUSD
execId: '323595562789'
avgPx: '7.7262'
orderId: '3714864'
orderStatus: COMPLETED
lastQty: '1'
contAmtValue: '0.13'
lastPx: '7.7262'
lastSpotRate: '7.7262'
lastForwardPoints: '0'
purposeCode: 'null'
FXMarketOrder_Rated:
description: The response for enquired orders will be published via web socket. If the Market order is in Rated status, you will receive the response below. In case of multiple orders, multiple dealResponses JSON objects will be present in the dealResponses JSON array. Response array can be of both Ack / Nack.
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- dealResponses
- deals
properties:
action:
type: string
example: enquiry-response
description: 'Allowed Value: enquiry-response'
jsonReqId:
type: string
example: Req20181011776
description: The unique identifier for the JSON request. Format is alphanumeric.
maxLength: 60
senderCompId:
type: string
description: The Citi-assigned value used to identify the message sender. This was assigned to you during onboarding.
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. This was assigned to you during onboarding.
example: Sub Entity
sendingTime:
type: string
description: The time of message transmission. Always expressed in UTC (Universal Time Coordinated, also known as 'GMT.' Format is YYYYMMDD-HH:MM:SS.mmm.
example: 20180820-04:48:29.125
deals:
type: array
items:
required:
- account
- clOrdId
- valueDate
- tradeDate
- ccyPair
- dealtCcy
- orderQty
- side
- fixingCode
- transactTime
- execId
- avgPx
- orderId
- orderStatus
- lastQty
- contAmtValue
- lastPx
- lastSpotRate
- lastForwardPoints
properties:
account:
type: string
description: Your Citi-assigned client identifier.
example: 109430258
clOrdId:
type: string
description: The order reference you assigned.
example: TEST12345
side:
type: string
enum:
- B
- S
description: Indicates whether you are buying (B) or selling (S) the dealt ccy.
valueDate:
type: string
description: Populated for Rated deal.
example: 20240502
purposeCode:
type: string
description: The purpose code of the order
ccyPair:
type: string
description: The currency pair that you are trading on. CCY1CCY2.
maxLength: 6
example: GBPUSD
dealtCcy:
type: string
description: The currency for which you supplied the dealt amount.
maxLength: 3
example: GBP
transactTime:
type: string
description: The time of the transaction represented by this single order occurred.
example: Mon Apr 29 12:50:33 IST 2024
execId:
type: string
description: The unique identifier of execution message. Alphanumeric & special character hyphen (-).
avgPx:
type: number
description: Calculated average price of all fills on this order.
example: 1.0935
orderId:
type: number
description: Citi-assigned order ID. This will be the same value as sent in orderId field of Acknowledged deal.
example: 3714864
orderStatus:
type: string
example: COMPLETED
description: The current status of the deal. Allowed value = COMPLETED.
contAmtValue:
type: number
description: The counter amount, i.e., non dealt amount.
example: 54321.21
lastPx:
type: number
description: Outright Rate
example: 1.51446
lastQty:
type: number
description: Dealt Amount
example: 12345.56
lastSpotRate:
type: number
description: Spot Rate
example: 1.5144
lastForwardPoints:
type: number
description: Forward Points
example: 0
customRemark1:
type: string
description: User Defined Custom Field. Value given in incoming request is reflected back.
customRemark2:
type: string
description: User Defined Custom Field. Value given in incoming request is reflected back.
customRemark3:
type: string
description: User Defined Custom Field. Value given in incoming request is reflected back.
customRemark4:
type: string
description: User Defined Custom Field. Value given in incoming request is reflected back.
customRemark5:
type: string
description: User Defined Custom Field. Value given in incoming request is reflected back.
secondaryClOrdId:
type: string
description: Secondary order reference.
example: OR12345
example:
senderCompId: TESTCLIENT0
onBehalfOfCompId: TCL0
action: enquiry-response
jsonReqId: 56ae4527
sendingTime: 20240315-15:49:01.980
senderSubId: System
dealResponses:
- account: HKG|0xxxxx4
clOrdId: TESTCL01
side: B
transactTime: Fri Mar 15 15:49:01 GMT 2024
valueDate: '20240319'
tradeDate: '20240315'
dealtCcy: USD
ccyPair: EURUSD
execId: 3086183-1710517741980
avgPx: '1.086'
orderId: TCL0-TESTCL01
orderStatus: COMPLETED
lastQty: '100.0'
text: Rated Through OLT.
contAmtValue: '92.08'
lastPx: '1.086'
lastSpotRate: '1.086'
lastForwardPoints: '0.0'
purposeCode: 'null'
FXCustomEnquiry_Response_ForAll:
description: The response for custom enquired orders will be published via web socket. When enquiryStatus value is sent as ALL, depending on the current status of the deal, an array of response(s) will be sent back. Below is the response of a BenchMarkOrder deal in Rated status containing an array of Acknowledged, Accepted, and Rated responses. In case of multiple orders, multiple dealResponse JSON objects will be present in the dealResponses JSON array. Response array can be of both Ack / Nack.
example:
onBehalfOfCompId: TCL0
dealResponses:
- side: S
orderId: '4232982'
dealtCcy: EUR
orderStatus: ACKNOWLEDGED
fixingCode: QUOTED
valueDate: '20241209'
tradeDate: '20241206'
execId: '0'
clOrdId: TESTCL01
lastQty: '0'
ccyPair: EURGBP
avgPx: '0.0'
purposeCode: 'null'
transactTime: Wed Dec 11 06:43:17 GMT 2024
account: LDN|800xxxx
- side: S
orderId: '4232982'
dealtCcy: EUR
orderStatus: ACCEPTED
fixingCode: QUOTED
valueDate: '20241209'
tradeDate: '20241206'
execId: '0'
clOrdId: TESTCL01
lastQty: '0'
ccyPair: EURGBP
avgPx: '0.0'
purposeCode: 'null'
transactTime: Wed Dec 11 06:43:17 GMT 2024
account: ' LDN|800xxxx '
- side: S
orderId: '4232982'
lastPx: '0.829485'
contAmtValue: '0.83'
dealtCcy: EUR
orderStatus: COMPLETED
fixingCode: QUOTED
valueDate: '20241209'
tradeDate: '20241206'
execId: '324180074270'
lastSpotRate: '0.82952'
clOrdId: TESTCL01
lastQty: '1'
ccyPair: EURGBP
avgPx: '0.82957'
purposeCode: 'null'
transactTime: Wed Dec 11 06:43:17 GMT 2024
lastForwardPoints: '-0.000035'
account: ' LDN|800xxxx'
jsonReqId: 56ae4527
action: enquiry-response
senderCompId: ' TESTCLIENT0'
sendingTime: 20241211-06:43:17.389
FXMarketOrder_Accepted_Or_Rejected:
description: 'The response for enquired order will be published via web socket. If the Market order is in Acknowledged status, the response JSON will contain following key/value pairs. Note: In case of multiple orders, multiple dealResponse JSON objects will be present in the dealResponses JSON array. Response array can be of both Ack / Nack.'
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- dealResponses
- deals
properties:
action:
type: string
example: enquiry-response
description: 'Allowed Value: enquiry-response.'
jsonReqId:
type: string
example: Req20181011776
description: The unique identifier for the JSON request. Format is alphanumeric.
maxLength: 60
senderCompId:
type: string
description: The Citi-assigned value used to identify the message sender. This was assigned to you during onboarding.
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. This was assigned to you during onboarding.
example: Sub Entity
sendingTime:
type: string
description: The time of message transmission. Always expressed in UTC (Universal Time Coordinated, also known as 'GMT.' Format is YYYYMMDD-HH:MM:SS.mmm.
example: 20180820-04:48:29.125
deals:
type: array
items:
required:
- account
- clOrdId
- ccyPair
- dealtCcy
- orderQty
- side
- fixingCode
- transactTime
- execId
- avgPx
- orderStatus
properties:
account:
type: string
description: Your Citi-assigned client identifier.
example: 109430258
clOrdId:
type: string
description: The order reference you assigned.
example: TEST12345
side:
type: string
enum:
- B
- S
description: Indicates whether you are buying (B) or selling (S) the dealt ccy.
valueDate:
type: string
description: The value date. Populated for Acknowledged deal.
example: 20240502
purposeCode:
type: string
description: The purpose code.
ccyPair:
type: string
description: The currency pair that you are trading on. CCY1CCY2.
maxLength: 6
example: GBPUSD
dealtCcy:
type: string
description: The currency for which you supplied the dealt amount.
maxLength: 3
example: GBP
transactTime:
type: string
description: The time of the transaction represented by this single order occurred.
example: Mon Apr 29 12:50:33 IST 2024
execId:
type: string
description: The unique identifier of execution message.
example: ABC123
avgPx:
type: number
description: Calculated average price of all fills on this order.
example: 0
orderId:
type: number
description: Citi-assigned order ID. Not populated for REJECTED deals.
example: 3714864
orderStatus:
type: string
description: ' The current status of the deal.'
example: ACKNOWLEDGED or REJECTED
lastQty:
type: number
description: Populates with value 0 only for ACKNOWLEDGED deals.
example: 0
cumQty:
type: number
description: Populates with value 0 only for REJECTED deals.
leavesQty:
type: number
description: Populates with value 0 only for REJECTED deals.
execType:
type: number
description: 'Populates with value: 8 for REJECTED deals. Does not get populated for ACKNOWLEDGED deals.'
example: 8
ordRejReason:
type: number
description: Only for REJECTED deals. Contains rejection code.
example: 99
text:
type: string
description: Only for REJECTED deals. Contains rejection reason.
example: 0
secondaryClOrdId:
type: string
description: Secondary order reference.
example: OR12345
example:
senderCompId: TESTCLIENT0
onBehalfOfCompId: TCL0
action: enquiry-response
jsonReqId: 56ae4527
sendingTime: 20240315-15:48:49.635
senderSubId: System
dealResponses:
- account: HKG|0xxxxx4
clOrdId: TESTCL01
side: B
transactTime: Fri Mar 15 15:48:49 GMT 2024
valueDate: '20240319'
dealtCcy: USD
ccyPair: EURUSD
execId: 3086183-1710517729635
avgPx: '0'
orderId: TCL0-TESTCL01
orderStatus: ACKNOWLEDGED
lastQty: '0'
text: Quote TCL0-TESTCL01 processed in eDealer.
purposeCode: 'null'
FxOrderCustomEnquiry:
description: You can enquire for a specific response or all responses available for a deal through the enquiryStatus field. Only clOrdId and enquiryStatus fields are allowed for custom enquiry. This feature is available for single order flow only.
type: object
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- deals
properties:
action:
type: string
description: 'The service you are requesting. Allowed values: ENQUIRY.'
jsonReqId:
type: string
example: Req20181011776
description: The unique identifier that you assign in the JSON request. Must be alphanumeric.
maxLength: 60
senderCompId:
type: string
description: The Citi-assigned value used to identify the message sender. This was assigned to you during onboarding.
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. This was assigned to you during onboarding.
example: Sub Entity
sendingTime:
type: string
description: 'The time of the message transmission expressed in UTC (Universal Time Coordinated, also known as "GMT"). Format: YYYYMMDD-HH:MM:SS.mmm.'
example: 20180820-04:48:29.125
deals:
type: array
description: You can enquire for a specific response or all responses available for a deal through the enquiryStatus field. Only clOrdId and enquiryStatus fields are allowed for custom enquiry. This feature is available for single order flow only.
items:
required:
- clOrdId
- enquiryStatus
properties:
clOrdId:
type: string
description: The unique identifier assigned to the order. Market order flows support max 15 characters. Alphanumeric and special character hyphen (-) allowed.
example: TEST12345
enquiryStatus:
type: string
description: 'Valid Values: ALL, ACKNOWLEDGED, ACCEPTED, COMPLETED, CANCELLED, CANCELLATION REJECTED. Note: When enquiryStatus value is sent as “ALL”, the response will contain an array of available responses for that deal. Refer to examples for sample request and response.'
example: 20250525
example:
action: ENQUIRY
senderCompId: TESTCLIENT0
onBehalfOfCompId: TCL0
jsonReqId: 56ae4527
sendingTime: 20240315-15:48:49.635
deals:
- clOrdId: TESTCL01
enquiryStatus: ACKNOWLEDGED
FXBenchMarkOrder_Accepted:
description: The response for enquired order will be published via web socket. If the current status of the deal is Accepted, you will receive the response below. In case of multiple orders, multiple dealResponses JSON objects will be present in the dealResponses JSON array.
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- dealResponses
properties:
action:
type: string
example: enquiry-response
description: 'Allowed Values: enquiry-response'
jsonReqId:
type: string
example: Req20181011776
description: The unique identifier for the JSON request. Format is alphanumeric.
maxLength: 60
senderCompId:
type: string
description: The Citi-assigned value used to identify the message sender. This was assigned to you during onboarding.
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. This was assigned to you during onboarding.
example: Sub Entity
sendingTime:
type: string
description: The time of message transmission. Always expressed in UTC (Universal Time Coordinated, also known as 'GMT.' Format is YYYYMMDD-HH:MM:SS.mmm.
example: 20180820-04:48:29.125
deals:
type: array
items:
required:
- account
- clOrdId
- ccyPair
- dealtCcy
- orderQty
- side
- fixingCode
- transactTime
- execId
- avgPx
- orderStatus
- orderId
- purposeCode
properties:
account:
type: string
description: Your Citi-assigned client identifier.
example: 109430258
clOrdId:
type: string
description: The order reference you assigned.
example: TEST12345
side:
type: string
enum:
- B
- S
description: Indicates whether you are buying (B) or selling (S) the dealt ccy.
valueDate:
type: string
description: Populated for Accepted deal.
example: 20240502
tradeDate:
type: string
description: Populated for Accepted deal.
example: 20240429
purposeCode:
type: string
description: Populates the same value sent in the request when else sent is null.
ccyPair:
type: string
description: The Currency Pair that the client is dealing on. CCY1CCY2.
maxLength: 6
example: GBPUSD
dealtCcy:
type: string
description: The currency for which you supplied the dealt amount.
maxLength: 3
example: GBP
fixingCode:
type: string
description: Fixing code requested when sending the deal.
example: QOUTED or LDN1500BFIX
transactTime:
type: string
description: Time the transaction represented by this single order occurred.
example: Mon Apr 29 12:50:33 IST 2024
execId:
type: string
description: Populates as 0 for ACCEPTED deal.
example: 0
avgPx:
type: number
description: Calculated average price of all fills on this order
example: 0
orderId:
type: number
description: Citi-assigned order ID. Same as in ACKNOWLEDGED deal.
example: 3714864
orderStatus:
type: string
example: ACCEPTED
description: The current status of the deal. Allowed value = ACCEPTED.
lastQty:
type: number
description: Populates with value 0 for ACCEPTED deals.
example: 0
example:
senderCompId: TESTCLIENT0
onBehalfOfCompId: TCL0
action: enquiry-response
jsonReqId: 56ae4527
sendingTime: 20240429-07:20:36.683
senderSubId: System
dealResponses:
- account: LDN|xxxxxxxxxx
clOrdId: TESTCL01
side: S
fixingCode: QUOTED
transactTime: Mon Apr 29 07:20:35 GMT 2024
valueDate: '20240502'
tradeDate: '20240429'
dealtCcy: USD
ccyPair: EURUSD
execId: '0'
avgPx: '0.0'
orderId: '3714864'
orderStatus: ACCEPTED
lastQty: '0'
purposeCode: 'null'
FXBenchMarkOrder_Acknowledged_Or_Rejected_2:
description: If the Bench order is in acknowledged/rejected status, below will be the format in which response will be received. In case of multiple orders, multiple dealResponses JSON objects will be present in the dealResponses JSON array. Response array can be of both Ack / Nack.
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- dealResponses
properties:
action:
type: string
example: enquiry-response
description: 'Allowed Value: enquiry-response'
jsonReqId:
type: string
example: Req20181011776
description: The unique identifier for the JSON request. Format is alphanumeric.
maxLength: 60
senderCompId:
type: string
description: The Citi-assigned value used to identify the message sender. This was assigned to you during onboarding.
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. This was assigned to you during onboarding.
example: Sub Entity
sendingTime:
type: string
description: The time of message transmission. Always expressed in UTC (Universal Time Coordinated, also known as 'GMT.' Format is YYYYMMDD-HH:MM:SS.mmm.
example: 20180820-04:48:29.125
deals:
type: array
items:
required:
- account
- clOrdId
- ccyPair
- dealtCcy
- orderQty
- side
- fixingCode
- transactTime
- execId
- avgPx
- orderStatus
- purposeCode
properties:
account:
type: string
description: Your Citi-assigned client identifier.
example: 109430258
clOrdId:
type: string
description: The order reference you assigned.
example: TEST12345
side:
type: string
enum:
- B
- S
description: Indicates whether you are buying (B) or selling (S) the dealt ccy.
valueDate:
type: string
description: Populated for an Acknowledged deal.
example: 20240502
tradeDate:
type: string
description: Populated for an Acknowledged deal.
example: 20240429
purposeCode:
type: string
description: Populates the same value sent in incoming request when sent else null.
ccyPair:
type: string
description: The currency pair that you are dealing on. CCY1CCY2.
maxLength: 6
example: GBPUSD
dealtCcy:
type: string
description: The currency for which you supplied the dealt amount.
maxLength: 3
example: GBP
fixingCode:
type: string
description: Fixing code requested when sending the deal.
example: QOUTED
transactTime:
type: string
description: Time the transaction represented by this single order occurred.
example: Mon Apr 29 12:50:33 IST 2024
execId:
type: string
description: Populates as 0 for ACKNOWLEDGED deal. A unique identifier for REJECTED deal.
example: 0 (or) Alphanumeric & special character hyphen (-)
avgPx:
type: number
description: Calculated average price of all fills on this order.
example: 0
orderId:
type: number
description: Citi-assigned order ID. Mandatory for ACKNOWLEDGED deal. Not populated for REJECTED deals
example: 3714864
orderStatus:
type: string
description: The current status of the deal.
example: ACKNOWLEDGED or REJECTED
lastQty:
type: number
description: Populates with value 0 only for ACKNOWLEDGED deals.
example: 0
cumQty:
type: number
description: Populates with value 0 only for REJECTED deals.
leavesQty:
type: number
description: Populates with value 0 only for REJECTED deals.
execType:
type: number
description: 'Populates with value: 8 for REJECTED deals. Does not get populated for ACKNOWLEDGED deals'
example: 8
ordRejReason:
type: number
description: Only for REJECTED deals. Contains rejection code.
example: 99
text:
type: string
description: Only for REJECTED deals. Contains rejection reason.
example: 0
secondaryClOrdId:
type: string
description: Secondary order reference.
example: OR12345
valueDate2:
type: string
description: 'Far Leg Value Date. Applicable for SWAP orders only. Date Format: yyyyMMdd'
example: 20250525
orderQty2:
type: number
description: Far Leg Amount. Applicable for SWAP orders only
example: 1000
example:
senderCompId: TESTCLIENT0
onBehalfOfCompId: TCL0
action: enquiry-response
jsonReqId: 56ae4527
sendingTime: 20240429-07:20:36.683
senderSubId: System
dealResponses:
- account: LDN|xxxxxxxxxx
clOrdId: TESTCL01
side: S
fixingCode: QUOTED
transactTime: Mon Apr 29 07:20:35 GMT 2024
valueDate: '20240502'
tradeDate: '20240429'
dealtCcy: USD
ccyPair: EURUSD
execId: '0'
avgPx: '0.0'
orderId: '3714864'
orderStatus: ACKNOWLEDGED
lastQty: '0'
purposeCode: 'null'
FXCustomEnquiry_Response_2:
description: When enquiryStatus value is sent as ACKNOWLEDGED, below fields will be sent. Sample given here is BenchMarkOrder response. In case of multiple orders, multiple dealResponse JSON objects will be present in the dealResponses JSON array. Response array can be of both Ack / Nack.
example:
senderCompId: TESTCLIENT0
onBehalfOfCompId: TCL0
action: enquiry-response
jsonReqId: 56ae4527
sendingTime: 20240429-07:20:36.683
senderSubId: System
dealResponses:
- account: LDN|xxxxxxx
clOrdId: TESTCL01
side: S
fixingCode: QUOTED
transactTime: Mon Apr 29 07:20:35 GMT 2024
valueDate: '20240502'
tradeDate: '20240429'
dealtCcy: USD
ccyPair: EURUSD
execId: '0'
avgPx: '0.0'
orderId: '3714864'
orderStatus: ACKNOWLEDGED
lastQty: '0'
purposeCode: 'null'
FxOrderEnquiry_2:
type: object
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- deals
properties:
action:
type: string
description: 'The service you are requesting. Allowed values: ENQUIRY.'
jsonReqId:
type: string
example: Req20181011776
description: The unique identifier that you assign in the JSON request. Must be alphanumeric.
maxLength: 60
senderCompId:
type: string
description: The Citi-assigned value used to identify the message sender. This was assigned to you during onboarding.
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. This was assigned to you during onboarding.
example: Sub Entity
sendingTime:
type: string
description: 'The time of the message transmission expressed in UTC (Universal Time Coordinated, also known as "GMT"). Format: YYYYMMDD-HH:MM:SS.mmm.'
example: 20180820-04:48:29.125
deals:
type: array
description: You must send one of the below 3 fields. All 3 fields should not be sent.
items:
required:
- clOrdId
- tradeDate
- origJsonReqId
properties:
clOrdId:
type: string
description: The unique identifier of the order. Market orders support max 15 characters. Benchmark orders support 15 characters.
example: TEST12345
tradeDate:
type: string
description: 'The trade date of the order being enquired. Format: yyyyMMdd'
example: 20250525
origJsonReqId:
type: string
description: The unique identifier of the original JSON Request.
example: Req20181011776
example:
action: ENQUIRY
senderCompId: TESTCLIENT0
onBehalfOfCompId: TCL0
jsonReqId: 56ae4527
sendingTime: 20240315-15:48:49.635
deals:
- origJsonReqId: avbghukiopl
FXBenchMarkOrder_Rated_2:
description: If the current status of the deal is COMPLETED, below fields will be sent. In case of multiple orders, multiple dealResponses JSON objects will be present in the dealResponses JSON array. Response array can be of both Ack / Nack.
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- dealResponses
properties:
action:
type: string
example: enquiry-response
description: 'Allowed Value: enquiry-response'
jsonReqId:
type: string
example: Req20181011776
description: The unique identifier for the JSON request. Format is alphanumeric.
maxLength: 60
senderCompId:
type: string
description: The Citi-assigned value used to identify the message sender. This was assigned to you during onboarding.
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. This was assigned to you during onboarding.
example: Sub Entity
sendingTime:
type: string
description: The time of message transmission. Always expressed in UTC (Universal Time Coordinated, also known as 'GMT.' Format is YYYYMMDD-HH:MM:SS.mmm.
example: 20180820-04:48:29.125
deals:
type: array
items:
required:
- account
- clOrdId
- valueDate
- tradeDate
- ccyPair
- dealtCcy
- orderQty
- side
- fixingCode
- transactTime
- execId
- avgPx
- orderId
- orderStatus
- lastQty
- contAmtValue
- lastPx
- lastSpotRate
- lastForwardPoints
- purposeCode
properties:
account:
type: string
description: Your Citi-assigned client identifier.
example: 109430258
clOrdId:
type: string
description: The order reference you assigned.
example: TEST12345
side:
type: string
enum:
- B
- S
description: Indicates whether you are buying (B) or selling (S) the dealt ccy.
valueDate:
type: string
description: Populated for a Rated deal.
example: 20240502
tradeDate:
type: string
description: Populated for a Rated deal.
example: 20240429
purposeCode:
type: string
description: Populates the same value sent in incoming request when else sent is null.
ccyPair:
type: string
description: The currency pair that you are trading on. CCY1CCY2.
maxLength: 6
example: GBPUSD
dealtCcy:
type: string
description: The currency for which you supplied the dealt amount.
maxLength: 3
example: GBP
fixingCode:
type: string
description: Fixing code when sending the deal.
example: QOUTED or LDN1500BFIX
transactTime:
type: string
description: Time the transaction represented by this single order occurred.
example: Mon Apr 29 12:50:33 IST 2024
execId:
type: string
description: Unique identifier of execution message.
example: Alphanumeric & special character hyphen (-)
avgPx:
type: number
description: Calculated average price of all fills on this order.
example: 0
orderId:
type: number
description: Citi-assigned order ID. This will be the same value as sent in orderId field of Acknowledged and Accepted deal.
example: 3714864
orderStatus:
type: string
example: COMPLETED
description: The current status of the deal. Allowed value = COMPLETED.
contAmtValue:
type: number
description: The counter amount, i.e., non-dealt amount
example: 54321.21
lastPx:
type: number
description: Outright Rate
example: 1.51446
lastQty:
type: number
description: Dealt Amount
example: 12345.56
lastSpotRate:
type: number
description: Spot Rate
example: 1.5144
lastForwardPoints:
type: number
description: Forward Points
example: 0
lastForwardPoints2:
type: number
description: Far Forward Points. Applicable for SWAP orders only.
example: 6.0e-06
valueDate2:
type: string
description: Far Leg Value Date. Applicable for SWAP orders only
example: 20250525
orderQty2:
type: number
description: Far Leg Amount. Applicable for SWAP orders only
example: 1000
settlCurrAmt:
type: number
description: Far Counter Amount. Applicable for SWAP orders only
example: 54321.21
securityId:
type: string
description: MIFID Field. ISIN Code for the FX Security
securityIdSource:
type: string
description: 'MIFID Field. Allowed Values: 4 = ISIN'
legSecurityId:
type: string
description: MIFID Field. For SWAP Deals only
legSecurityIdSource:
type: string
description: MIFID Field. For SWAP Deals only
lastCapacity:
type: string
description: 'MIFID Field. Allowed Values: 4 = Principal'
tradeReportingIndicator:
type: string
description: MIFID Field
matchType:
type: string
description: MIFID Field
example:
senderCompId: TESTCLIENT2
onBehalfOfCompId: TCL2R
action: enquiry-response
jsonReqId: 56ae4527
sendingTime: 20240429-07:20:36.683
senderSubId: System
dealResponses:
- account: LDN|xxxxxxxxxx
clOrdId: TESTCL01
side: S
fixingCode: QUOTED
transactTime: Mon Apr 29 07:20:35 GMT 2024
valueDate: '20240502'
tradeDate: '20240429'
dealtCcy: USD
ccyPair: EURUSD
execId: '323595562789'
avgPx: '7.7262'
orderId: '3714864'
orderStatus: COMPLETED
lastQty: '1'
contAmtValue: '0.13'
lastPx: '7.7262'
lastSpotRate: '7.7262'
lastForwardPoints: '0'
purposeCode: 'null'
FXMarketOrder_Rated_2:
description: If the Market order is in Rated status, below will be the format in which response will be received. In case of multiple orders, multiple dealResponses JSON objects will be present in the dealResponses JSON array. Response array can be of both Ack / Nack.
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- dealResponses
- deals
properties:
action:
type: string
example: enquiry-response
description: 'Allowed Value: enquiry-response'
jsonReqId:
type: string
example: Req20181011776
description: The unique identifier for the JSON request. Format is alphanumeric.
maxLength: 60
senderCompId:
type: string
description: The Citi-assigned value used to identify the message sender. This was assigned to you during onboarding.
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. This was assigned to you during onboarding.
example: Sub Entity
sendingTime:
type: string
description: The time of message transmission. Always expressed in UTC (Universal Time Coordinated, also known as 'GMT.' Format is YYYYMMDD-HH:MM:SS.mmm.
example: 20180820-04:48:29.125
deals:
type: array
items:
required:
- account
- clOrdId
- valueDate
- tradeDate
- ccyPair
- dealtCcy
- orderQty
- side
- fixingCode
- transactTime
- execId
- avgPx
- orderId
- orderStatus
- lastQty
- contAmtValue
- lastPx
- lastSpotRate
- lastForwardPoints
properties:
account:
type: string
description: Your Citi-assigned client identifier.
example: 109430258
clOrdId:
type: string
description: The order reference you assigned.
example: TEST12345
side:
type: string
enum:
- B
- S
description: Indicates whether you are buying (B) or selling (S) the dealt ccy.
valueDate:
type: string
description: Populated for Rated deal.
example: 20240502
purposeCode:
type: string
description: The purpose code of the order
ccyPair:
type: string
description: The currency pair that you are trading on. CCY1CCY2.
maxLength: 6
example: GBPUSD
dealtCcy:
type: string
description: The currency for which you supplied the dealt amount.
maxLength: 3
example: GBP
transactTime:
type: string
description: The time of the transaction represented by this single order occurred.
example: Mon Apr 29 12:50:33 IST 2024
execId:
type: string
description: The unique identifier of execution message. Alphanumeric & special character hyphen (-).
avgPx:
type: number
description: Calculated average price of all fills on this order.
example: 1.0935
orderId:
type: number
description: Citi-assigned order ID. This will be the same value as sent in orderId field of Acknowledged deal.
example: 3714864
orderStatus:
type: string
example: COMPLETED
description: The current status of the deal. Allowed value = COMPLETED.
contAmtValue:
type: number
description: The counter amount, i.e., non dealt amount.
example: 54321.21
lastPx:
type: number
description: Outright Rate
example: 1.51446
lastQty:
type: number
description: Dealt Amount
example: 12345.56
lastSpotRate:
type: number
description: Spot Rate
example: 1.5144
lastForwardPoints:
type: number
description: Forward Points
example: 0
customRemark1:
type: string
description: User Defined Custom Field. Value given in incoming request is reflected back.
customRemark2:
type: string
description: User Defined Custom Field. Value given in incoming request is reflected back.
customRemark3:
type: string
description: User Defined Custom Field. Value given in incoming request is reflected back.
customRemark4:
type: string
description: User Defined Custom Field. Value given in incoming request is reflected back.
customRemark5:
type: string
description: User Defined Custom Field. Value given in incoming request is reflected back.
secondaryClOrdId:
type: string
description: Secondary order reference.
example: OR12345
example:
senderCompId: TESTCLIENT0
onBehalfOfCompId: TCL0
action: enquiry-response
jsonReqId: 56ae4527
sendingTime: 20240315-15:49:01.980
senderSubId: System
dealResponses:
- account: HKG|0xxxxx4
clOrdId: TESTCL01
side: B
transactTime: Fri Mar 15 15:49:01 GMT 2024
valueDate: '20240319'
tradeDate: '20240315'
dealtCcy: USD
ccyPair: EURUSD
execId: 3086183-1710517741980
avgPx: '1.086'
orderId: TCL0-TESTCL01
orderStatus: COMPLETED
lastQty: '100.0'
text: Rated Through OLT.
contAmtValue: '92.08'
lastPx: '1.086'
lastSpotRate: '1.086'
lastForwardPoints: '0.0'
purposeCode: 'null'
FXCustomEnquiry_Response_ForAll_2:
description: When enquiryStatus value is sent as ALL, depending on the current status of the deal, an array of response(s) will be sent back. Below is the response of a BenchMarkOrder deal in Rated status containing an array of Acknowledged, Accepted and Rated responses. In case of multiple orders, multiple dealResponse JSON objects will be present in the dealResponses JSON array. Response array can be of both Ack / Nack.
example:
onBehalfOfCompId: TCL0
dealResponses:
- side: S
orderId: '4232982'
dealtCcy: EUR
orderStatus: ACKNOWLEDGED
fixingCode: QUOTED
valueDate: '20241209'
tradeDate: '20241206'
execId: '0'
clOrdId: TESTCL01
lastQty: '0'
ccyPair: EURGBP
avgPx: '0.0'
purposeCode: 'null'
transactTime: Wed Dec 11 06:43:17 GMT 2024
account: LDN|800xxxx
- side: S
orderId: '4232982'
dealtCcy: EUR
orderStatus: ACCEPTED
fixingCode: QUOTED
valueDate: '20241209'
tradeDate: '20241206'
execId: '0'
clOrdId: TESTCL01
lastQty: '0'
ccyPair: EURGBP
avgPx: '0.0'
purposeCode: 'null'
transactTime: Wed Dec 11 06:43:17 GMT 2024
account: ' LDN|800xxxx '
- side: S
orderId: '4232982'
lastPx: '0.829485'
contAmtValue: '0.83'
dealtCcy: EUR
orderStatus: COMPLETED
fixingCode: QUOTED
valueDate: '20241209'
tradeDate: '20241206'
execId: '324180074270'
lastSpotRate: '0.82952'
clOrdId: TESTCL01
lastQty: '1'
ccyPair: EURGBP
avgPx: '0.82957'
purposeCode: 'null'
transactTime: Wed Dec 11 06:43:17 GMT 2024
lastForwardPoints: '-0.000035'
account: ' LDN|800xxxx'
jsonReqId: 56ae4527
action: enquiry-response
senderCompId: ' TESTCLIENT0'
sendingTime: 20241211-06:43:17.389
FXMarketOrder_Accepted_Or_Rejected_2:
description: 'If the Market order is in Acknowledged status, the response JSON will contain following key/value pairs. Note: In case of multiple orders, multiple dealResponse JSON objects will be present in the dealResponses JSON array. Response array can be of both Ack / Nack.'
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- dealResponses
- deals
properties:
action:
type: string
example: enquiry-response
description: 'Allowed Value: enquiry-response.'
jsonReqId:
type: string
example: Req20181011776
description: The unique identifier for the JSON request. Format is alphanumeric.
maxLength: 60
senderCompId:
type: string
description: The Citi-assigned value used to identify the message sender. This was assigned to you during onboarding.
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. This was assigned to you during onboarding.
example: Sub Entity
sendingTime:
type: string
description: The time of message transmission. Always expressed in UTC (Universal Time Coordinated, also known as 'GMT.' Format is YYYYMMDD-HH:MM:SS.mmm.
example: 20180820-04:48:29.125
deals:
type: array
items:
required:
- account
- clOrdId
- ccyPair
- dealtCcy
- orderQty
- side
- fixingCode
- transactTime
- execId
- avgPx
- orderStatus
properties:
account:
type: string
description: Your Citi-assigned client identifier.
example: 109430258
clOrdId:
type: string
description: The order reference you assigned.
example: TEST12345
side:
type: string
enum:
- B
- S
description: Indicates whether you are buying (B) or selling (S) the dealt ccy.
valueDate:
type: string
description: The value date. Populated for Acknowledged deal.
example: 20240502
purposeCode:
type: string
description: The purpose code.
ccyPair:
type: string
description: The currency pair that you are trading on. CCY1CCY2.
maxLength: 6
example: GBPUSD
dealtCcy:
type: string
description: The currency for which you supplied the dealt amount.
maxLength: 3
example: GBP
transactTime:
type: string
description: The time of the transaction represented by this single order occurred.
example: Mon Apr 29 12:50:33 IST 2024
execId:
type: string
description: The unique identifier of execution message.
example: ABC123
avgPx:
type: number
description: Calculated average price of all fills on this order.
example: 0
orderId:
type: number
description: Citi-assigned order ID. Not populated for REJECTED deals.
example: 3714864
orderStatus:
type: string
description: ' The current status of the deal.'
example: ACKNOWLEDGED or REJECTED
lastQty:
type: number
description: Populates with value 0 only for ACKNOWLEDGED deals.
example: 0
cumQty:
type: number
description: Populates with value 0 only for REJECTED deals.
leavesQty:
type: number
description: Populates with value 0 only for REJECTED deals.
execType:
type: number
description: 'Populates with value: 8 for REJECTED deals. Does not get populated for ACKNOWLEDGED deals.'
example: 8
ordRejReason:
type: number
description: Only for REJECTED deals. Contains rejection code.
example: 99
text:
type: string
description: Only for REJECTED deals. Contains rejection reason.
example: 0
secondaryClOrdId:
type: string
description: Secondary order reference.
example: OR12345
example:
senderCompId: TESTCLIENT0
onBehalfOfCompId: TCL0
action: enquiry-response
jsonReqId: 56ae4527
sendingTime: 20240315-15:48:49.635
senderSubId: System
dealResponses:
- account: HKG|0xxxxx4
clOrdId: TESTCL01
side: B
transactTime: Fri Mar 15 15:48:49 GMT 2024
valueDate: '20240319'
dealtCcy: USD
ccyPair: EURUSD
execId: 3086183-1710517729635
avgPx: '0'
orderId: TCL0-TESTCL01
orderStatus: ACKNOWLEDGED
lastQty: '0'
text: Quote TCL0-TESTCL01 processed in eDealer.
purposeCode: 'null'
FxOrderCustomEnquiry_2:
description: You can enquire for a specific response or all responses available for a deal through the enquiryStatus field. Only clOrdId and enquiryStatus fields are allowed for custom enquiry. This feature is available for single order flow only.
type: object
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- deals
properties:
action:
type: string
description: 'The service you are requesting. Allowed values: ENQUIRY.'
jsonReqId:
type: string
example: Req20181011776
description: The unique identifier for the JSON request. Alphanumeric, special characters, underscores '_', and hyphens '-' are allowed.
maxLength: 60
senderCompId:
type: string
description: The Citi-assigned value used to identify the message sender. This was assigned to you during onboarding.
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. This was assigned to you during onboarding.
example: Sub Entity
sendingTime:
type: string
description: 'The time of the message transmission expressed in UTC (Universal Time Coordinated, also known as "GMT"). Format: YYYYMMDD-HH:MM:SS.mmm.'
example: 20180820-04:48:29.125
deals:
type: array
description: You can enquire for a specific response or all responses available for a deal through the enquiryStatus field. Only clOrdId and enquiryStatus fields are allowed for custom enquiry. This feature is available for single order flow only.
items:
required:
- clOrdId
- enquiryStatus
properties:
clOrdId:
type: string
description: The unique identifier that you assign to the order. A reference specific to this client/request combination. Market orders support max 15 characters. Benchmark orders support 45 characters. Alphanumeric and special character hyphen (-) allowed.
example: TEST12345
enquiryStatus:
type: string
description: 'Valid Values: ALL, ACKNOWLEDGED, ACCEPTED, COMPLETED, CANCELLED, CANCELLATION REJECTED. Note: When enquiryStatus value is sent as “ALL”, the response will contain an array of available responses for that deal. Refer to examples for sample request and response.'
example: 20250525
example:
action: ENQUIRY
senderCompId: TESTCLIENT0
onBehalfOfCompId: TCL0
jsonReqId: 56ae4527
sendingTime: 20240315-15:48:49.635
deals:
- clOrdId: TESTCL01
enquiryStatus: ACKNOWLEDGED
FXBenchMarkOrder_Accepted_2:
description: If the current status of the deal is Accepted, below fields will be sent. In case of multiple orders, multiple dealResponses JSON objects will be present in the dealResponses JSON array. Response array can be of both Ack / Nack.
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- dealResponses
properties:
action:
type: string
example: enquiry-response
description: 'Allowed Values: enuiry-response'
jsonReqId:
type: string
example: Req20181011776
description: The unique identifier for the JSON request. Format is alphanumeric.
maxLength: 60
senderCompId:
type: string
description: The Citi-assigned value used to identify the message sender. This was assigned to you during onboarding.
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. This was assigned to you during onboarding.
example: Sub Entity
sendingTime:
type: string
description: The time of message transmission. Always expressed in UTC (Universal Time Coordinated, also known as 'GMT.' Format is YYYYMMDD-HH:MM:SS.mmm.
example: 20180820-04:48:29.125
deals:
type: array
items:
required:
- account
- clOrdId
- ccyPair
- dealtCcy
- orderQty
- side
- fixingCode
- transactTime
- execId
- avgPx
- orderStatus
- orderId
- purposeCode
properties:
account:
type: string
description: Your Citi-assigned client identifier.
example: 109430258
clOrdId:
type: string
description: The order reference you assigned.
example: TEST12345
side:
type: string
enum:
- B
- S
description: Indicates whether you are buying (B) or selling (S) the dealt ccy.
valueDate:
type: string
description: Populated for Accepted deal.
example: 20240502
tradeDate:
type: string
description: Populated for Accepted deal.
example: 20240429
purposeCode:
type: string
description: Populates the same value sent in the request when else sent is null.
ccyPair:
type: string
description: The Currency Pair that the client is dealing on. CCY1CCY2.
maxLength: 6
example: GBPUSD
dealtCcy:
type: string
description: The currency for which you supplied the dealt amount.
maxLength: 3
example: GBP
fixingCode:
type: string
description: Fixing code requested when sending the deal.
example: QOUTED or LDN1500BFIX
transactTime:
type: string
description: Time the transaction represented by this single order occurred.
example: Mon Apr 29 12:50:33 IST 2024
execId:
type: string
description: Populates as 0 for ACCEPTED deal.
example: 0
avgPx:
type: number
description: Calculated average price of all fills on this order
example: 0
orderId:
type: number
description: Citi-assigned order ID. Same as in ACKNOWLEDGED deal.
example: 3714864
orderStatus:
type: string
example: ACCEPTED
description: The current status of the deal. Allowed value = ACCEPTED.
lastQty:
type: number
description: Populates with value 0 for ACCEPTED deals.
example: 0
example:
senderCompId: TESTCLIENT0
onBehalfOfCompId: TCL0
action: enquiry-response
jsonReqId: 56ae4527
sendingTime: 20240429-07:20:36.683
senderSubId: System
dealResponses:
- account: LDN|xxxxxxxxxx
clOrdId: TESTCL01
side: S
fixingCode: QUOTED
transactTime: Mon Apr 29 07:20:35 GMT 2024
valueDate: '20240502'
tradeDate: '20240429'
dealtCcy: USD
ccyPair: EURUSD
execId: '0'
avgPx: '0.0'
orderId: '3714864'
orderStatus: ACCEPTED
lastQty: '0'
purposeCode: 'null'
Order_Rated_3:
description: The response will be published via web socket for Rated orders. In case of multiple orders, multiple dealResponse JSON objects will be present in the dealResponses JSON array. Response array can be of both Ack, Nack.
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- dealResponses
- deals
properties:
action:
type: string
example: order-response
description: 'Allowed Value: order-response.'
jsonReqId:
type: string
example: Req20181011776
description: The unique identifier for the JSON request. Format is alphanumeric.
maxLength: 60
senderCompId:
type: string
description: The Citi-assigned value used to identify the firm sending the message.
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. May contain special characters ( ‘_’, ‘.’, ‘-‘).
example: Sub Entity
sendingTime:
type: string
description: The time of message transmission. Always expressed in UTC (Universal Time Coordinated, also known as 'GMT.' Format is YYYYMMDD-HH:MM:SS.mmm.
example: 20180820-04:48:29.125
deals:
type: array
items:
required:
- account
- clOrdId
- valueDate
- tradeDate
- ccyPair
- dealtCcy
- orderQty
- side
- fixingCode
- transactTime
- execId
- avgPx
- orderId
- orderStatus
- lastQty
- contAmtValue
- lastPx
- lastSpotRate
- lastForwardPoints
properties:
account:
type: string
description: Your Citi-assigned client identifier.
example: 109430258
clOrdId:
type: string
description: The order reference you assigned.
example: TEST12345
side:
type: string
enum:
- B
- S
description: Indicates whether you are buying (B) or selling (S) the dealt ccy.
valueDate:
type: string
description: Populated for Rated deal.
example: 20240502
purposeCode:
type: string
description: Returns the purpose code of the order.
ccyPair:
type: string
description: The currency pair that you are trading on.
maxLength: 6
example: GBPUSD
dealtCcy:
type: string
description: The currency for which you supplied the dealt amount.
maxLength: 3
example: GBP
transactTime:
type: string
description: The time of the transaction.
example: Mon Apr 29 12:50:33 IST 2024
execId:
type: string
description: The unique identifier of execution message. Alphanumeric & special character hyphen (-).
avgPx:
type: number
description: The calculated average price of all fills on this order
example: 1.0935
orderId:
type: number
description: Citi-assigned order ID. This will be the same value as sent in orderId field of Acknowledged deal.
example: 3714864
orderStatus:
type: string
example: COMPLETED
description: The current status of the deal. Allowed value = COMPLETED.
contAmtValue:
type: number
description: The counter amount, i.e., non-dealt amount.
example: 54321.21
lastPx:
type: number
description: Outright Rate
example: 1.51446
lastQty:
type: number
description: Amount
example: 12345.56
lastSpotRate:
type: number
description: Spot Rate
example: 1.5144
lastForwardPoints:
type: number
description: Forward Points
example: 0
customRemark1:
type: string
description: User-defined custom field. Value given in incoming request is returned.
customRemark2:
type: string
description: User-defined custom field. Value given in incoming request is returned.
customRemark3:
type: string
description: User-defined custom field. Value given in incoming request is returned.
customRemark4:
type: string
description: User-defined custom field. Value given in incoming request is returned.
customRemark5:
type: string
description: User-defined custom field. Value given in incoming request is returned.
secondaryClOrdId:
type: string
description: Secondary order reference.
example: OR12345
example:
senderCompId: TESTCLIENT0
onBehalfOfCompId: TCL0
action: order-response
jsonReqId: 56ae4527
sendingTime: 20240315-15:49:01.980
senderSubId: System
dealResponses:
- account: HKG|0xxxxx4
clOrdId: TESTDEAL01
side: B
transactTime: Fri Mar 15 15:49:01 GMT 2024
valueDate: '20240319'
tradeDate: '20240315'
dealtCcy: USD
ccyPair: EURUSD
execId: 3086183-1710517741980
avgPx: '1.086'
orderId: TCL0-TESTDEAL01
orderStatus: COMPLETED
lastQty: '100.0'
text: Rated Through OLT.
contAmtValue: '92.08'
lastPx: '1.086'
lastSpotRate: '1.086'
lastForwardPoints: '0.0'
purposeCode: 'null'
FXMarketOrder:
type: object
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- deals
properties:
action:
type: string
description: 'The service you are requesting. Allowed value: NEW.'
jsonReqId:
type: string
example: Req20181011776
description: The unique identifier that you assign in the JSON request. Must be alphanumeric.
maxLength: 60
senderCompId:
type: string
description: The Citi-assigned value used to identify the message sender. This was assigned to you during onboarding.
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. This was assigned to you during onboarding.
example: Sub Entity
sendingTime:
type: string
description: 'The time of the message transmission expressed in UTC (Universal Time Coordinated, also known as "GMT"). Format: YYYYMMDD-HH:MM:SS.mmm.'
example: 20180820-04:48:29.125
deals:
type: array
items:
required:
- account
- clOrdId
- tenor
- ccyPair
- dealtCcy
- orderQty
- side
- fixingCode
properties:
account:
type: string
description: Your Citi-assigned client identifier.
example: '109430258'
clOrdId:
type: string
description: The unique identifier that you assign to the order. Max 15 characters. Alphanumeric and special character hyphen (-) allowed.
example: TEST12345
secondaryClOrdId:
type: string
description: Secondary order reference.
example: OR12345
tenor:
type: string
description: "The following FX standard tenors are supported:\n \n|Tenor | Value |\n|---------------|-------|\nOvernight | ON |\nTom/Next | TN |\nSpot | SP |\nSpot/Next | SN |\nOne Week | 1W |\nTwo Week | 2W |\nThree Week | 3W |\nOne Month | 1M |\nTwo Month | 2M |\nThree Month | 3M |\nFour Month | 4M |\nFive Month | 5M |\nSix Month | 6M |\nSeven Month | 7M |\nEight Month | 8M |\nNine Month | 9M |\nTen Month | 10M |\nEleven Month | 11M |\nOne Year | 1Y |\nFifteen Months | 15M |\nEighteen Months | 18M |\nTwenty One Months| 21M |\nTwo Years | 2Y |\nSpecify a Broken Date| BROKEN |\n \nBroken Dates (the dates that fall between the tenors) are supported. To supply a Broken Date, the Tenor mut be specified as “BROKEN” and a Value Date specified.\n\nIf SP is supplied, this implies a SPOT instrument is requested. Otherwise the trade will be a forward. For SWAP orders, this field should have a \"-\" (hyphen) separated value e.g.: 1W-1M."
example: SP
valueDate:
type: string
description: 'The value date the order is being placed for. Required if tenor = ‘BROKEN’. Format: yyyyMMdd. By default, the valueDate rolls over to the next business day if it falls on a currency holiday. If auto rollover to the next business day is not required, notify your Citi Representative. The default setup will be disabled within the CitiFX Gateway. The configuration applies to all trades sent over API and cannot be customized at an individual trade level.'
example: 20250525
ccyPair:
type: string
description: "Please contact your Citi Salesperson to obtain a list of currency pairs currently supported by CitiFX Gateway.\nCitiFX Gateway can accept currency pairs in any of the below formats:\n - Alpha Sorted\n - BaseTerm\n - Base/Term\n - TermBase\n - Term/Base\n\nNote: Specifying term first in the currency pair field does not signify an inverted quote. Inverted quote is not supported for FX Market Orders.\n"
maxLength: 6
example: GBPUSD
dealtCcy:
type: string
description: The currency that you wish to deal on.
maxLength: 3
example: GBP
orderQty:
type: number
description: The order quanitity of the dealt currency.
example: 1000
side:
type: string
enum:
- B
- S
description: The Buy Or Sell Indicator from your perspective. B=Client buys dealt ccy S=Client sells dealt ccy.
example: B
transactTime:
type: string
description: The time of the transaction represented by this single order.
example: Mon Apr 29 12:50:33 IST 2024
purposeCode:
type: string
description: The purpose code for your branch if mandatory as per regulation in your branch.
customRemark1:
type: string
description: User-defined custom field.
customRemark2:
type: string
description: User-defined custom field.
customRemark3:
type: string
description: User-defined custom field.
customRemark4:
type: string
description: User-defined custom field.
customRemark5:
type: string
description: User-defined custom field.
ndf:
type: string
description: NDF field. Should be Y if NDF deal. Default is N if blank.
ndfCurrency:
type: string
description: NDF Currency. Applicable for NDF = Y but not mandatory. Applicable to synthetic cross. Else value will be discarded.
ndfFixingSource:
type: string
description: NDF Fixing Source. For NDFs, this field is mandatory for G10. System will discard the value in case exist for non G10 cross.
example: WMR LDN1600
startTime:
type: string
description: For time-based market orders. Format:HH:mm .
example: 13:45 GMT
purposeOfTransfer:
type: number
description: Indicates the purpose of the FX Trade. Field is numeric value and contains list of pre-defined codes configured at Citi Legal Vehicle and will be provide to you during onboarding.
debitTemplate:
type: string
description: Indicates the debit side of the deal. It is a list of pre-defined templates configured at individual entity level. Applicable only for Spot and Forward deals. Values will be provide by Citi during onboarding.
creditTemplate:
type: string
description: Indicates the credit side of the deal. It is a list of pre-defined templates configured at individual entity level. Applicable only for Spot and Forward deals. Values will be provide by Citi during onboarding.
suppressSettlement:
type: string
description: Flag to suppress the settlement on FX side.
example: Y (or) N
example:
action: NEW
senderCompId: TESTCLIENT0
onBehalfOfCompId: TC0
jsonReqId: 56ae4527
sendingTime: 20240315-15:48:49.635
deals:
- account: HKG|0xxxxx4
clOrdId: TESTDEAL01
tenor: SP
ccyPair: EURUSD
dealtCcy: USD
orderQty: '100'
side: B
transactTime: Fri Mar 15 15:48:49 GMT 2024
Order_Accepted_Or_Rejected:
description: The response will be published via web socket for Accepted or Rejected orders. In case of multiple orders, multiple dealResponse JSON objects will be present in the dealResponses JSON array. Response array can be of both Ack, Nack.
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- dealResponses
- deals
properties:
action:
type: string
example: order-response
description: 'Allowed Value: order-response.'
jsonReqId:
type: string
example: Req20181011776
description: The unique identifier for the JSON request. Format is alphanumeric.
maxLength: 60
senderCompId:
type: string
description: The Citi-assigned value used to identify the firm sending the message.
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. May contain special characters ( ‘_’, ‘.’, ‘-‘).
example: Sub Entity
sendingTime:
type: string
description: The time of message transmission. Always expressed in UTC (Universal Time Coordinated, also known as 'GMT.' Format is YYYYMMDD-HH:MM:SS.mmm.
example: 20180820-04:48:29.125
deals:
type: array
items:
required:
- account
- clOrdId
- ccyPair
- dealtCcy
- orderQty
- side
- fixingCode
- transactTime
- execId
- avgPx
- orderStatus
properties:
account:
type: string
description: Your Citi-assigned client identifier.
example: 109430258
clOrdId:
type: string
description: The order reference you assigned.
example: TEST12345
side:
type: string
enum:
- B
- S
description: Indicates whether you are buying (B) or selling (S) the dealt ccy.
example: B
valueDate:
type: string
description: Populated for Acknowledged deal.
example: 20240502
purposeCode:
type: string
description: Returns the purpose code of the order.
ccyPair:
type: string
description: The currency pair that you are trading on.
maxLength: 6
example: GBPUSD
dealtCcy:
type: string
description: The currency for which you supplied the dealt amount.
maxLength: 3
example: GBP
transactTime:
type: string
description: The time of the transaction this order occurred.
example: Mon Apr 29 12:50:33 IST 2024
execId:
type: string
description: The unique identifier of execution message.
example: ABC123
avgPx:
type: number
description: Calculated average price of all fills on this order.
example: 0
orderId:
type: number
description: Citi-assigned order ID. This is not populated for REJECTED deals.
example: 3714864
orderStatus:
type: string
description: The current status of the deal.
example: ACKNOWLEDGED or REJECTED
lastQty:
type: number
description: Populates with value 0 only for ACKNOWLEDGED deals.
example: 0
cumQty:
type: number
description: Populates with value 0 only for REJECTED deals.
leavesQty:
type: number
description: Populates with value 0 only for REJECTED deals.
execType:
type: number
description: 'Populates with value : 8 for REJECTED deals. Do not get populated for ACKNOWLEDGED deals.'
example: 8
ordRejReason:
type: number
description: Only for REJECTED deals. Contains rejection code.
example: 99
text:
type: string
description: Only for REJECTED deals. Contains actual rejection reason.
example: 0
secondaryClOrdId:
type: string
description: Secondary order reference.
example: OR12345
example:
senderCompId: TESTCLIENT0
onBehalfOfCompId: TCL0
action: order-response
jsonReqId: 56ae4527
sendingTime: 20240315-15:48:49.635
senderSubId: System
dealResponses:
- account: HKG|0xxxxx4
clOrdId: TESTDEAL01
side: B
transactTime: Fri Mar 15 15:48:49 GMT 2024
valueDate: '20240319'
dealtCcy: USD
ccyPair: EURUSD
execId: 3086183-1710517729635
avgPx: '0'
orderId: TCL0-TESTDEAL01
orderStatus: ACKNOWLEDGED
lastQty: '0'
text: Quote TCL0-TESTDEAL01 processed in eDealer.
purposeCode: 'null'
Order_Rated_4:
description: The RATED response can be consumed only through the Reporting API request. In case of multiple orders, multiple dealResponse JSON objects will be present in the dealResponses JSON array. Response array can be of both Ack, Nack.
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- dealResponses
- deals
properties:
action:
type: string
example: order-response
description: 'Allowed Value: order-response.'
jsonReqId:
type: string
example: Req20181011776
description: The unique identifier for the JSON request. Format is alphanumeric.
maxLength: 60
senderCompId:
type: string
description: The Citi-assigned value used to identify the firm sending the message.
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. May contain special characters ( ‘_’, ‘.’, ‘-‘).
example: Sub Entity
sendingTime:
type: string
description: The time of message transmission. Always expressed in UTC (Universal Time Coordinated, also known as 'GMT.' Format is YYYYMMDD-HH:MM:SS.mmm.
example: 20180820-04:48:29.125
deals:
type: array
items:
required:
- account
- clOrdId
- valueDate
- tradeDate
- ccyPair
- dealtCcy
- orderQty
- side
- fixingCode
- transactTime
- execId
- avgPx
- orderId
- orderStatus
- lastQty
- contAmtValue
- lastPx
- lastSpotRate
- lastForwardPoints
properties:
account:
type: string
description: Your Citi-assigned client identifier.
example: 109430258
clOrdId:
type: string
description: The order reference you assigned.
example: TEST12345
side:
type: string
enum:
- B
- S
description: Indicates whether you are buying (B) or selling (S) the dealt ccy.
valueDate:
type: string
description: Populated for Rated deal.
example: 20240502
purposeCode:
type: string
description: Returns the purpose code of the order.
ccyPair:
type: string
description: The currency pair that you are trading on.
maxLength: 6
example: GBPUSD
dealtCcy:
type: string
description: The currency for which you supplied the dealt amount.
maxLength: 3
example: GBP
transactTime:
type: string
description: The time of the transaction.
example: Mon Apr 29 12:50:33 IST 2024
execId:
type: string
description: The unique identifier of execution message. Alphanumeric & special character hyphen (-).
avgPx:
type: number
description: The calculated average price of all fills on this order
example: 1.0935
orderId:
type: number
description: Citi-assigned order ID. This will be the same value as sent in orderId field of Acknowledged deal.
example: 3714864
orderStatus:
type: string
example: COMPLETED
description: The current status of the deal. Allowed value = COMPLETED.
contAmtValue:
type: number
description: The counter amount, i.e., non-dealt amount.
example: 54321.21
lastPx:
type: number
description: Outright Rate
example: 1.51446
lastQty:
type: number
description: Amount
example: 12345.56
lastSpotRate:
type: number
description: Spot Rate
example: 1.5144
lastForwardPoints:
type: number
description: Forward Points
example: 0
customRemark1:
type: string
description: User-defined custom field. Value given in incoming request is returned.
customRemark2:
type: string
description: User-defined custom field. Value given in incoming request is returned.
customRemark3:
type: string
description: User-defined custom field. Value given in incoming request is returned.
customRemark4:
type: string
description: User-defined custom field. Value given in incoming request is returned.
customRemark5:
type: string
description: User-defined custom field. Value given in incoming request is returned.
secondaryClOrdId:
type: string
description: Secondary order reference.
example: OR12345
example:
senderCompId: TESTCLIENT0
onBehalfOfCompId: TCL0
action: order-response
jsonReqId: 56ae4527
sendingTime: 20240315-15:49:01.980
senderSubId: System
dealResponses:
- account: HKG|0xxxxx4
clOrdId: TESTDEAL01
side: B
transactTime: Fri Mar 15 15:49:01 GMT 2024
valueDate: '20240319'
tradeDate: '20240315'
dealtCcy: USD
ccyPair: EURUSD
execId: 3086183-1710517741980
avgPx: '1.086'
orderId: TCL0-TESTDEAL01
orderStatus: COMPLETED
lastQty: '100.0'
text: Rated Through OLT.
contAmtValue: '92.08'
lastPx: '1.086'
lastSpotRate: '1.086'
lastForwardPoints: '0.0'
purposeCode: 'null'
FXMarketOrder_2:
type: object
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- deals
properties:
action:
type: string
description: 'The service you are requesting. Allowed values: NEW.'
jsonReqId:
type: string
example: Req20181011776
description: The unique identifier that you assign in the JSON request. Must be alphanumeric.
maxLength: 60
senderCompId:
type: string
description: The Citi-assigned value used to identify the message sender. This was assigned to you during onboarding.
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. This was assigned to you during onboarding.
example: Sub Entity
sendingTime:
type: string
description: 'The time of the message transmission expressed in UTC (Universal Time Coordinated, also known as "GMT"). Format: YYYYMMDD-HH:MM:SS.mmm.'
example: 20180820-04:48:29.125
deals:
type: array
items:
required:
- account
- clOrdId
- tenor
- ccyPair
- dealtCcy
- orderQty
- side
- fixingCode
properties:
account:
type: string
description: Your Citi-assigned client identifier.
example: '109430258'
clOrdId:
type: string
description: The unique identifier that you assign to the order. Max 15 characters. Alphanumeric and special character hyphen (-) allowed.
example: TEST12345
secondaryClOrdId:
type: string
description: Secondary order reference.
example: OR12345
tenor:
type: string
description: "The following FX standard tenors are supported:\n \n|Tenor | Value |\n|---------------|-------|\nOvernight | ON |\nTom/Next | TN |\nSpot | SP |\nSpot/Next | SN |\nOne Week | 1W |\nTwo Week | 2W |\nThree Week | 3W |\nOne Month | 1M |\nTwo Month | 2M |\nThree Month | 3M |\nFour Month | 4M |\nFive Month | 5M |\nSix Month | 6M |\nSeven Month | 7M |\nEight Month | 8M |\nNine Month | 9M |\nTen Month | 10M |\nEleven Month | 11M |\nOne Year | 1Y |\nFifteen Months | 15M |\nEighteen Months | 18M |\nTwenty One Months| 21M |\nTwo Years | 2Y |\nSpecify a Broken Date| BROKEN |\n \nBroken Dates (the dates that fall between the tenors) are supported. To supply a Broken Date, the Tenor mut be specified as “BROKEN” and a Value Date specified.\n\nIf SP is supplied, this implies a SPOT instrument is requested. Otherwise the trade will be a forward. For SWAP orders, this field should have a \"-\" (hyphen) separated value e.g.: 1W-1M."
example: SP
valueDate:
type: string
description: 'The value date the order is being placed for. Required if tenor = ‘BROKEN’. Format: yyyyMMdd. By default, the valueDate rolls over to the next business day if it falls on a currency holiday. If auto rollover to the next business day is not required, notify your Citi Representative. The default setup will be disabled within the CitiFX Gateway. The configuration applies to all trades sent over API and cannot be customized at an individual trade level.'
example: 20250525
ccyPair:
type: string
description: "Please contact your Citi Salesperson to obtain a list of currency pairs currently supported by CitiFX Gateway.\nCitiFX Gateway can accept currency pairs in any of the below formats:\n - Alpha Sorted\n - BaseTerm\n - Base/Term\n - TermBase\n - Term/Base\n\nNote: Specifying term first in the currency pair field does not signify an inverted quote. Inverted quote is not supported for FX Market Orders.\n"
maxLength: 6
example: GBPUSD
dealtCcy:
type: string
description: The currency that you wish to deal on.
maxLength: 3
example: GBP
orderQty:
type: number
description: The order quanitity of the dealt currency.
example: 1000
side:
type: string
enum:
- B
- S
description: The Buy Or Sell Indicator from your perspective. B=Client buys dealt ccy S=Client sells dealt ccy.
example: B
transactTime:
type: string
description: The time of the transaction represented by this single order.
example: Mon Apr 29 12:50:33 IST 2024
purposeCode:
type: string
description: The purpose code for your branch if mandatory as per regulation in your branch.
customRemark1:
type: string
description: User-defined custom field.
customRemark2:
type: string
description: User-defined custom field.
customRemark3:
type: string
description: User-defined custom field.
customRemark4:
type: string
description: User-defined custom field.
customRemark5:
type: string
description: User-defined custom field.
ndf:
type: string
description: NDF field. Should be Y if NDF deal. Default is N if blank.
ndfCurrency:
type: string
description: NDF Currency. Applicable for NDF = Y but not mandatory. Applicable to synthetic cross. Else value will be discarded.
ndfFixingSource:
type: string
description: NDF Fixing Source. For NDFs, this field is mandatory for G10. System will discard the value in case exist for non G10 cross.
example: WMR LDN1600
startTime:
type: string
description: For time-based market orders. Format:HH:mm .
example: 13:45 GMT
purposeOfTransfer:
type: number
description: Indicates the purpose of the FX Trade. Field is numeric value and contains list of pre-defined codes configured at Citi Legal Vehicle and will be provide to you during onboarding.
debitTemplate:
type: string
description: Indicates the debit side of the deal. It is a list of pre-defined templates configured at individual entity level. Applicable only for Spot and Forward deals. Values will be provide by Citi during onboarding.
creditTemplate:
type: string
description: Indicates the credit side of the deal. It is a list of pre-defined templates configured at individual entity level. Applicable only for Spot and Forward deals. Values will be provide by Citi during onboarding.
suppressSettlement:
type: string
description: Flag to suppress the settlement on FX side.
example: Y (or) N
example:
action: NEW
senderCompId: TESTCLIENT0
onBehalfOfCompId: TC0
jsonReqId: 56ae4527
sendingTime: 20240315-15:48:49.635
deals:
- account: HKG|0xxxxx4
clOrdId: TESTDEAL01
tenor: SP
ccyPair: EURUSD
dealtCcy: USD
orderQty: '100'
side: B
transactTime: Fri Mar 15 15:48:49 GMT 2024
Order_Accepted_Or_Rejected_2:
description: In case of multiple orders, multiple dealResponse JSON objects will be present in the dealResponses JSON array. Response array can be of both Ack, Nack.
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- dealResponses
- deals
properties:
action:
type: string
example: order-response
description: 'Allowed Value: order-response.'
jsonReqId:
type: string
example: Req20181011776
description: The unique identifier for the JSON request. Format is alphanumeric.
maxLength: 60
senderCompId:
type: string
description: The Citi-assigned value used to identify the firm sending the message.
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. May contain special characters ( ‘_’, ‘.’, ‘-‘).
example: Sub Entity
sendingTime:
type: string
description: The time of message transmission. Always expressed in UTC (Universal Time Coordinated, also known as 'GMT.' Format is YYYYMMDD-HH:MM:SS.mmm.
example: 20180820-04:48:29.125
deals:
type: array
items:
required:
- account
- clOrdId
- ccyPair
- dealtCcy
- orderQty
- side
- fixingCode
- transactTime
- execId
- avgPx
- orderStatus
properties:
account:
type: string
description: Your Citi-assigned client identifier.
example: 109430258
clOrdId:
type: string
description: The order reference you assigned.
example: TEST12345
side:
type: string
enum:
- B
- S
description: Indicates whether you are buying (B) or selling (S) the dealt ccy.
example: B
valueDate:
type: string
description: Populated for Acknowledged deal.
example: 20240502
purposeCode:
type: string
description: Returns the purpose code of the order.
ccyPair:
type: string
description: The currency pair that you are trading on.
maxLength: 6
example: GBPUSD
dealtCcy:
type: string
description: The currency for which you supplied the dealt amount.
maxLength: 3
example: GBP
transactTime:
type: string
description: The time of the transaction this order occurred.
example: Mon Apr 29 12:50:33 IST 2024
execId:
type: string
description: The unique identifier of execution message.
example: ABC123
avgPx:
type: number
description: Calculated average price of all fills on this order.
example: 0
orderId:
type: number
description: Citi-assigned order ID. This is not populated for REJECTED deals.
example: 3714864
orderStatus:
type: string
description: The current status of the deal.
example: ACKNOWLEDGED or REJECTED
lastQty:
type: number
description: Populates with value 0 only for ACKNOWLEDGED deals.
example: 0
cumQty:
type: number
description: Populates with value 0 only for REJECTED deals.
leavesQty:
type: number
description: Populates with value 0 only for REJECTED deals.
execType:
type: number
description: 'Populates with value : 8 for REJECTED deals. Do not get populated for ACKNOWLEDGED deals.'
example: 8
ordRejReason:
type: number
description: Only for REJECTED deals. Contains rejection code.
example: 99
text:
type: string
description: Only for REJECTED deals. Contains actual rejection reason.
example: 0
secondaryClOrdId:
type: string
description: Secondary order reference.
example: OR12345
example:
senderCompId: TESTCLIENT0
onBehalfOfCompId: TCL0
action: order-response
jsonReqId: 56ae4527
sendingTime: 20240315-15:48:49.635
senderSubId: System
dealResponses:
- account: HKG|0xxxxx4
clOrdId: TESTDEAL01
side: B
transactTime: Fri Mar 15 15:48:49 GMT 2024
valueDate: '20240319'
dealtCcy: USD
ccyPair: EURUSD
execId: 3086183-1710517729635
avgPx: '0'
orderId: TCL0-TESTDEAL01
orderStatus: ACKNOWLEDGED
lastQty: '0'
text: Quote TCL0-TESTDEAL01 processed in eDealer.
purposeCode: 'null'
FXTradeRequest:
type: object
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- deals
properties:
action:
type: string
description: 'The service you are requesting. Allowed values: order-request.'
maxLength: 20
jsonReqId:
type: string
example: Req20181011776
description: The unique identifier that you assign in the JSON request. Must be alphanumeric.
maxLength: 100
senderCompId:
type: string
description: The Citi-assigned value used to identify the message sender. May contain special characters ( ‘_’, ‘.’, ‘-‘).
maxLength: 20
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. May contain special characters ( ‘_’, ‘.’, ‘-‘).
maxLength: 20
example: ClientName
sendingTime:
type: string
description: The time of the message transmission expressed in UTC (Universal Time Coordinated, also known as "GMT") in format YYYYMMDD-HH:MM:SS.mmm
example: 20180820-04:48:29.125
deals:
type: array
items:
required:
- account
- clOrdId
- tenor
- dealtCcy
- ccyPair
- side
- orderQty
- rateSetId
- ordType
properties:
account:
type: string
description: Your Citi-assigned client identifier. This may contain special characters ( ‘_’, ‘.’, ‘-‘).
maxLength: 50
example: '109430258'
clOrdId:
type: string
description: The unique identifier of the order that you assign. It should be a reference specific to the client/request combination.
maxLength: 64
example: TEST12345
tenor:
type: string
description: "The following FX standard tenors are supported:\n\n|Tenor |\tValue|\n| ----- | ------------|\n|Overnight\t| ON\t|\n|Tom/Next | TN\t|\n|Spot |SP\t|\n|Spot/Next |SN\t|\n|One Week |1W\t|\n|Two Week |2W\t|\n|Three Week |3W\t|\n|One Month |1M\t|\n|Two Month |2M\t|\n|Three Month |3M\t|\n|Four Month |4M\t|\n|Five Month |5M\t|\n|Six Month |6M\t|\n|Seven Month |7M\t|\n|Eight Month |8M\t|\n|Nine Month |9M\t|\n|Ten Month |10M\t|\n|Eleven Month |11M\t|\n|One Year |1Y\t|\n|Fifteen Months |15M\t|\n|Eighteen Months |18M\t|\n|Twenty One Months |21M\t|\n|Two Years |2Y\t|\n|Specify a Broken Date| BROKEN |\n\nIf providing a Broken Date, i.e. a Value Date is specified, the Tenor must be populated with ‘BROKEN’."
maxLength: 10
example: SP
valueDate:
type: string
format: date
description: 'The value date the order is being placed for. Only required if tenor=’BROKEN’. Format: yyyy-MM-dd.'
example: '2011-05-05'
dealtCcy:
type: string
description: The Currency that you wish to deal on. Please contact your Citi representative to obtain a list supported currency pairs.
maxLength: 3
example: GBP
ccyPair:
type: string
description: The Currency Pair that you are dealing on. Please discuss with your Citi Representative on your preference of sending the value of currency pair in either BaseTerm format or alphabetic sort order.
maxLength: 6
example: GBPUSD
side:
type: string
enum:
- B
- S
description: The Buy Or Sell indicator from your perspective. B=Client buys dealt ccy S=Client sells dealt ccy.
example: B
orderQty:
type: number
format: double
description: The Order quantity of the dealt currency.
example: 100000
customTenorUnit:
type: integer
description: 'The tenor unit to be used when booking a trade with a Tenor type of T. Current supported values are 1, 3, 5. Field Type: Integer.'
example: 1
clientData:
type: string
description: 'Optional. This field will take a string value and whatever you send in it will be sent back to you as we received it. This field value will be available in the final report.
Key1:Value1|Key2:Value2|Key3:Value
'
maxLength: 30
example: Amount:1234|onBehalfOf:ClientB
clientData2:
type: string
description: 'Optional. This field will take a string value and whatever you send in it will be sent back to you as we received it. This field may be available in the final report.
Key1:Value1|Key2:Value2|Key3:Value
'
maxLength: 30
example: Amount:1234|onBehalfOf:ClientB
clientData3:
type: string
description: 'Optional. This field will take a string value and whatever you send in it will be sent back to you as we received it.
Key1:Value1|Key2:Value2|Key3:Value"
'
example: Amount:1234|onBehalfOf:ClientB
maxLength: 30
clientData4:
type: string
description: 'Optional. This field will take a string value and whatever you send in it will be sent back to you as we received it.
Key1:Value1|Key2:Value2|Key3:Value"
'
maxLength: 30
example: Amount:1234|onBehalfOf:ClientB
clientData5:
type: string
description: 'Optional. This field will take a string value and whatever you send in it will be sent back to you as we received it.
.Key1:Value1|Key2:Value2|Key3:Value"
'
maxLength: 30
example: Amount:1234|onBehalfOf:ClientB
rateSetId:
type: integer
format: int32
description: Required for all InstantFX destined orders and should contain the IFX RateSetID as the value.
example: 417323
ordType:
type: string
description: 'The Order type. Should be one of the following values:'
enum:
- STANDARD
- PRE
- DRAWDOWN
- REFUND
- FORECAST
- STAGING
example: STANDARD
maxLength: 15
origClOrdId:
type: string
format: int64
description: Conditional field. Mandatory if ordType =”REFUND”. Send the value received in the “orderId” field of the standard order response published by Citi.
example: '12345'
udc1:
type: string
description: Optional field for the purpose code defined for your branch if a purpose code is mandatory as per regulation.
maxLength: 1
example: '3'
udc2:
type: string
description: Optional field for the purpose code defined for your branch if a purpose code is mandatory as per regulation.
maxLength: 1
example: '2'
udc3:
type: string
description: Optional field for the purpose code defined for your branch if a purpose code is mandatory as per regulation.
maxLength: 1
example: '1'
example:
action: order-request
senderCompId: IFXCLIENT0
onBehalfOfCompId: IFXCLIENT0
jsonReqId: brs-25-09-2018-03
sendingTime: 20180927-12:12:56.807
deals:
- clOrdId: test1134-27-09-2018-req4
account: XXXXXXXXXXX
ccyPair: EURUSD
tenor: SP
dealtCcy: EUR
side: B
orderQty: 100
rateSetId: 142310
ordType: STANDARD
ExecutionReport:
description: "Note: The order response message will be published via web socket. Please see the User Guide tab for more information on using the web\n socket connection."
type: object
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
properties:
action:
type: string
description: Defines the action of the message. Value will be order-response.
maxLength: 20
example: order-response
jsonReqId:
type: string
description: The unique identifier for the JSON request. Format is alphanumeric.
maxLength: 100
example: Req20181011776
senderCompId:
type: string
description: The Citi-assigned value used to identify the firm sending the message.
maxLength: 20
example: clientname
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. May contain special characters ( ‘_’, ‘.’, ‘-‘).
maxLength: 20
example: clientname
sendingTime:
type: string
description: '"The time of message transmission. Always expressed in UTC (Universal Time Coordinated, also known as "GMT") in format: YYYYMMDD-HH:MM:SS.mmm."
'
example: 20180820-04:48:31.155
errorCode:
type: integer
description: The error code associated with the response. See the Error Codes tab for a complete list.
example: 99
errorMessage:
type: string
description: The error message associated with the response. See the Error Codes tab for a complete list.
example: unable to process your request
dealResponses:
type: array
items:
required:
- clOrdId
- account
- orderId
- ordStatus
- ccyPair
- tenor
- dealtCcy
- side
- orderQty
- rateSetId
- counterCcy
- contAmtValue
- lastSpotRate
- lastForwardPoints
- outrightRate
- rejectCode
- citiMergedOrder
- customTenorUnit
- ordType
- isBookedWithMktRate
- isBookedWithMRF
- mrfPercentage
- mrfComparisionRate
- mrfVariance
properties:
clOrdId:
type: string
description: The unique identifier of the order that you assigned.
maxLength: 64
example: '22136'
account:
type: string
description: Your account ID. May contain special characters ( ‘_’, ‘.’, ‘-‘).
maxLength: 50
example: ABC123
orderId:
type: string
format: int64
description: The Citi-assigned Order reference.
example: '123456'
ordStatus:
type: string
maxLength: 15
enum:
- BOOKED
- MERGED
- PENDING
- ACCEPTED
- REJECTED
description: "Status description: \n- PENDING: For InstantFX credit check failed orders/late orders/refund tolerance failed orders.\n- MERGED: Applicable only to ‘Net & Merge’ InstantFX clients; where two or more orders are for the same ccy pair and value date are merged to create a single, netted Order and the original, contributing orders will be flagged as ‘Merged’ orders with a cross reference to the Citi created order. \n- BOOKED: Order is booked.\n- ACCEPTED: Applicable only for pre-orders (intent to pay).\n- REJECTED: Order request rejected.\n"
example: BOOKED
ccyPair:
type: string
description: The currency pair that you are trading on. Please discuss your preference of sending the value of currency pair in either BaseTerm format or alphabetic sort order with your Citi Representative.
maxLength: 6
example: GBPUSD
tenor:
type: string
description: The Tenor the order is being placed for.
maxLength: 10
example: BROKEN
valueDate:
type: string
format: date
description: 'The value date of the order in format: yyyy-MM-dd'
example: '2012-11-15'
dealtCcy:
type: string
description: The currency for which you supplied the dealt amount.
maxLength: 3
example: USD
side:
type: string
description: Indicates whether you are buying (B) or selling (S) the dealt ccy.
enum:
- B
- S
example: S
orderQty:
type: string
format: double
description: The dealt ccy amount
example: '1000'
rateSetId:
type: integer
description: If the rating method was IFX, this is the Rate Set Id used in the rating of the order. For Live Rates orders, this will be set to zero. In case of a Refund order, it is the rate set Id previously used to book original order.
example: 41319
counterCcy:
type: string
description: The counter ccy of the ccy pair, not the dealt ccy.
example: GBP
maxLength: 3
contAmtValue:
type: string
format: double
description: The calculated counter ccy amount.
example: '6543.65'
lastSpotRate:
type: string
format: double
description: The spot rate applied to the order.
example: '1.5282'
lastForwardPoints:
type: string
format: double
description: The forward points applied to the order. Will be zero for spot transactions.
example: '0'
outrightRate:
type: string
format: double
description: The outright (spot and fwd points) rate applied to the Order.
example: '1.5282'
rejectCode:
type: integer
description: The reject code if order status = ‘REJECTED’ (rejected).
example: 99
rejectReason:
type: string
description: The reason for rejection if order status = ‘REJECTED’’ (rejected).
maxLength: 250
citiMergedOrder:
type: boolean
description: Indicates whether this is a merged order created by Citi. Only applicable to ‘Net & Merge’ clients.
clOrdLinkId:
type: string
format: int64
description: 'The Citi-assigned Merged Order reference. This is applicable only to ‘Net & Merge’ InstantFX clients; where two or more orders are for the same ccy pair and value date, will be merged to create a single, netted Order and the original, contributing orders will be flagged as ‘Merged’ orders with a cross reference to the Citi created order.
'
fixingDate:
type: string
format: date
description: 'Optional field relating to NDF trades only. The fixing date of the NDF Order in format: yyyy-MM-dd'
example: '2012-11-12'
customTenorUnit:
type: integer
description: The tenor unit to be used when booking a trade with a Tenor type of T. Current supported values are 1, 3, 5.
example: 1
clientData:
type: string
description: Contains the value that was sent in the original request.
maxLength: 30
example: Amount:1234|onBehalfOf:ClientB
clientData2:
type: string
description: Contains the value that was sent in the original request.
maxLength: 30
example: Amount:1234|onBehalfOf:ClientB
clientData3:
type: string
description: Contains the value that was sent in the original request.
maxLength: 30
example: Amount:1234|onBehalfOf:ClientB
clientData4:
type: string
description: Contains the value that was sent in the original request.
maxLength: 30
example: Amount:1234|onBehalfOf:ClientB
clientData5:
type: string
description: Contains the value that was sent in the original request.
maxLength: 30
example: Amount:1234|onBehalfOf:ClientB
origClOrdId:
type: string
format: int64
description: Conditional field. Mandatory for ordType =”REFUND”. The value received in the “orderId” field of the standard order response published by Citi.
example: '123456'
ordType:
description: The order type. Will be one of the following values
type: string
maxLength: 15
enum:
- STANDARD
- REFUND
- PRE
- DRAWDOWN
- FORECAST
- STAGING
example: STANDARD
isBookedWithMRF:
type: boolean
description: 'This flag will be set if the order is booked with an adjusted rate. Note: Deals will be booked with an adjusted rate whenever MRF happens if you opted for it.'
isBookedWithMktRate:
type: boolean
description: Flag to indicate if the order is booked on market rate
mrfId:
type: string
fomrat: int32
description: Conditional field. The reference number for the adjusted rate if isBookedWithMRF =”TRUE”.
example: '9123'
mrfPercentage:
type: string
format: double
description: Percentage that is used to adjust the rate.
example: '3.54'
mrfComparisionRate:
type: string
format: double
description: Rate at which Citi compared in market while order booking.
example: '1.5982'
mrfVariance:
type: string
format: double
description: The variance between rate set rate and current market rate.
example: '4.58'
udc1:
type: string
description: The purpose code received in the order request.
example: '3'
udc2:
type: string
description: Purpose code received in the order request.
example: '2'
udc3:
type: string
description: Purpose code received in the order request.
example: '1'
backOffRef:
type: string
description: Back office settlement reference number for booked orders. Value will be null in the order response. The value can be obtained through a report request for the booked order. Please contact your Citi Representative to request the report.
maxLength: 60
example: 1054T31966
uniqueTradeIdentifier:
type: string
description: UTI value for booked orders. This value will be null in the order response. The value can be obtained through Report request for the booked order. Please contact your Citi Representative to request the report.
example: '1.0308657177112268e+21'
example:
action: order-response
jsonReqId: brs-25-09-2018-03
senderCompId: IFXCLIENT0
onBehalfOfCompId: IFXCLIENT0
sendingTime: 20180927-08:16:39.905
dealResponses:
- clOrdId: test1134-27-09-2018-req52
account: XXXXXXXXXXX
orderId: '2755429'
ordStatus: BOOKED
ccyPair: EURGBP
tenor: BROKEN
valueDate: '2018-10-05'
dealtCcy: EUR
side: B
orderQty: '100'
rateSetId: 142314
counterCcy: GBP
contAmtValue: '89.52'
lastSpotRate: '0.89516'
lastForwardPoints: '0'
outrightRate: '0.89516'
rejectCode: 0
citiMergedOrder: false
fixingDate: '2018-10-25'
customTenorUnit: 0
ordType: STANDARD
isBookedWithMktRate: false
isBookedWithMRF: false
mrfPercentage: '0'
mrfComparisionRate: '0'
mrfVariance: '0'
backOffRef: ''
uniqueTradeIdentifier: ''
- clOrdId: test1134-27-09-2018-req51
account: XXXXXXXXXXX
orderId: '2755432'
ordStatus: BOOKED
ccyPair: EURUSD
tenor: SP
valueDate: '2018-10-01'
dealtCcy: EUR
side: B
orderQty: '100'
rateSetId: 142314
counterCcy: USD
contAmtValue: '117.5'
lastSpotRate: '1.175'
lastForwardPoints: '0'
outrightRate: '1.175'
rejectCode: 0
citiMergedOrder: false
fixingDate: '2018-10-25'
customTenorUnit: 0
ordType: STANDARD
isBookedWithMktRate: false
isBookedWithMRF: false
mrfPercentage: '0'
mrfComparisionRate: '0'
mrfVariance: '0'
backOffRef: ''
uniqueTradeIdentifier: ''
ExecutionReport_2:
type: object
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
properties:
action:
type: string
description: Defines the action of the message. Value will be order-response.
maxLength: 20
example: order-response
jsonReqId:
type: string
description: The unique identifier for the JSON request. Format is alphanumeric.
maxLength: 100
example: Req20181011776
senderCompId:
type: string
description: The Citi-assigned value used to identify the firm sending the message.
maxLength: 20
example: clientname
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. May contain special characters ( ‘_’, ‘.’, ‘-‘).
maxLength: 20
example: clientname
sendingTime:
type: string
description: '"The time of message transmission. Always expressed in UTC (Universal Time Coordinated, also known as "GMT") in format: YYYYMMDD-HH:MM:SS.mmm."
'
example: 20180820-04:48:31.155
errorCode:
type: integer
description: The error code associated with the response. See the Error Codes tab for a complete list.
example: 99
errorMessage:
type: string
description: The error message associated with the response. See the Error Codes tab for a complete list.
example: unable to process your request
dealResponses:
type: array
items:
required:
- clOrdId
- account
- orderId
- ordStatus
- ccyPair
- tenor
- dealtCcy
- side
- orderQty
- rateSetId
- counterCcy
- contAmtValue
- lastSpotRate
- lastForwardPoints
- outrightRate
- rejectCode
- citiMergedOrder
- customTenorUnit
- ordType
- isBookedWithMktRate
- isBookedWithMRF
- mrfPercentage
- mrfComparisionRate
- mrfVariance
properties:
clOrdId:
type: string
description: The unique identifier of the order that you assigned.
maxLength: 64
example: '22136'
account:
type: string
description: Your account ID. May contain special characters ( ‘_’, ‘.’, ‘-‘).
maxLength: 50
example: ABC123
orderId:
type: string
format: int64
description: The Citi-assigned Order reference.
example: '123456'
ordStatus:
type: string
maxLength: 15
enum:
- BOOKED
- MERGED
- PENDING
- ACCEPTED
- REJECTED
description: "Status description: \n- PENDING: For InstantFX credit check failed orders/late orders/refund tolerance failed orders.\n- MERGED: Applicable only to ‘Net & Merge’ InstantFX clients; where two or more orders are for the same ccy pair and value date are merged to create a single, netted Order and the original, contributing orders will be flagged as ‘Merged’ orders with a cross reference to the Citi created order. \n- BOOKED: Order is booked.\n- ACCEPTED: Applicable only for pre-orders (intent to pay).\n- REJECTED: Order request rejected.\n"
example: BOOKED
ccyPair:
type: string
description: The currency pair that you are trading on. Please discuss your preference of sending the value of currency pair in either BaseTerm format or alphabetic sort order with your Citi Representative.
maxLength: 6
example: GBPUSD
tenor:
type: string
description: The Tenor the order is being placed for.
maxLength: 10
example: BROKEN
valueDate:
type: string
format: date
description: 'The value date of the order in format: yyyy-MM-dd'
example: '2012-11-15'
dealtCcy:
type: string
description: The currency for which you supplied the dealt amount.
maxLength: 3
example: USD
side:
type: string
description: Indicates whether you are buying (B) or selling (S) the dealt ccy.
enum:
- B
- S
example: S
orderQty:
type: string
format: double
description: The dealt ccy amount
example: '1000'
rateSetId:
type: integer
description: If the rating method was IFX, this is the Rate Set Id used in the rating of the order. For Live Rates orders, this will be set to zero. In case of a Refund order, it is the rate set Id previously used to book original order.
example: 41319
counterCcy:
type: string
description: The counter ccy of the ccy pair, not the dealt ccy.
example: GBP
maxLength: 3
contAmtValue:
type: string
format: double
description: The calculated counter ccy amount.
example: '6543.65'
lastSpotRate:
type: string
format: double
description: The spot rate applied to the order.
example: '1.5282'
lastForwardPoints:
type: string
format: double
description: The forward points applied to the order. Will be zero for spot transactions.
example: '0'
outrightRate:
type: string
format: double
description: The outright (spot and fwd points) rate applied to the Order.
example: '1.5282'
rejectCode:
type: integer
description: The reject code if order status = ‘REJECTED’ (rejected).
example: 99
rejectReason:
type: string
description: The reason for rejection if order status = ‘REJECTED’’ (rejected).
maxLength: 250
citiMergedOrder:
type: boolean
description: Indicates whether this is a merged order created by Citi. Only applicable to ‘Net & Merge’ clients.
clOrdLinkId:
type: string
format: int64
description: 'The Citi-assigned Merged Order reference. This is applicable only to ‘Net & Merge’ InstantFX clients; where two or more orders are for the same ccy pair and value date, will be merged to create a single, netted Order and the original, contributing orders will be flagged as ‘Merged’ orders with a cross reference to the Citi created order.
'
fixingDate:
type: string
format: date
description: 'Optional field relating to NDF trades only. The fixing date of the NDF Order in format: yyyy-MM-dd'
example: '2012-11-12'
customTenorUnit:
type: integer
description: The tenor unit to be used when booking a trade with a Tenor type of T. Current supported values are 1, 3, 5.
example: 1
clientData:
type: string
description: Contains the value that was sent in the original request.
maxLength: 30
example: Amount:1234|onBehalfOf:ClientB
clientData2:
type: string
description: Contains the value that was sent in the original request.
maxLength: 30
example: Amount:1234|onBehalfOf:ClientB
clientData3:
type: string
description: Contains the value that was sent in the original request.
maxLength: 30
example: Amount:1234|onBehalfOf:ClientB
clientData4:
type: string
description: Contains the value that was sent in the original request.
maxLength: 30
example: Amount:1234|onBehalfOf:ClientB
clientData5:
type: string
description: Contains the value that was sent in the original request.
maxLength: 30
example: Amount:1234|onBehalfOf:ClientB
origClOrdId:
type: string
format: int64
description: Conditional field. Mandatory for ordType =”REFUND”. The value received in the “orderId” field of the standard order response published by Citi.
example: '123456'
ordType:
description: The order type. Will be one of the following values
type: string
maxLength: 15
enum:
- STANDARD
- REFUND
- PRE
- DRAWDOWN
- FORECAST
- STAGING
example: STANDARD
isBookedWithMRF:
type: boolean
description: 'This flag will be set if the order is booked with an adjusted rate. Note: Deals will be booked with an adjusted rate whenever MRF happens if you opted for it.'
isBookedWithMktRate:
type: boolean
description: Flag to indicate if the order is booked on market rate
mrfId:
type: string
fomrat: int32
description: Conditional field. The reference number for the adjusted rate if isBookedWithMRF =”TRUE”.
example: '9123'
mrfPercentage:
type: string
format: double
description: Percentage that is used to adjust the rate.
example: '3.54'
mrfComparisionRate:
type: string
format: double
description: Rate at which Citi compared in market while order booking.
example: '1.5982'
mrfVariance:
type: string
format: double
description: The variance between rate set rate and current market rate.
example: '4.58'
udc1:
type: string
description: The purpose code received in the order request.
example: '3'
udc2:
type: string
description: Purpose code received in the order request.
example: '2'
udc3:
type: string
description: Purpose code received in the order request.
example: '1'
backOffRef:
type: string
description: Back office settlement reference number for booked orders. Value will be null in the order response. The value can be obtained through a report request for the booked order. Please contact your Citi Representative to request the report.
maxLength: 60
example: 1054T31966
uniqueTradeIdentifier:
type: string
description: UTI value for booked orders. This value will be null in the order response. The value can be obtained through Report request for the booked order. Please contact your Citi Representative to request the report.
example: '1.0308657177112268e+21'
example:
action: order-response
jsonReqId: brs-25-09-2018-03
senderCompId: IFXCLIENT0
onBehalfOfCompId: IFXCLIENT0
sendingTime: 20180927-08:16:39.905
dealResponses:
- clOrdId: test1134-27-09-2018-req52
account: XXXXXXXXXXX
orderId: '2755429'
ordStatus: BOOKED
ccyPair: EURGBP
tenor: BROKEN
valueDate: '2018-10-05'
dealtCcy: EUR
side: B
orderQty: '100'
rateSetId: 142314
counterCcy: GBP
contAmtValue: '89.52'
lastSpotRate: '0.89516'
lastForwardPoints: '0'
outrightRate: '0.89516'
rejectCode: 0
citiMergedOrder: false
fixingDate: '2018-10-25'
customTenorUnit: 0
ordType: STANDARD
isBookedWithMktRate: false
isBookedWithMRF: false
mrfPercentage: '0'
mrfComparisionRate: '0'
mrfVariance: '0'
backOffRef: ''
uniqueTradeIdentifier: ''
- clOrdId: test1134-27-09-2018-req51
account: XXXXXXXXXXX
orderId: '2755432'
ordStatus: BOOKED
ccyPair: EURUSD
tenor: SP
valueDate: '2018-10-01'
dealtCcy: EUR
side: B
orderQty: '100'
rateSetId: 142314
counterCcy: USD
contAmtValue: '117.5'
lastSpotRate: '1.175'
lastForwardPoints: '0'
outrightRate: '1.175'
rejectCode: 0
citiMergedOrder: false
fixingDate: '2018-10-25'
customTenorUnit: 0
ordType: STANDARD
isBookedWithMktRate: false
isBookedWithMRF: false
mrfPercentage: '0'
mrfComparisionRate: '0'
mrfVariance: '0'
backOffRef: ''
uniqueTradeIdentifier: ''
FXQuoteRequest:
description: 'Use this endpoint to request a rate for either a specific currency pair or all configured currency pairs over a session.
'
type: object
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- account
- symbol
properties:
action:
type: string
description: 'The service you are requesting. Allowed values: rate-request.'
maxLength: 20
example: rate-request
jsonReqId:
type: string
description: The unique identifier for the JSON request. Must be alphanumeric.
maxLength: 100
example: Req20181011776
senderCompId:
type: string
description: The Citi-assigned value used to identify the message sender. This was assigned to you during onboarding. May contain special characters ( ‘_’, ‘.’, ‘-‘).
maxLength: 20
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. This was assigned to you during onboarding. May contain special characters ( ‘_’, ‘.’, ‘-‘)
maxLength: 20
example: ClientName
sendingTime:
type: string
description: 'The time of the message transmission expressed in UTC (Universal Time Coordinated, also known as "GMT"). Format: YYYYMMDD-HH:MM:SS.mmm.'
example: 20180820-04:48:29.125
account:
type: string
description: Your Citi-assigned client identifier. May contain special characters ( ‘_’, ‘.’, ‘-‘)
maxLength: 50
example: ABC123
symbol:
type: string
maxLength: 6
description: 'The Currency Pair of the rate you are requesting. Note that the symbol value for the first request must be “ALL”.
This will send the rate response for all of your configured currency pairs. You can then request rates for individual currency pairs in subsequent calls.
Discuss sending the value of the currency pair in either BaseTerm format or alphabetic sort order with your Citi representative.
'
example: GBPUSD
example:
action: rate-request
jsonReqId: 8ee02197-d54d-41ac-84a4-b607462ba3b1
senderCompId: IFXCLIENT1
onBehalfOfCompId: IFXCLIENT1
sendingTime: 20180820-04:48:29.125
account: XXXXXXX
symbol: ALL
FXQuoteReportRequest:
description: "Use this endpoint to request historic rates for all currency pairs for either a tradedate or ratesetid over a session. While the fields ‘tradeDate’, ‘rateSetId’, are optional, you must send them in at least one of the combinations below to fetch the results:\n\na) ‘tradeDate’ \n\nb) ‘rateSetId’ \n"
type: object
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- account
properties:
action:
type: string
description: 'The service you are requesting. Allowed values: rate-report-request.'
maxLength: 20
example: rate-report-request
jsonReqId:
type: string
description: The unique identifier for the JSON request. Must be alphanumeric.
maxLength: 100
example: Req20181011776
senderCompId:
type: string
description: The Citi-assigned value used to identify the message sender. This was assigned to you during onboarding. May contain special characters ( ‘_’, ‘.’, ‘-‘).
maxLength: 20
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. This was assigned to you during onboarding. May contain special characters ( ‘_’, ‘.’, ‘-‘)
maxLength: 20
example: ClientName
sendingTime:
type: string
description: 'The time of the message transmission expressed in UTC (Universal Time Coordinated, also known as "GMT"). Format: YYYYMMDD-HH:MM:SS.mmm.'
example: 20180820-04:48:29.125
account:
type: string
description: Your Citi-assigned client identifier. May contain special characters ( ‘_’, ‘.’, ‘-‘)
maxLength: 50
example: ABC123
rateSetId:
type: string
description: 'The Rate Set ID for which the rate report is requested.
'
example: '12345'
tradeDate:
type: string
format: date
description: 'The trade date for which the rate report is requested.
'
example: '2026-06-30'
example:
action: rate-report-request
jsonReqId: 8ee02197-d54d-41ac-84a4-b607462ba3b1
senderCompId: IFXCLIENT1
onBehalfOfCompId: IFXCLIENT1
sendingTime: 20180820-04:48:29.125
account: XXXXXXX
rateSetId: '12345'
FXQuoteReportResponse:
type: object
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
properties:
action:
type: string
description: Defines the action of the message. Value will be rate-report-response.
example: rate-report-response
maxLength: 20
jsonReqId:
type: string
description: The unique identifier for the JSON request. Format is alphanumeric.
maxLength: 100
example: Req20181011776
senderCompId:
type: string
description: The Citi-assigned value used to identify the firm sending the message. May contain special characters ( ‘_’, ‘.’, ‘-‘).
maxLength: 20
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. May contain special characters ( ‘_’, ‘.’, ‘-‘)
maxLength: 20
example: ClientName
sendingTime:
type: string
description: 'The time of message transmission. Always expressed in UTC (Universal Time Coordinated, also known as ''GMT''), format: YYYYMMDD-HH:MM:SS.mmm.'
example: 20180820-04:48:31.155
errorCode:
type: integer
description: The error code associated with the response. See the Error Codes tab for a complete list.
example: 89
errorMessage:
type: string
description: The error message associated with the response. See the Error Codes tab for a complete list.
example: No records found for the given inputs.
ifxRates:
type: array
items:
type: object
required:
- rateSetId
- ccyPair
- tenor
- bidSpotRate
- offerSpotRate
- bidForwardPoints
- offerForwardPoints
- midPrice
- validUntilTime
- isValid
- baseCurrency
- ratePrecision
- valueDate
- bidOutrightRate
- offerOutrightRate
- fixingRate
properties:
rateSetId:
type: integer
description: The Citi-defined rate set ID that the rate belongs to.
example: 123456
ccyPair:
type: string
description: A six character sorted alpha string comprising two ISO ccy codes that the rate applies to.
example: EURUSD
maxLength: 6
tenor:
type: string
description: The Tenor for the rate.
maxLength: 3
example: SP
bidSpotRate:
type: string
format: double
description: The Bid Spot Rate for the currency pair.
example: '1.04'
offerSpotRate:
type: string
format: double
description: The Offer Spot Rate for the currency pair.
example: '1.06'
bidForwardPoints:
type: string
format: double
description: The Bid Forward Points for this tenor (Forward Pricing Only).
example: '0.01'
offerForwardPoints:
type: string
format: double
description: The Offer Forward Points for this tenor (Forward Pricing Only).
example: '0.02'
midPrice:
type: string
format: double
description: The Mid Price for the rate.
example: '0.0'
validUntilTime:
type: string
description: 'The time and date that this rate will expire. Note-This is held in GMT / UTC format: yyyyMM-dd HH:mm:ss.SSS'
example: 2018-10-15 16:30:00.000 GMT
isValid:
type: boolean
description: A flag that shows that Citi was able to provide the requested rate. If this field is false, then midPrice, points, and rates are zero.
example: true
baseCurrency:
type: string
maxLength: 3
description: The base currency of the currency pair.
example: EUR
ratePrecision:
type: integer
description: The number of decimal places to which the rate(s) for this tenor should be quoted in regular base/term format.
example: 2
isTradable:
type: boolean
description: A flag to indicate whether the rate is tradable by the client (TRUE) or is to be used for reference purposes only.
example: true
fixingRate:
type: string
format: double
description: This field and `fixingsource` field will only be populated once a month on the agreed NDF fixing date. Will contain the fixing rate to be used for this currency pair.
example: '0'
fixingSource:
type: string
description: Will contain the fixing source associated with the fixingRate field.
example: Citi New York 15:00 Fixing
maxLength: 100
valueDate:
type: string
format: date
description: 'The value date of the rate returned in format: yyyy-MM-dd.'
example: '2011-05-06'
drawDownValidUntilTime:
description: 'Optional field. The extended time and date that this rate will expire for sending draw down orders. This field will be sent only if you are enabled for sending pre-order requests. Note: this is held in GMT / UTC in format: yyyy-MM-dd HH:mm:ss.SSS.
'
example: '2011-05-05 09:30:00.000'
bidOutrightRate:
type: string
format: double
description: The Bid Outright Rate for this currency pair.
example: '0.0'
offerOutrightRate:
type: string
format: double
description: The Offer Outright Rate for this currency pair.
example: '0.0'
isMrf:
description: Optional field. Applicable when MRF hourly updated rate option enabled. Flag indicates whether this is updated rate due to MRF True indicates updated rate.
type: boolean
example: true
rateId:
type: integer
description: Optional field. Applicable when MRF hourly updated rate option enabled. Unique identifier of a rate. Value is incremental. Used for reference purpose to identify latest rate in case of incremental version of rate due to MRF.
example: 456123
example:
action: rate-report-response
jsonReqId: 8ee02197-d54d-41ac-84a4-b607462ba3b1
senderCompId: IFXCLIENT1
onBehalfOfCompId: IFXCLIENT1
sendingTime: 20250126-22:54:56.684
ifxRates:
- rateSetId: 13052961
ccyPair: EURGBP
tenor: SP
bidSpotRate: '0.84391'
offerSpotRate: '0.84391'
bidForwardPoints: '0.0'
offerForwardPoints: '0.0'
midPrice: '0.0'
validUntilTime: '2025-01-26 23:00:00.000'
isValid: true
baseCurrency: EUR
ratePrecision: 5
isTradable: true
fixingRate: '0.0'
valueDate: '2025-01-30'
drawDownValidUntilTime: '2025-01-27 23:00:00.000'
bidOutrightRate: '0.0'
offerOutrightRate: '0.0'
- rateSetId: 13052961
ccyPair: EURGBP
tenor: W1
bidSpotRate: '0.0'
offerSpotRate: '0.0'
bidForwardPoints: '0.0'
offerForwardPoints: '0.0'
midPrice: '0.0'
validUntilTime: '2025-01-26 23:00:00.000'
isValid: false
baseCurrency: EUR
ratePrecision: 6
isTradable: true
fixingRate: '0.0'
valueDate: '2025-02-06'
drawDownValidUntilTime: '2025-01-27 23:00:00.000'
bidOutrightRate: '0.0'
offerOutrightRate: '0.0'
- rateSetId: 13052961
ccyPair: EURUSD
tenor: SP
bidSpotRate: '1.0433'
offerSpotRate: '1.0474'
bidForwardPoints: '0.0'
offerForwardPoints: '0.0'
midPrice: '0.0'
validUntilTime: '2025-01-26 23:00:00.000'
isValid: true
baseCurrency: EUR
ratePrecision: 4
isTradable: true
fixingRate: '0.0'
valueDate: '2025-01-28'
drawDownValidUntilTime: '2025-01-27 23:00:00.000'
bidOutrightRate: '0.0'
offerOutrightRate: '0.0'
- rateSetId: 13052961
ccyPair: EURUSD
tenor: W1
bidSpotRate: '0.0'
offerSpotRate: '0.0'
bidForwardPoints: '0.0'
offerForwardPoints: '0.0'
midPrice: '0.0'
validUntilTime: '2025-01-26 23:00:00.000'
isValid: false
baseCurrency: EUR
ratePrecision: 6
isTradable: true
fixingRate: '0.0'
valueDate: '2025-02-05'
drawDownValidUntilTime: '2025-01-27 23:00:00.000'
bidOutrightRate: '0.0'
offerOutrightRate: '0.0'
- rateSetId: 13052961
ccyPair: EURUSD
tenor: M1
bidSpotRate: '0.0'
offerSpotRate: '0.0'
bidForwardPoints: '0.0'
offerForwardPoints: '0.0'
midPrice: '0.0'
validUntilTime: '2025-01-26 23:00:00.000'
isValid: false
baseCurrency: EUR
ratePrecision: 6
isTradable: true
fixingRate: '0.0'
valueDate: '2025-02-28'
drawDownValidUntilTime: '2025-01-27 23:00:00.000'
bidOutrightRate: '0.0'
offerOutrightRate: '0.0'
FXQuoteResponse:
type: object
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
properties:
action:
type: string
description: Defines the action of the message. Value will be rate-response.
example: rate-response
maxLength: 20
jsonReqId:
type: string
description: The unique identifier for the JSON request. Format is alphanumeric.
maxLength: 100
example: Req20181011776
senderCompId:
type: string
description: The Citi-assigned value used to identify the firm sending the message. May contain special characters ( ‘_’, ‘.’, ‘-‘).
maxLength: 20
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. May contain special characters ( ‘_’, ‘.’, ‘-‘)
maxLength: 20
example: ClientName
sendingTime:
type: string
description: 'The time of message transmission. Always expressed in UTC (Universal Time Coordinated, also known as ''GMT''), format: YYYYMMDD-HH:MM:SS.mmm.'
example: 20180820-04:48:31.155
errorCode:
type: integer
description: The error code associated with the response. See the Error Codes tab for a complete list.
example: 89
errorMessage:
type: string
description: The error message associated with the response. See the Error Codes tab for a complete list.
example: No records found for the given inputs.
ifxRates:
type: array
items:
type: object
required:
- rateSetId
- ccyPair
- tenor
- bidSpotRate
- offerSpotRate
- bidForwardPoints
- offerForwardPoints
- midPrice
- validUntilTime
- isValid
- baseCurrency
- ratePrecision
- valueDate
- bidOutrightRate
- offerOutrightRate
- fixingRate
properties:
rateSetId:
type: integer
description: The Citi-defined rate set ID that the rate belongs to.
example: 123456
ccyPair:
type: string
description: A six character sorted alpha string comprising two ISO ccy codes that the rate applies to.
example: EURUSD
maxLength: 6
tenor:
type: string
description: The Tenor for the rate.
maxLength: 3
example: SP
bidSpotRate:
type: string
format: double
description: The Bid Spot Rate for the currency pair.
example: '1.04'
offerSpotRate:
type: string
format: double
description: The Offer Spot Rate for the currency pair.
example: '1.06'
bidForwardPoints:
type: string
format: double
description: The Bid Forward Points for this tenor (Forward Pricing Only).
example: '0.01'
offerForwardPoints:
type: string
format: double
description: The Offer Forward Points for this tenor (Forward Pricing Only).
example: '0.02'
midPrice:
type: string
format: double
description: The Mid Price for the rate.
example: '1.05'
validUntilTime:
type: string
description: 'The time and date that this rate will expire. Note-This is held in GMT / UTC format: yyyyMM-dd HH:mm:ss.SSS'
example: 2018-10-15 16:30:00.000 GMT
isValid:
type: boolean
description: A flag that shows that Citi was able to provide the requested rate. If this field is false, then midPrice, points, and rates are zero.
example: true
baseCurrency:
type: string
maxLength: 3
description: The base currency of the currency pair.
example: EUR
ratePrecision:
type: integer
description: The number of decimal places to which the rate(s) for this tenor should be quoted in regular base/term format.
example: 2
isTradable:
type: boolean
description: A flag to indicate whether the rate is tradable by the client (TRUE) or is to be used for reference purposes only.
example: true
fixingRate:
type: string
format: double
description: This field and `fixingsource` field will only be populated once a month on the agreed NDF fixing date. Will contain the fixing rate to be used for this currency pair.
example: '0'
fixingSource:
type: string
description: Will contain the fixing source associated with the fixingRate field.
example: Citi New York 15:00 Fixing
maxLength: 100
valueDate:
type: string
format: date
description: 'The value date of the rate returned in format: yyyy-MM-dd.'
example: '2011-05-06'
drawDownValidUntilTime:
description: 'Optional field. The extended time and date that this rate will expire for sending draw down orders. This field will be sent only if you are enabled for sending pre-order requests. Note: this is held in GMT / UTC in format: yyyy-MM-dd HH:mm:ss.SSS.
'
example: '2011-05-05 09:30:00.000'
bidOutrightRate:
type: string
format: double
description: The Bid Outright Rate for this currency pair.
example: '111.24'
offerOutrightRate:
type: string
format: double
description: The Offer Outright Rate for this currency pair.
example: '112.24'
isMrf:
description: Optional field. Applicable when MRF hourly updated rate option enabled. Flag indicates whether this is updated rate due to MRF True indicates updated rate.
type: boolean
example: true
rateId:
type: integer
description: Optional field. Applicable when MRF hourly updated rate option enabled. Unique identifier of a rate. Value is incremental. Used for reference purpose to identify latest rate in case of incremental version of rate due to MRF.
example: 456123
example:
action: rate-response
jsonReqId: 8ee02197-d54d-41ac-84a4-b607462ba3b1
senderCompId: IFXCLIENT1
onBehalfOfCompId: IFXCLIENT1
sendingTime: 20250126-22:54:56.684
ifxRates:
- rateSetId: 13052961
ccyPair: EURGBP
tenor: SP
bidSpotRate: '0.84391'
offerSpotRate: '0.84391'
bidForwardPoints: '0.0'
offerForwardPoints: '0.0'
midPrice: '0.84391'
validUntilTime: '2025-01-26 23:00:00.000'
isValid: true
baseCurrency: EUR
ratePrecision: 5
isTradable: true
fixingRate: '0.0'
valueDate: '2025-01-30'
drawDownValidUntilTime: '2025-01-27 23:00:00.000'
bidOutrightRate: '0.84391'
offerOutrightRate: '0.84391'
- rateSetId: 13052961
ccyPair: EURGBP
tenor: W1
bidSpotRate: '0.0'
offerSpotRate: '0.0'
bidForwardPoints: '0.0'
offerForwardPoints: '0.0'
midPrice: '0.0'
validUntilTime: '2025-01-26 23:00:00.000'
isValid: false
baseCurrency: EUR
ratePrecision: 6
isTradable: true
fixingRate: '0.0'
valueDate: '2025-02-06'
drawDownValidUntilTime: '2025-01-27 23:00:00.000'
bidOutrightRate: '0.0'
offerOutrightRate: '0.0'
- rateSetId: 13052961
ccyPair: EURUSD
tenor: SP
bidSpotRate: '1.0433'
offerSpotRate: '1.0474'
bidForwardPoints: '0.0'
offerForwardPoints: '0.0'
midPrice: '1.04535'
validUntilTime: '2025-01-26 23:00:00.000'
isValid: true
baseCurrency: EUR
ratePrecision: 4
isTradable: true
fixingRate: '0.0'
valueDate: '2025-01-28'
drawDownValidUntilTime: '2025-01-27 23:00:00.000'
bidOutrightRate: '1.0433'
offerOutrightRate: '1.0474'
- rateSetId: 13052961
ccyPair: EURUSD
tenor: W1
bidSpotRate: '0.0'
offerSpotRate: '0.0'
bidForwardPoints: '0.0'
offerForwardPoints: '0.0'
midPrice: '0.0'
validUntilTime: '2025-01-26 23:00:00.000'
isValid: false
baseCurrency: EUR
ratePrecision: 6
isTradable: true
fixingRate: '0.0'
valueDate: '2025-02-05'
drawDownValidUntilTime: '2025-01-27 23:00:00.000'
bidOutrightRate: '0.0'
offerOutrightRate: '0.0'
- rateSetId: 13052961
ccyPair: EURUSD
tenor: M1
bidSpotRate: '0.0'
offerSpotRate: '0.0'
bidForwardPoints: '0.0'
offerForwardPoints: '0.0'
midPrice: '0.0'
validUntilTime: '2025-01-26 23:00:00.000'
isValid: false
baseCurrency: EUR
ratePrecision: 6
isTradable: true
fixingRate: '0.0'
valueDate: '2025-02-28'
drawDownValidUntilTime: '2025-01-27 23:00:00.000'
bidOutrightRate: '0.0'
offerOutrightRate: '0.0'
FXQuoteRequest_2:
description: 'Use this endpoint to request a rate for either a specific currency pair or all configured currency pairs.
'
type: object
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- account
- symbol
properties:
action:
type: string
description: 'The service you are requesting. Allowed values: rate-request.'
maxLength: 20
example: rate-request
jsonReqId:
type: string
description: The unique identifier for the JSON request. Must be alphanumeric.
maxLength: 100
example: Req20181011776
senderCompId:
type: string
description: The Citi-assigned value used to identify the message sender. This was assigned to you during onboarding. May contain special characters ( ‘_’, ‘.’, ‘-‘).
maxLength: 20
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. This was assigned to you during onboarding. May contain special characters ( ‘_’, ‘.’, ‘-‘)
maxLength: 20
example: ClientName
sendingTime:
type: string
description: 'The time of the message transmission expressed in UTC (Universal Time Coordinated, also known as "GMT"). Format: YYYYMMDD-HH:MM:SS.mmm.'
example: 20180820-04:48:29.125
account:
type: string
description: Your Citi-assigned client identifier. May contain special characters ( ‘_’, ‘.’, ‘-‘)
maxLength: 50
example: ABC123
symbol:
type: string
maxLength: 6
description: "The Currency Pair of the rate you are requesting. Note that the symbol value for the first request must be “ALL”.\nThis will send the rate response for all of your configured currency pairs. You can then request rates for individual currency pairs in subsequent calls.\nDiscuss sending the value of the currency pair in either BaseTerm format or alphabetic sort order with your Citi representative. \n"
example: GBPUSD
example:
action: rate-request
jsonReqId: 8ee02197-d54d-41ac-84a4-b607462ba3b1
senderCompId: IFXCLIENT1
onBehalfOfCompId: IFXCLIENT1
sendingTime: 20180820-04:48:29.125
account: XXXXXXX
symbol: ALL
FXQuoteReportRequest_2:
description: "Use this endpoint to request historic rates for all currency pairs for either a tradedate or ratesetid. While the fields ‘tradeDate’, ‘rateSetId’, are optional, you must send them in at least one of the combinations below to fetch the results:\n\na) ‘tradeDate’ \n\nb) ‘rateSetId’ \n"
type: object
required:
- action
- jsonReqId
- senderCompId
- onBehalfOfCompId
- sendingTime
- account
properties:
action:
type: string
description: 'The service you are requesting. Allowed values: rate-report-request.'
maxLength: 20
example: rate-report-request
jsonReqId:
type: string
description: The unique identifier for the JSON request. Must be alphanumeric.
maxLength: 100
example: Req20181011776
senderCompId:
type: string
description: The Citi-assigned value used to identify the message sender. This was assigned to you during onboarding. May contain special characters ( ‘_’, ‘.’, ‘-‘).
maxLength: 20
example: ClientName
onBehalfOfCompId:
type: string
description: The Citi-assigned value used to identify the sub-entity. This was assigned to you during onboarding. May contain special characters ( ‘_’, ‘.’, ‘-‘)
maxLength: 20
example: ClientName
sendingTime:
type: string
description: 'The time of the message transmission expressed in UTC (Universal Time Coordinated, also known as "GMT"). Format: YYYYMMDD-HH:MM:SS.mmm.'
example: 20180820-04:48:29.125
account:
type: string
description: Your Citi-assigned client identifier. May contain special characters ( ‘_’, ‘.’, ‘-‘)
maxLength: 50
example: ABC123
rateSetId:
type: string
description: 'The Rate Set ID for which the rate report is requested.
'
example: '12345'
tradeDate:
type: string
format: date
description: 'The trade date for which the rate report is requested.
'
example: '2026-06-30'
example:
action: rate-report-request
jsonReqId: 8ee02197-d54d-41ac-84a4-b607462ba3b1
senderCompId: IFXCLIENT1
onBehalfOfCompId: IFXCLIENT1
sendingTime: 20180820-04:48:29.125
account: XXXXXXX
rateSetId: '12345'
securitySchemes:
OAuth2:
type: oauth2
description: Citi Velocity APIs use the oAuth2 authentication scheme, which requires a bearer token to authenticate your API call. See the Citi Authentication API reference for information on requesting a token.
flows:
clientCredentials:
scopes:
fxapi: ''
tokenUrl: https://api.citivelocity.com/markets/cv/api/fx/oauth2/token
client_id:
type: apiKey
in: query
name: client_id
client_credential:
type: oauth2
flows:
clientCredentials:
scopes:
/fxapi: ''
tokenUrl: https://icg.api.citigroup.net/markets/internal/cv/api/fx/oauth2/token
description: client_credential
x-refined-from:
- fx_benchmark_async_api.yaml
- fx_benchmark_sync_api.yaml
- fx_cancel_async_api.yaml
- fx_cancel_sync_api.yaml
- fx_eCommerce_api.yaml
- fx_gateway_reporting_async_api.yaml
- fx_gateway_reporting_sync_api.yaml
- fx_market_async_api.yaml
- fx_market_sync_api.yaml
- fx_orders_async_api.yaml
- fx_orders_sync_api.yaml
- fx_quote_async_api.yaml
- fx_quote_sync_api.yaml