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