openapi: 3.0.2
info:
description: >-
WorldLink is a complete cross-border payment and Foreign-Exchange (FX)
service that allows you to perform payments in 135 currencies without having
the need to maintain local currency accounts for each of them. CitiConnect
API now offers you WorldLink services of FX rate enquiry, FX deal booking,
cross-border payment initiation with 24X7 availability.
version: 5.0.0
title: WorldLink Payment
servers:
- url: https:/tts.apib2b.citi.com/citiconnect/prod
description: production gateway url
- url: https:/tts.sandbox.apib2b.citi.com/citiconnect/sb
description: 'sandbox url '
security:
- clientCredentials: []
paths:
/worldlinkservices/v5/fx/bookfx:
post:
summary: WorldLink FX Booking
description: >-
WorldLink Book FX allows you to book the FX deal as per the rate quote
received through FX Rate Inquiry end-point for a given currency pair.
You can book the FX deal by referring the Rate Quote ID before the rate
auto expires. Upon successful booking of the FX contract, you will be
notified with the Deal ID and Exchange Rate which you may then use in
the Payment initiation request.
Content-Type: Supports
“application/XML” and “application/JSON”.
Authorization: The
OAuth Token prefixed with “Bearer“ and space in between.
operationId: bookFx
parameters:
- name: Content-Type
in: header
description: Currently supports “application/xml” and “application/json”
required: true
schema:
type: string
- name: Authorization
in: header
description: the OAuth Token prefixed with “Bearer” and space in between
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Fx-Request-API-BookFX'
examples:
BookFX_request:
$ref: '#/components/examples/Fx-Request-API-BookFX-Example'
application/xml:
schema:
$ref: '#/components/schemas/Fx-Request-API-BookFX'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Fx-Request-API-BookFX-Response'
examples:
BookFX_response:
$ref: '#/components/examples/Fx-Request-API-BookFX-Response-Example'
application/xml:
schema:
$ref: '#/components/schemas/Fx-Request-API-BookFX-Response'
examples:
BookFX_response:
$ref: '#/components/examples/Fx-Request-API-BookFX-Response-Example'
'400':
description: Bad Request.
content:
application/json:
schema:
$ref: '#/components/schemas/Error-Detail'
examples:
Bad-Request:
$ref: '#/components/examples/Bad-Request-Example'
application/xml:
schema:
$ref: '#/components/schemas/Error-Detail'
examples:
Bad-Request:
$ref: '#/components/examples/Bad-Request-Example'
'401':
description: >-
The request is Unauthorized. Please try again with valid
credentials.
content:
application/json:
schema:
$ref: '#/components/schemas/Error-Detail'
examples:
Unauthorized-Example:
$ref: '#/components/examples/Unauthorized-Example'
application/xml:
schema:
$ref: '#/components/schemas/Error-Detail'
examples:
Unauthorized-Example:
$ref: '#/components/examples/Unauthorized-Example'
'403':
description: The request is Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error-Detail'
examples:
Request-Forbidden-Example:
$ref: '#/components/examples/Request-Forbidden-Example'
application/xml:
schema:
$ref: '#/components/schemas/Error-Detail'
examples:
Request-Forbidden-Example:
$ref: '#/components/examples/Request-Forbidden-Example'
'404':
description: Not Found. Please check your URL.
content:
application/json:
schema:
$ref: '#/components/schemas/Error-Detail'
examples:
Not-Found-Example:
$ref: '#/components/examples/Not-Found-Example'
application/xml:
schema:
$ref: '#/components/schemas/Error-Detail'
examples:
Not-Found-Example:
$ref: '#/components/examples/Not-Found-Example'
'500':
description: Unable to serve your request at this moment. Please try again later.
content:
application/json:
schema:
$ref: '#/components/schemas/Error-Detail'
examples:
Internal-Server-Example:
$ref: '#/components/examples/Internal-Server-Example'
application/xml:
schema:
$ref: '#/components/schemas/Error-Detail'
examples:
Internal-Server-Example:
$ref: '#/components/examples/Internal-Server-Example'
/worldlinkservices/v5/fx/raterequest:
post:
summary: WorldLink FX Rate Inquiry
description: >-
Initiate the payment using the FX rate received from a preceding FX Rate
Inquiry call. After obtaining the convenient FX Rate and Rate Quote Id
through WorldLink FX Rate Inquiry endpoint, you can initiate a new
payment through WorldLink Payment Initiation endpoint. This API takes
the necessary data required to initiate a payment along with the Rate
Quote Id. Data required for the payment initiation is dependent on the
type of payment method invoked. If the rate has not expired and if the
payment passes all validations, WorldLink would process both the booking
of the FX and the processing of the payment.
Content-Type : Supports “application/xml” and
“application/json”.
Authorization : The OAuth Token prefixed
with “Bearer“ and space in between.
operationId: processRateRequest
parameters:
- name: Content-Type
in: header
description: Supports "application/xml" and "application/json"
required: true
schema:
type: string
- name: Authorization
in: header
description: The OAuth Token prefixed with "Bearer" and space in between.
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Fx-Request-API-Inquiry'
examples:
RateInq_request:
$ref: '#/components/examples/Fx-Request-API-Inquiry-Example'
application/xml:
schema:
$ref: '#/components/schemas/Fx-Request-API-Inquiry'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Fx-Request-API-Inquiry-Response'
examples:
RateInq_response:
$ref: null
application/xml:
schema:
$ref: '#/components/schemas/Fx-Request-API-Inquiry-Response'
examples:
RateInq_response:
$ref: null
'400':
description: Bad Request.
content:
application/json:
schema:
$ref: '#/components/schemas/Error-Detail'
examples:
Bad-Request:
$ref: '#/components/examples/Bad-Request-Example'
application/xml:
schema:
$ref: '#/components/schemas/Error-Detail'
examples:
Bad-Request:
$ref: '#/components/examples/Bad-Request-Example'
'401':
description: >-
The request is Unauthorized. Please try again with valid
credentials.
content:
application/json:
schema:
$ref: '#/components/schemas/Error-Detail'
examples:
Unauthorized-Example:
$ref: '#/components/examples/Unauthorized-Example'
application/xml:
schema:
$ref: '#/components/schemas/Error-Detail'
examples:
Unauthorized-Example:
$ref: '#/components/examples/Unauthorized-Example'
'403':
description: The request is Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error-Detail'
examples:
Request-Forbidden-Example:
$ref: '#/components/examples/Request-Forbidden-Example'
application/xml:
schema:
$ref: '#/components/schemas/Error-Detail'
examples:
Request-Forbidden-Example:
$ref: '#/components/examples/Request-Forbidden-Example'
'404':
description: Not Found. Please check your URL.
content:
application/json:
schema:
$ref: '#/components/schemas/Error-Detail'
examples:
Not-Found-Example:
$ref: '#/components/examples/Not-Found-Example'
application/xml:
schema:
$ref: '#/components/schemas/Error-Detail'
examples:
Not-Found-Example:
$ref: '#/components/examples/Not-Found-Example'
'500':
description: Unable to serve your request at this moment. Please try again later.
content:
application/json:
schema:
$ref: '#/components/schemas/Error-Detail'
examples:
Internal-Server-Example:
$ref: '#/components/examples/Internal-Server-Example'
application/xml:
schema:
$ref: '#/components/schemas/Error-Detail'
examples:
Internal-Server-Example:
$ref: '#/components/examples/Internal-Server-Example'
components:
schemas:
Fx-Request-API-BookFX:
title: Fx-Request-API-BookFX
properties:
FxRequestAPIOperation:
$ref: '#/components/schemas/Fx-Request-API-Operation-BookFX'
Fx-Request-API-Operation-BookFX:
type: object
title: Fx-Request-API-Operation-BookFX
properties:
FXP588Operation:
$ref: '#/components/schemas/FXP588-Operation-BookFX'
FXP588-Operation-BookFX:
type: object
title: FXP588-Operation-BookFX
required:
- FxRequest
properties:
FxRequest:
$ref: '#/components/schemas/Fx-Request-BookFX'
Fx-Request-BookFX:
type: object
title: Fx-Request-BookFX
properties:
Source:
type: string
description: >-
Requesting Channel short name Constant value - "APIM" - for the
external clients. "GPSP" - for GPPSP application "GPP" - For GPP
application
maxLength: 4
example: APIM
title: Source
ReqType:
type: string
description: >-
Type of FX Request: Constant value: "FXBOOKREQ" - Used for the
interactive deal booking requests. i.e., Rate Inquiry request
followed by corresponding Deal booking request. "FXAUTOBKREQ" - Used
for Committed deal booking requests. No Rate inquiry involved.
maxLength: 11
example: FXAUTOBKREQ
title: ReqType
ClntNo:
type: string
description: Client Number.
maxLength: 5
example: '01010'
title: ClntNo
BrNo:
type: string
description: Branch Number.
maxLength: 4
example: '0101'
title: BrNo
PrefRateType:
type: string
description: >-
Preferred rate indicator: Used for pricing. Pricing sub-division
within Client and Branch. Allowed values: A-Z, 0-9 Typically,
default to N unless specifically agreed with the FX trading. Value
must be ‘W’ for Alipay Wallet payments and ‘E’ for UPI Cards
payment.
maxLength: 1
example: 'N'
title: PrefRateType
TrnRefNo:
type: string
description: >-
Customer Generated transaction reference number. The corresponding
response message will contain the same TRN for source matching. **
Note: Below mentioned special characters should not be used. &
(ampersand), < (less than) , > (greater than) and (single or double
quote)
pattern: ^[^&<>,"]*$
maxLength: 16
example: 1234567890ABCDEF
title: TrnRefNo
UserId:
type: string
description: >-
This parameter needs to be provided only for the Interactive deal
booking request type - "FXBOOKREQ". i.e., Rate Inquiry request
followed by its corresponding Deal booking request. This is a unique
User ID created by WorldLink and returned in its successful FX
Inquiry response. The same User ID needs to be used in the
corresponding deal booking request since it will be used as a key to
correlate the FX inquiry requests and the corresponding FX Deal
booking requests (accepts). For Committed deal book request type -
"FXAUTOBKREQ", ignore this parameter.
maxLength: 8
example: ABCD1234
title: UserId
CcyPairCnt:
type: string
description: >-
Number of Currency pair requests. Constant value: "01". Only one
Currency pair FX request should be made per API call.
maxLength: 2
example: '01'
title: CcyPairCnt
ReqTime:
type: string
description: >-
Date and Time when the FX Request is placed. Format:
"YYYY-MM-DD-HH:MM:SS EST Hours."
pattern: >-
^(?:19|20)\d{2}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])-(0\d|1\d|2[0-3]):([0-5]\d):([0-5]\d)$
example: 2024-07-07-07:07:07
title: ReqTime
RequestDetails:
items:
$ref: '#/components/schemas/Request-Details-BookFX'
type: array
title: RequestDetails
maxItems: 1
required:
- Source
- ReqType
- ClntNo
- TrnRefNo
- CcyPairCnt
- ReqTime
- RequestDetails
Fx-Request-API-BookFX-Response:
type: object
title: Fx-Request-API-BookFX-Response
properties:
FxRequestAPIOperationResponse:
$ref: '#/components/schemas/Fx-Request-API-Operation-BookFX-Response'
Fx-Request-API-Operation-BookFX-Response:
type: object
title: Fx-Request-API-Operation-BookFX-Response
properties:
FXP588Operation:
$ref: '#/components/schemas/FXP588-Operation-BookFX-Response'
FXP588-Operation-BookFX-Response:
type: object
title: FXP588-Operation-BookFX-Response
required:
- FxResponse
properties:
FxResponse:
$ref: '#/components/schemas/Fx-Request-BookFX-Response'
Fx-Request-BookFX-Response:
type: object
title: Fx-Request-BookFX-Response
properties:
Source:
type: string
description: >-
Requesting Channel short name. Same source name will be populated as
received in the request. Constant value - "APIM" - for the external
clients. "GPSP" - for GPPSP application "GPP" - For GPP application
maxLength: 4
example: APIM
title: Source
ResType:
type: string
description:
Type of FX Request: >-
Transaction Type defined by WorldLink Constant Value:
"FXBOOKRSP" - When request type FXBOOKREQ is used in the deal
book request. Interactive deal booking case. "FXAUTOBKRSP" - When
request type FXAUTOBKREQ is used in the deal book request.
Committed deal booking case.
maxLength: 11
example: FXAUTOBKRSP
title: ResType
ClntNo:
type: string
description: Client Number. This will be populated as received in the Request.
maxLength: 5
example: '01010'
title: ClntNo
BrNo:
type: string
description: Branch Number. This will be populated as received in the Request.
maxLength: 4
example: '0101'
title: BrNo
TrnRefNo:
type: string
description: >-
Customer Generated transaction reference number. The response will
contain the same TRN for source matching
maxLength: 16
example: 1234567890ABCDEF
title: TrnRefNo
ResTime:
type: string
description: >-
Date and Time when the FX Request is placed. Format:
"YYYY-MM-DD-HH:MM:SS"
maxLength: 19
example: 2024-07-07-07:07:07
title: ResTime
UserId:
type: string
description: >-
Unique User ID created by WorldLink and returned in response only
when the request is processed successfully. For Interactive Deal
request - Request type "FXBOOKREQ" : Same UserID will be populated
which was received in the Deal request. For Committed Deal request -
Request type "FXAUTOBKREQ": A unique User ID will be created
maxLength: 8
example: ABCD1234
title: UserId
CcyPairCnt:
type: string
description: >-
Number of Currency pair requests. Constant value: "01". Only one
Currency pair FX request should be made per API call.
maxLength: 2
example: '01'
title: CcyPairCnt
CtrlErrCode:
type: string
description: >-
This parameter will be mandatorily given in WorldLink response as
per the below scenarios - 1. Successful execution of all CCY pairs
(Happy path) - "000" 2. Any Control/Message header level error - xxx
(applicable WorldLink error code) 3. Any repeating level error -
"000" ** Note: Source system should not hard code the error codes
while handling the error codes. Other than the code "000" for
"CtrlErrCode" (OR) "StatusCode" should be treated as a "failed"
response.
maxLength: 3
example: '000'
title: CtrlErrCode
CtrlErrMsg:
type: string
description: >-
This parameter will be mandatorily given in WorldLink response along
with ErrCode.
maxLength: 255
example: Request Successful
title: CtrlErrMsg
ResponseDetails:
items:
$ref: '#/components/schemas/Response-Details-BookFX'
type: array
title: ResponseDetails_BookFX
maxItems: 1
required:
- Source
- ResType
- ClntNo
- TrnRefNo
- ResTime
- CcyPairCnt
- CtrlErrCode
- CtrlErrMsg
- ResponseDetails
Request-Details-BookFX:
type: object
properties:
PymtCcy:
type: string
description: Payment Currency.
maxLength: 3
example: GBP
title: PymtCcy
PymtCcyAmt:
type: string
description: >-
Payment Currency amount with no leading zeros Conditional: Payment
Amount required if no funding currency amount is given in the
request.
pattern: ^\d{1,13}(\.\d{1,3})?$
maxLength: 17
example: '1234567891234.000'
title: PymtCcyAmt
FundCcy:
type: string
description: Funding Currency.
maxLength: 3
example: USD
title: FundCcy
FundCcyAmt:
type: string
description: >-
Funding Currency amount with no leading zeros Conditional: Funding
Amount, required if no payment currency amount is given
pattern: ^\d{1,13}(\.\d{1,3})?$
maxLength: 17
example: '1234567891234.000'
title: FundCcyAmt
QuoteType:
type: string
description: >-
Quote Type: Confirms if a client is a Daily Guaranteed Rate (GR) or
Sport rate customer. If a client is not configured for Daily GR,
then WorldLink will check for the Spot configuration & provide the
rates accordingly. It is Mandatory for Committed deal book request
type - "FXAUTOBKREQ" It is Optional for Interactive Deal request -
Request type "FXBOOKREQ" Constant value: "S" - Spot Rate "D" -
Daily Rate Default to use "D". It will be determined as per the
client level setup. Note : Weekend rate will be provided to client
irrespective of the Quote type if client is enabled for weekend FX
pricing.
maxLength: 1
example: D
title: QuoteType
RateTerm:
type: string
description: >-
Rate Term: Customer generated. It is Mandatory for Committed deal
book request type - "FXAUTOBKREQ" It is Optional for Interactive
Deal request - Request type "FXBOOKREQ" Constant value: “M” -
Multiple “D” - Divide “E” - Interbank "I" - interbank (future use)
maxLength: 1
example: M
title: RateTerm
ValueDate:
type: string
description: 'FX Contract Value Date Format: YYYYMMDD'
pattern: ^(?:19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])$
maxLength: 8
example: '20200426'
title: ValueDate
Tenor:
type: string
description: >-
Tenor value. SP, TN, SD & BA. Value in Tenor parameter is required
if no value date is given Constant value: “SP” - for Spot "TN" -
for Tomorrow Next "SD" - for Same Day "BA" - for Best Available
Value "BA" is preferred to get the Best Available tenor. If Value
date is provided along with the BA tenor, WorldLink will look for
the given value date first. If not available, then next available
tenor (BA-Best Available) will be considered.
maxLength: 2
example: SP
title: Tenor
PmtRoutingId:
type: integer
description: >-
Payment routing id for MBR pricing. To get a pricing for a specific
Outbound payment channel. Example, Digital Wallet, Cards, UPI
payment etc.
maximum: 99999
example: 13773
title: PmtRoutingId
required:
- PymtCcy
- FundCcy
- Tenor
Response-Details-BookFX:
type: object
properties:
PymtCcy:
type: string
description: Payment Currency.
maxLength: 3
example: GBP
title: PymtCcy
PymtCcyAmt:
type: string
description: >-
Payment Currency amount with no leading zeros Conditional: Payment
Amount required if no funding currency amount is given in the
request.
maxLength: 17
example: '1234567891234.000'
title: PymtCcyAmt
FundCcy:
type: string
description: Funding Currency.
maxLength: 3
example: USD
title: FundCcy
FundCcyAmt:
type: string
description: >-
Funding Currency amount with no leading zeros Conditional: Funding
Amount, required if no payment currency amount is given
maxLength: 17
example: '1234567891234.000'
title: FundCcyAmt
Rate:
type: number
description: >-
FX rate for client deal booking. No Rate will be returned in case of
non-zero StatusCode.
maxLength: 17
example: 100.1010101
title: Rate
QuoteType:
type: string
description: >-
WorldLink derived quote type will be populated. “S” – Spot, “D” –
Daily. Note : Weekend rate will be provided to client irrespective
of the Quote type if client is enabled for weekend FX pricing.
maxLength: 1
example: D
title: QuoteType
RateTerm:
type: string
description: >-
Rate Term: Customer generated. It is Mandatory for Committed deal
book request type - "FXAUTOBKREQ" It is Optional for Interactive
Deal request - Request type "FXBOOKREQ" Constant value: “M” -
Multiple “D” - Divide “E” - Interbank
maxLength: 1
example: M
title: RateTerm
ValueDate:
type: string
description: 'FX Contract Value Date Format: YYYYMMDD'
maxLength: 8
example: '20200426'
title: ValueDate
Tenor:
type: string
description: >-
Tenor value. SP, TN, SD. “SP” - for Spot "TN" - for Tomorrow Next
"SD" - for Same Day
maxLength: 2
example: SP
title: Tenor
StatusCode:
type: string
description: >-
This parameter will be mandatorily given in WorldLink response as
per the below scenarios - 1. Successful execution of all CCY pairs
(Happy path) - "000" 2. Any Control/Message header level error - NA
as no repeating records will be returned in response 3. Any
repeating level error - "xxx" (applicable WorldLink error code) **
Note: Source system should not hard code the error codes while
handling the error codes. Other than the code "000" for
"CtrlErrCode" (OR) "StatusCode" should be treated as a "failed"
response.
maxLength: 3
example: '000'
title: StatusCode
StatusMsg:
type: string
description: >-
This parameter will be mandatorily given in WorldLink response along
with StatusCode.
maxLength: 255
example: '000: Request Processed Successfully'
title: StatusMsg
ContractRefId:
type: string
description: This parameter will contain Unique contract ID created by WorldLink.
maxLength: 15
example: AA0161013856997
title: ContractRefId
UnwindTime:
type: string
description: >-
Map only if the Expiry time config setup for client on WFX and
Source is APIM. Deal will be auto unwinded if payment is not
received within this expiry time if client is onboarded for auto
unwind functionality. Format: "YYYY-MM-DD-HH:MM:SS"
maxLength: 19
example: 2024-07-07-07:07:07
title: UnwindTime
required:
- PymtCcy
- FundCcy
- QuoteType
- ValueDate
- StatusCode
- StatusMsg
Fx-Request-API-Inquiry:
type: object
title: Fx-Request-API-Inquiry
properties:
FxRequestAPIOperation:
$ref: '#/components/schemas/Fx-Request-API-Operation-Inquiry'
Fx-Request-API-Operation-Inquiry:
type: object
title: Fx-Request-API-Operation-Inquiry
properties:
FXP588Operation:
$ref: '#/components/schemas/FXP588-Operation-Inquiry'
FXP588-Operation-Inquiry:
type: object
title: FXP588-Operation-Inquiry
required:
- FxRequest
properties:
FxRequest:
$ref: '#/components/schemas/Fx-Request-Inquiry'
Fx-Request-Inquiry:
type: object
title: Fx-Request-Inquiry
properties:
Source:
type: string
description: >-
Requesting Channel short name Constant value - "APIM" - for the
external clients. "GPSP" - for GPPSP application "GPP" - For GPP
application
maxLength: 4
example: APIM
title: Source
ReqType:
type: string
description: 'Type of FX Request: Constant value: FXINQRYREQ. '
maxLength: 11
example: FXINQRYREQ
title: ReqType
ClntNo:
type: string
description: Client Number.
maxLength: 5
example: '01010'
title: ClntNo
BrNo:
type: string
description: Branch Number.
maxLength: 4
example: '0101'
title: BrNo
PrefRateType:
type: string
description: >-
Preferred rate indicator: Used for pricing. Pricing sub-division
within Client and Branch. Allowed values: A-Z, 0-9 Typically,
default to N unless specifically agreed with the FX trading. Value
must be ‘W’ for Alipay Wallet payments and ‘E’ for UPI Cards
payment.
maxLength: 1
example: 'N'
title: PrefRateType
TrnRefNo:
type: string
description: >-
Customer Generated transaction reference number. The corresponding
response message will contain the same TRN for source matching. **
Note: Below mentioned special characters should not be used. &
(ampersand), < (less than) , > (greater than) and (single or double
quote)
pattern: ^[^&<>,"]*$
maxLength: 16
example: 1234567890ABCDEF
title: TrnRefNo
CcyPairCnt:
type: string
description: >-
Number of Currency pair requests. Constant value: "01". Only one
Currency pair FX request should be made per API call.
maxLength: 2
example: '01'
title: CcyPairCnt
ReqTime:
type: string
description: >-
Date and Time when the FX Request is placed. TBC post discussion.
Format: "YYYY-MM-DD-HH:MM:SS EST Hours." pattern: >-
^(?:19|20)\d{2}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])-(0\d|1\d|2[0-3]):([0-5]\d):([0-5]\d)$
maxLength: 19
example: 2024-07-07-07:07:07
title: ReqTime
RequestDetails:
items:
$ref: '#/components/schemas/Request-Details-Inquiry'
type: array
title: RequestDetails
maxItems: 1
required:
- Source
- ReqType
- ClntNo
- TrnRefNo
- CcyPairCnt
- ReqTime
- RequestDetails
Fx-Request-API-Inquiry-Response:
type: object
title: Fx-Request-API-Inquiry-Response
properties:
FxRequestAPIOperationResponse:
$ref: '#/components/schemas/Fx-Request-API-Operation-Inquiry-Response'
Fx-Request-API-Operation-Inquiry-Response:
type: object
title: Fx-Request-API-Operation-Inquiry-Response
properties:
FXP588Operation:
$ref: '#/components/schemas/FXP588-Operation-Inquiry-Response'
FXP588-Operation-Inquiry-Response:
type: object
title: FXP588-Operation-Inquiry-Response
required:
- FxResponse
properties:
FxResponse:
$ref: '#/components/schemas/Fx-Request-Inquiry-Response'
Fx-Request-Inquiry-Response:
type: object
title: Fx-Request-Inquiry-Response
properties:
Source:
type: string
description: >-
Requesting Channel short name. Same source name will be populated as
received in the request. Constant value - "APIM" - for the external
clients. "GPSP" - for GPPSP application "GPP" - For GPP application
maxLength: 4
example: APIM
title: Source
ResType:
type: string
description:
Type of FX Request: Transaction Type defined by WorldLink Constant
Value: FXINQRYRSP
maxLength: 11
example: FXINQRYRSP
title: ResType
ClntNo:
type: string
description: Client Number. This will be populated as received in the Request.
maxLength: 5
example: '01010'
title: ClntNo
BrNo:
type: string
description: Branch Number. This will be populated as received in the Request.
maxLength: 4
example: '0101'
title: BrNo
TrnRefNo:
type: string
description: >-
Customer Generated transaction reference number. The response will
contain the same TRN for source matching
maxLength: 16
example: 1234567890ABCDEF
title: TrnRefNo
ResTime:
type: string
description: >-
Date and Time when the FX Request is placed. Format:
"YYYY-MM-DD-HH:MM:SS"
maxLength: 19
example: 2024-07-07-07:07:07
title: ResTime
UserId:
type: string
description: >-
Unique User ID created by WorldLink and returned in response only
when the request is processed successfully. For Interactive Deal
request - Request type "FXBOOKREQ" : Same UserID will be populated
which was received in the Deal request. For Committed Deal request -
Request type "FXAUTOBKREQ": A unique User ID will be created
maxLength: 8
example: ABCD1234
title: UserId
CcyPairCnt:
type: string
description: >-
Number of Currency pair requests. Constant value: "01". Only one
Currency pair FX request should be made per API call.
maxLength: 2
example: '01'
title: CcyPairCnt
CtrlErrCode:
type: string
description: >-
This parameter will be mandatorily given in WorldLink response as
per the below scenarios - 1. Successful execution of all CCY pairs
(Happy path) - "000" 2. Any Control/Message header level error - xxx
(applicable WorldLink error code) 3. Any repeating level error -
"000" ** Note: Source system should not hard code the error codes
while handling the error codes. Other than the code "000" for
"CtrlErrCode" (OR) "StatusCode" should be treated as a "failed"
response.
maxLength: 3
example: '000'
title: CtrlErrCode
CtrlErrMsg:
type: string
description: >-
This parameter will be mandatorily given in WorldLink response along
with ErrCode.
maxLength: 255
example: Request Successful
title: CtrlErrMsg
ResponseDetails:
items:
$ref: '#/components/schemas/Response-Details-Inquiry'
type: array
title: ResponseDetails_Inquiry
maxItems: 1
required:
- Source
- ResType
- ClntNo
- TrnRefNo
- ResTime
- CcyPairCnt
- CtrlErrCode
- CtrlErrMsg
- ResponseDetails
Request-Details-Inquiry:
type: object
properties:
PymtCcy:
type: string
description: Payment Currency.
maxLength: 3
example: GBP
title: PymtCcy
PymtCcyAmt:
type: string
description: >-
Payment Currency amount with no leading zeros. Conditional: Payment
Amount required if no funding currency amount is given in the
request.
pattern: ^\d{1,13}(\.\d{1,3})?$
maxLength: 17
example: '1234567891234.000'
title: PymtCcyAmt
FundCcy:
type: string
description: Funding Currency.
maxLength: 3
example: USD
title: FundCcy
FundCcyAmt:
type: string
description: >-
Funding Currency amount with no leading zeros Conditional: Funding
Amount, required if no payment currency amount is given pattern:
^\d{1,13}(\.\d{1,3})?$
maxLength: 17
example: '1234567891234.000'
title: FundCcyAmt
QuoteType:
type: string
description: >-
Quote Type: Confirms if a client is a Daily Guaranteed Rate (GR) or
Sport rate customer. If a client is not configured for Daily GR,
then WorldLink will check for the Spot configuration & provide the
rates accordingly. Constant value: "S" - Spot Rate "D" - Daily Rate
Default to use "D". WorldLink will determine as per the client level
setup. Note : Weekend rate will be provided to client irrespective
of the Quote type if client is enabled for weekend FX pricing.
maxLength: 1
example: D
title: QuoteType
RateTerm:
type: string
description: >-
Rate Term: Customer generated. Constant value: “M” - Multiple “D” -
Divide “E” - Interbank "I" - interbank (future use)
maxLength: 1
example: M
title: RateTerm
ValueDate:
type: string
description: 'FX Contract Value Date Format: YYYYMMDD'
pattern: ^(?:19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])$
maxLength: 8
example: '20200426'
title: ValueDate
Tenor:
type: string
description: >-
Tenor value. SP, TN, SD & BA. Value in Tenor parameter is required
if no value date is given Constant value: “SP” - for Spot "TN" -
for Tomorrow Next "SD" - for Same Day "BA" - for Best Available
Value "BA" is preferred to get the Best Available tenor. If Value
date is provided along with the BA tenor, WorldLink will look for
the given value date first. If not available, then next available
tenor (BA-Best Available) will be considered.
maxLength: 2
example: SP
title: Tenor
PmtRoutingId:
type: integer
description: >-
Payment routing id for MBR pricing. To get a pricing for a specific
Outbound payment channel. Example, Digital Wallet, Cards, UPI
payment etc.
maximum: 99999
example: 13773
title: PmtRoutingId
required:
- PymtCcy
- FundCcy
- QuoteType
- RateTerm
- Tenor
Response-Details-Inquiry:
type: object
properties:
PymtCcy:
type: string
description: Payment Currency.
maxLength: 3
example: GBP
title: PymtCcy
PymtCcyAmt:
type: string
description: >-
Payment Currency amount with no leading zeros Conditional: Payment
Amount required if no funding currency amount is given in the
request.
maxLength: 17
example: '1234567891234.000'
title: PymtCcyAmt
FundCcy:
type: string
description: Funding Currency.
maxLength: 3
example: USD
title: FundCcy
FundCcyAmt:
type: string
description: >-
Funding Currency amount with no leading zeros Conditional: Funding
Amount, required if no payment currency amount is given
maxLength: 17
example: '1234567891234.000'
title: FundCcyAmt
Rate:
type: number
description: >-
FX rate for client deal booking. No Rate will be returned in case of
non-zero StatusCode.
maximum: 99999999.99999999
example: 100.1010101
title: Rate
QuoteType:
type: string
description: >-
WorldLink derived quote type will be populated. “S” – Spot, “D” –
Daily. Note : Weekend rate will be provided to client irrespective
of the Quote type if client is enabled for weekend FX pricing.
maxLength: 1
example: D
title: QuoteType
RateTerm:
type: string
description: >-
Rate Term: Customer generated. It is Mandatory for Committed deal
book request type - "FXAUTOBKREQ" It is Optional for Interactive
Deal request - Request type "FXBOOKREQ" Constant value: “M” -
Multiple “D” - Divide “E” - Interbank
maxLength: 1
example: M
title: RateTerm
ValueDate:
type: string
description: 'FX Contract Value Date Format: YYYYMMDD.'
maxLength: 8
example: '20200426'
title: ValueDate
Tenor:
type: string
description: >-
Tenor value. SP, TN, SD. “SP” - for Spot "TN" - for Tomorrow Next
"SD" - for Same Day
maxLength: 2
example: SP
title: Tenor
StatusCode:
type: string
description: >-
This parameter will be mandatorily given in WorldLink response as
per the below scenarios - 1. Successful execution of all CCY pairs
(Happy path) - "000" 2. Any Control/Message header level error - NA
as no repeating records will be returned in response 3. Any
repeating level error - "xxx" (applicable WorldLink error code) **
Note: Source system should not hard code the error codes while
handling the error codes. Other than the code "000" for
"CtrlErrCode" (OR) "StatusCode" should be treated as a "failed"
response.
maxLength: 3
example: '000'
title: StatusCode
StatusMsg:
type: string
description: >-
This parameter will be mandatorily given in WorldLink response along
with StatusCode.
maxLength: 255
example: '000: Request Processed Successfully'
title: StatusMsg
ExpDate:
type: string
description: 'Expiry time of the returned rate. Format: "YYYY-MM-DD-HH:MM:SS"'
maxLength: 19
example: 2024-07-07-07:07:07
title: ExpDate
PmtRoutingId:
type: integer
description: Payment routing id for MBR pricing, Optional parameter.
maximum: 99999
example: 13773
title: PmtRoutingId
required:
- PymtCcy
- FundCcy
- QuoteType
- RateTerm
- ValueDate
- StatusCode
- StatusMsg
- ExpDate
Error-Detail:
type: object
title: Error-Detail
xml:
name: ErrorDetail
properties:
status:
type: string
title: status
description: Error status that provides more details on issue.
message:
type: string
title: message
description: More information about the issue.
correlationId:
type: string
title: correlationId
description: Unique identifier for the request.
examples:
Fx-Request-API-Inquiry-Example:
value:
FxRequestAPIOperation:
FXP588Operation:
FxRequest:
Source: APIM
ReqType: FXINQRYREQ
ClntNo: '01010'
BrNo: '0101'
PrefRateType: 'N'
TrnRefNo: 1234567890ABCDEF
CcyPairCnt: '01'
ReqTime: 2024-07-07-07:07:07
RequestDetails:
- PymtCcy: GBP
PymtCcyAmt: '1234567891234.001'
FundCcy: USD
FundCcyAmt: '1234567891234.001'
QuoteType: D
RateTerm: M
ValueDate: '20200426'
Tenor: SP
PmtRoutingId: 13773
Fx-Request-API-BookFX-Example:
value:
FxRequestAPIOperation:
FXP588Operation:
FxRequest:
Source: APIM
ReqType: FXAUTOBKREQ
ClntNo: '01010'
BrNo: '0101'
PrefRateType: 'N'
TrnRefNo: 1234567890ABCDEF
UserId: ABCD1234
CcyPairCnt: '01'
ReqTime: 2024-07-07-07:07:07
RequestDetails:
- PymtCcy: GBP
PymtCcyAmt: '1234567891234.001'
FundCcy: USD
FundCcyAmt: '1234567891234.001'
QuoteType: D
RateTerm: M
ValueDate: '20200426'
Tenor: SP
PmtRoutingId: 13773
Fx-Request-API-BookFX-Response-Example:
value:
FxRequestAPIOperationResponse:
FXP588Operation:
FxResponse:
Source: APIM
ResType: FXAUTOBKRSP
ClntNo: '01010'
BrNo: '0101'
TrnRefNo: 1234567890ABCDEF
ResTime: 2024-07-07-07:07:07
UserId: ABCD1234
CcyPairCnt: '01'
CtrlErrCode: '000'
CtrlErrMsg: Request Successful
ResponseDetails:
- PymtCcy: GBP
PymtCcyAmt: '1234567891234.001'
FundCcy: USD
FundCcyAmt: '1234567891234.001'
Rate: 100.1010101
QuoteType: D
RateTerm: M
ValueDate: '20200426'
Tenor: SP
StatusCode: '000'
StatusMsg: '000: Request Processed Successfully'
ContractRefId: AA0161013856997
UnwindTime: 2024-07-07-07:07:07
Fx-Request-API-Inquiry-Response-Example:
value:
FxRequestAPIOperationResponse:
FXP588Operation:
FxResponse:
Source: APIM
ResType: FXINQRYRSP
ClntNo: '01010'
BrNo: '0101'
TrnRefNo: 1234567890ABCDEF
ResTime: 2024-07-07-07:07:07
UserId: ABCD1234
CcyPairCnt: '01'
CtrlErrCode: '000'
CtrlErrMsg: Request Successful
ResponseDetails:
- PymtCcy: GBP
PymtCcyAmt: '1234567891234.001'
FundCcy: USD
FundCcyAmt: '1234567891234.001'
Rate: 100.1010101
QuoteType: D
RateTerm: M
ValueDate: '20200426'
Tenor: SP
StatusCode: '000'
StatusMsg: '000: Request Processed Successfully'
ExpDate: 2024-07-07-07:07:07
PmtRoutingId: 13773
Bad-Request-Example:
value:
status: '400'
message: >-
Invalid value provided for request. Please provide valid value for
request.
correlationId: testFx-400
Unauthorized-Example:
value:
status: '401'
message: >-
User does not have authorization to access this functionality. Please
use valid credentials to access this functionality.
correlationId: testFx-401
Request-Forbidden-Example:
value:
status: '403'
message: >-
User does not have sufficient privileges to access this functionality.
Please reach out to the support team to enable this feature.
correlationId: testFx-403
Not-Found-Example:
value:
status: '404'
message: >-
Resources that you are searching for are not found. Please use valid
resource details.
correlationId: testFx-404
Internal-Server-Example:
value:
status: '500'
message: Unable to serve your request at this time. Please try again later.
correlationId: testFx-500
securitySchemes:
clientCredentials:
description: >+
All CitiConnect APIs use the oAuth2 authentication scheme, which
requires a bearer token to authenticate your API call. The Token URL
includes the version of authentication used by this API. See the Citi Authentication API reference for
information on requesting a token.
type: oauth2
flows:
clientCredentials:
tokenUrl: >-
https://tts.sandbox.apib2b.citi.com/citiconnect/sb/authenticationservices/v1/oauth/token
scopes: {}