core-connector-lib
Version:
A connector that facilitates payments between a Mojaloop Connector (SDK Scheme Adapter) and a Core Banking system
1,536 lines (1,532 loc) • 98.3 kB
YAML
openapi: 3.0.1
info:
title: Mojaloop SDK Backend API
description: |
API specification for the SDK Backend API.
To be implemented by the Digital Financial Service Provider (DFSP) to work in tandem with the Mojaloop SDK (`mojaloop/sdk-scheme-adapter`).
This API is not to be confused with the Mojaloop SDK's Inbound or Outbound API.
TODO: More explanation and links about the SDK adapter's Inbound and Outbound API.
**Note on terminology:** The term "Switch" is equal to the term "Hub", and the term "FSP" is equal to the term "DFSP".
license:
name: Apache License Version 2.0, January 2004
url: http://www.apache.org/licenses/
version: 2.1.0
paths:
/:
get:
operationId: BackendHealthCheck
responses:
'200':
description: Returns empty body if the service is running.
summary: Health check endpoint.
/bulkQuotes:
post:
operationId: BackendBulkQuotesPost
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/bulkQuoteRequest'
description: Incoming request for a bulk quotation.
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/bulkQuoteResponse'
description: A response to the bulk quote request.
'400':
$ref: '#/components/responses/400'
'500':
$ref: '#/components/responses/500'
summary: Requests a bulk quote.
tags:
- BulkQuotes
/bulkQuotes/{idValue}:
get:
operationId: BackendBulkQuotesGet
parameters:
- $ref: '#/components/parameters/idValue'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/bulkQuoteResponse'
description: Response containing details of the requested bulk quote.
'400':
$ref: '#/components/responses/400'
'404':
$ref: '#/components/responses/404'
'500':
$ref: '#/components/responses/500'
summary: Requests information relating to a bulk quote identified by the specified identifier value.
tags:
- BulkQuotes
/bulkTransactions/{bulkTransactionId}:
put:
description: The HTTP request `PUT /bulkTransactions/{bulkTransactionId}` is used to amend information regarding a bulk transaction, i.e. when autoAcceptParty or autoAcceptQuote is false then the payer need to provide confirmation to proceed with further processing of the request. The `{bulkTransactionId}` in the URI should contain the `bulkTransactionId` that was used for the creation of the bulk transfer.
operationId: BackendBulkTransactionsPut
parameters:
- $ref: '#/components/parameters/bulkTransactionId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/bulkTransactionResponse'
responses:
'202':
description: Bulk transaction information successfully amended.
'400':
$ref: '#/components/responses/400'
'500':
$ref: '#/components/responses/500'
summary: Callbacks for the bulk transaction request.
tags:
- BulkTransactionsPut
/requestToPay/{transactionRequestId}:
put:
description: It is used to notify the DFSP backend about the status of the requestToPayTransfer.
operationId: RequestToPayPut
parameters:
- $ref: '#/components/parameters/transactionRequestId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/requestToPayCallback'
responses:
'200':
description: OK
'400':
$ref: '#/components/responses/400'
'500':
$ref: '#/components/responses/500'
summary: Callback for the requestToPay request.
tags:
- RequestToPayPut
/bulkTransfers:
post:
operationId: BackendBulkTransfersPost
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/bulkTransferRequest'
description: An incoming bulk transfer request.
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/bulkTransferResponse'
description: The bulk transfer was accepted.
'400':
$ref: '#/components/responses/400'
'500':
$ref: '#/components/responses/500'
summary: Execute bulk transfer of funds from an external account to internal accounts.
tags:
- BulkTransfers
/bulkTransfers/{idValue}:
get:
operationId: BackendBulkTransfersGet
parameters:
- $ref: '#/components/parameters/idValue'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/bulkTransferResponse'
description: Response containing details of the requested bulk transfer.
'400':
$ref: '#/components/responses/400'
'404':
$ref: '#/components/responses/404'
'500':
$ref: '#/components/responses/500'
summary: Requests information relating to a bulk transfer identified by the specified identifier value.
tags:
- BulkTransfers
/otp/{transactionRequestId}:
get:
operationId: BackendOtpGet
parameters:
- $ref: '#/components/parameters/transactionRequestId'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/otpDetails'
description: Response containing details of the OTP.
'400':
$ref: '#/components/responses/400'
'404':
$ref: '#/components/responses/404'
'500':
$ref: '#/components/responses/500'
summary: Requests OTP.
tags:
- OTP
/participants/{idType}/{idValue}:
get:
description: The HTTP request `GET /participants/{idType}/{idValue}` is used to find out in which FSP the requested party, defined by `{idType}` and `{idValue}`, is located.
operationId: BackendParticipantsGetByTypeAndID
parameters:
- $ref: '#/components/parameters/idType'
- $ref: '#/components/parameters/idValue'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/participantsResponse'
description: Response containing details of the requested party.
'400':
$ref: '#/components/responses/400'
'404':
$ref: '#/components/responses/404'
'500':
$ref: '#/components/responses/500'
summary: Asks for the identifier (fspId) of the scheme participant (FSP) that can handle transfers for the specified identifier type and value.
tags:
- Participants
/participants/{idType}/{idValue}/{idSubValue}:
get:
description: The HTTP request `GET /participants/{idType}/{idValue}/{idSubValue}` is used to find out in which FSP the requested party, defined by `{idType}`, `{idValue}` and `{idSubValue}` is located.
operationId: BackendParticipantsGetByTypeIDAndSubId
parameters:
- $ref: '#/components/parameters/idType'
- $ref: '#/components/parameters/idValue'
- $ref: '#/components/parameters/idSubValue'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/participantsResponse'
description: Response containing details of the requested party.
'400':
$ref: '#/components/responses/400'
'404':
$ref: '#/components/responses/404'
'500':
$ref: '#/components/responses/500'
summary: Asks for the identifier (fspId) of the scheme participant (FSP) that can handle transfers for the specified identifier type and value.
tags:
- Participants
/parties/{idType}/{idValue}:
get:
description: The HTTP request `GET /parties/{idType}/{idValue}` is used to look up information regarding the requested transfer party, identified by `{idType}` and `{idValue}`.
operationId: BackendPartiesGetByTypeAndID
parameters:
- $ref: '#/components/parameters/idType'
- $ref: '#/components/parameters/idValue'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/transferParty'
description: Response containing details of the requested party.
'400':
$ref: '#/components/responses/400'
'404':
$ref: '#/components/responses/404'
'500':
$ref: '#/components/responses/500'
summary: Requests information relating to a transfer party identified by the specified identifier type and value.
tags:
- Parties
/parties/{idType}/{idValue}/{idSubValue}:
get:
description: The HTTP request `GET /parties/{idType}/{idValue}/{idSubValue}` is used to look up information regarding the requested transfer party, identified by `{idType}`, `{idValue}` and `{idSubValue}`.
operationId: BackendPartiesGetByTypeIdAndSubId
parameters:
- $ref: '#/components/parameters/idType'
- $ref: '#/components/parameters/idValue'
- $ref: '#/components/parameters/idSubValue'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/transferParty'
description: Response containing details of the requested party.
'400':
$ref: '#/components/responses/400'
'404':
$ref: '#/components/responses/404'
'500':
$ref: '#/components/responses/500'
summary: Requests information relating to a transfer party identified by the specified identifier type, value and subId value.
tags:
- Parties
/quoterequests:
post:
description: The HTTP request `POST /quoterequests` is used to request the creation of a quote for the provided financial transaction.
operationId: BackendQuoteRequest
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/quoteRequest'
description: Request for a transfer quotation.
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/quoteResponse'
description: A response to the transfer quotation request.
'400':
$ref: '#/components/responses/400'
'500':
$ref: '#/components/responses/500'
summary: Requests a quote for the specified transfer.
tags:
- Quotes
/transactionrequests:
post:
operationId: BackendTransactionRequest
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/transactionRequest'
description: Request for Transaction Request.
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/transactionRequestResponse'
description: A response to the transfer transaction request.
'400':
$ref: '#/components/responses/400'
'500':
$ref: '#/components/responses/500'
summary: Transaction request that supports pull based transfers.
tags:
- TransactionRequest
/transfers:
post:
description: The HTTP request `POST /transfers` is used to request the creation of a transfer for the transfer party.
operationId: BackendTransfersPost
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/transferRequest'
description: An incoming transfer request.
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/transferResponse'
description: The transfer was accepted.
'400':
$ref: '#/components/responses/400'
'500':
$ref: '#/components/responses/500'
summary: Transfers funds from an external account to an internal account.
tags:
- Transfers
/transfers/{transferId}:
get:
description: The HTTP request `GET /transfers/{transferId}` is used to get information regarding a transfer created or requested earlier. The `{transferId}` in the URI should contain the `transferId` that was used for the creation of the transfer.
operationId: BackendTransfersGet
parameters:
- $ref: '#/components/parameters/transferId'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/transferDetailsResponse'
description: The transfer was accepted.
'500':
$ref: '#/components/responses/500'
summary: Retrieves information for a specific transfer.
tags:
- Transfers
put:
description: The HTTP request `PUT /transfers/{transferId}` is used to receive notification for transfer being fulfiled when the FSP is a Payee.
operationId: BackendTransfersPut
parameters:
- $ref: '#/components/parameters/transferId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/fulfilNotification'
description: An incoming notification for fulfiled transfer.
responses:
'200':
description: The notification was accepted.
'500':
$ref: '#/components/responses/500'
summary: Receive notification for a specific transfer.
tags:
- Transfers
/fxQuotes:
post:
description: The HTTP request `POST /fxQuotes` is used to ask an FXP backend to provide a quotation for a currency conversion.
summary: Calculate FX quote
tags:
- Fx
operationId: FxQuotesPost
requestBody:
description: Details of the FX quote request.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/FxQuotesPostBackendRequest'
responses:
'200':
description: Successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/FxQuotesPostBackendResponse'
'400':
$ref: '#/components/responses/400'
'500':
$ref: '#/components/responses/500'
/fxTransfers:
post:
description: The HTTP request `POST /fxTransfers` is used to ask an FXP backend to confirm the execution of an agreed currency conversion.
summary: Perform FX transfer
tags:
- Fx
operationId: FxTransfersPost
requestBody:
description: Details of the FX transfer request.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/FxTransfersPostBackendRequest'
responses:
'200':
description: Successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/FxTransfersPostBackendResponse'
'400':
$ref: '#/components/responses/400'
'500':
$ref: '#/components/responses/500'
/fxTransfers/{commitRequestId}:
put:
description: The HTTP request `PUT /fxTransfers/{commitRequestId}` is used to notify an FXP backend about the status of currency conversion.
summary: FX Commit Notification
tags:
- Fx
operationId: FxTransfersById
requestBody:
description: Status of the FX transfer.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/FxTransfersPutBackendRequest'
responses:
'200':
$ref: '#/components/responses/200'
'400':
$ref: '#/components/responses/400'
'500':
$ref: '#/components/responses/500'
patch:
description: The HTTP request `PATCH /fxTransfers/{commitRequestId}` is used to notify an FXP backend about the status of currency conversion.
summary: FX Update Conversion State Notification
tags:
- Fx
operationId: FxTransfersPatchById
requestBody:
description: Update and notify status of the FX transfer.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/FxTransfersPatchBackendRequest'
responses:
'200':
$ref: '#/components/responses/200'
'400':
$ref: '#/components/responses/400'
'500':
$ref: '#/components/responses/500'
components:
parameters:
idSubValue:
description: A sub-identifier of the party identifier, or a sub-type of the party identifier's type. For example, `PASSPORT`, `DRIVING_LICENSE`.
in: path
name: idSubValue
required: true
schema:
type: string
idType:
description: The type of the party identifier. For example, `MSISDN`, `PERSONAL_ID`.
in: path
name: idType
required: true
schema:
type: string
idValue:
description: The identifier value.
in: path
name: idValue
required: true
schema:
type: string
transactionRequestId:
in: path
name: transactionRequestId
required: true
schema:
$ref: '#/components/schemas/transactionRequestId'
transferId:
in: path
name: transferId
required: true
schema:
type: string
bulkTransactionId:
name: bulkTransactionId
in: path
required: true
schema:
$ref: '#/components/schemas/CorrelationId'
description: Identifier of the bulk transaction to continue as returned in the response to a `POST /bulkTransaction` request.
schemas:
DateOfBirth:
title: DateofBirth (type Date)
type: string
pattern: ^(?:[1-9]\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)$
description: Date of Birth of the Party.
example: '1966-06-16'
FirstName:
title: FirstName
type: string
minLength: 1
maxLength: 128
pattern: ^(?!\s*$)[\p{L}\p{gc=Mark}\p{digit}\p{gc=Connector_Punctuation}\p{Join_Control} .,''-]{1,128}$
description: First name of the Party (Name Type).
example: Henrik
FspId:
title: FspId
type: string
minLength: 1
maxLength: 32
description: FSP identifier.
IndividualQuote:
description: Data model for individual quote in a bulk quote request.
properties:
amount:
$ref: '#/components/schemas/money'
amountType:
$ref: '#/components/schemas/amountType'
currency:
$ref: '#/components/schemas/currency'
feesAmount:
$ref: '#/components/schemas/money'
feesCurrency:
$ref: '#/components/schemas/currency'
initiator:
$ref: '#/components/schemas/initiator'
initiatorType:
$ref: '#/components/schemas/initiatorType'
note:
description: An optional note associated with the quote.
maxLength: 128
minLength: 1
type: string
quoteId:
$ref: '#/components/schemas/quoteId'
subScenario:
$ref: '#/components/schemas/TransactionSubScenario'
to:
$ref: '#/components/schemas/transferParty'
transactionId:
$ref: '#/components/schemas/transactionId'
transactionType:
$ref: '#/components/schemas/transactionType'
required:
- quoteId
- transactionId
- to
- amountType
- amount
- currency
- transactionType
- initiator
- initiatorType
type: object
IndividualQuoteResultFailed:
description: Data model for failed individual quote in a bulk quote response.
properties:
errorResponse:
$ref: '#/components/schemas/errorResponse'
quoteId:
$ref: '#/components/schemas/quoteId'
required:
- quoteId
- errorResponse
type: object
IndividualQuoteResultSuccess:
description: Data model for successful individual quote in a bulk quote response.
properties:
payeeFspCommissionAmount:
$ref: '#/components/schemas/money'
payeeFspCommissionAmountCurrency:
$ref: '#/components/schemas/currency'
payeeFspFeeAmount:
$ref: '#/components/schemas/money'
payeeFspFeeAmountCurrency:
$ref: '#/components/schemas/currency'
payeeReceiveAmount:
$ref: '#/components/schemas/money'
payeeReceiveAmountCurrency:
$ref: '#/components/schemas/currency'
quoteId:
$ref: '#/components/schemas/quoteId'
transferAmount:
$ref: '#/components/schemas/money'
transferAmountCurrency:
$ref: '#/components/schemas/currency'
required:
- quoteId
type: object
IndividualTransfer:
description: Data model for individual transfer in a bulk transfer request.
properties:
amount:
$ref: '#/components/schemas/money'
amountType:
$ref: '#/components/schemas/amountType'
currency:
$ref: '#/components/schemas/currency'
feesAmount:
$ref: '#/components/schemas/money'
feesCurrency:
$ref: '#/components/schemas/currency'
initiator:
$ref: '#/components/schemas/initiator'
initiatorType:
$ref: '#/components/schemas/initiatorType'
note:
description: An optional note associated with the quote.
maxLength: 128
minLength: 1
type: string
subScenario:
$ref: '#/components/schemas/TransactionSubScenario'
to:
$ref: '#/components/schemas/transferParty'
transactionType:
$ref: '#/components/schemas/transactionType'
transferId:
$ref: '#/components/schemas/transferId'
required:
- transferId
- amount
- currency
type: object
IndividualTransferResult:
description: Data model for individual transfer in a bulk transfer response.
properties:
errorResponse:
$ref: '#/components/schemas/errorResponse'
extensionList:
$ref: '#/components/schemas/extensionList'
transferId:
$ref: '#/components/schemas/transferId'
required:
- transferId
type: object
LastName:
title: LastName
type: string
minLength: 1
maxLength: 128
pattern: ^(?!\s*$)[\p{L}\p{gc=Mark}\p{digit}\p{gc=Connector_Punctuation}\p{Join_Control} .,''-]{1,128}$
description: Last name of the Party (Name Type).
example: Karlsson
MerchantClassificationCode:
title: MerchantClassificationCode
type: string
pattern: ^[\d]{1,4}$
description: A limited set of pre-defined numbers. This list would be a limited set of numbers identifying a set of popular merchant types like School Fees, Pubs and Restaurants, Groceries, etc.
MiddleName:
title: MiddleName
type: string
minLength: 1
maxLength: 128
pattern: ^(?!\s*$)[\p{L}\p{gc=Mark}\p{digit}\p{gc=Connector_Punctuation}\p{Join_Control} .,''-]{1,128}$
description: Middle name of the Party (Name Type).
example: Johannes
amountCurrency:
description: Object containing Amount and Currency of the transfer.
properties:
amount:
$ref: '#/components/schemas/money'
currency:
$ref: '#/components/schemas/currency'
required:
- amount
- currency
type: object
amountType:
enum:
- SEND
- RECEIVE
type: string
bulkQuoteId:
description: A Mojaloop API bulk quote identifier (UUID/ULID).
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[1-7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$|^[0-9A-HJKMNP-TV-Z]{26}$
type: string
bulkQuoteRequest:
description: A request for a bulk quote.
properties:
bulkQuoteId:
$ref: '#/components/schemas/bulkQuoteId'
expiration:
$ref: '#/components/schemas/timestamp'
from:
$ref: '#/components/schemas/transferParty'
geoCode:
$ref: '#/components/schemas/geoCode'
individualQuotes:
items:
$ref: '#/components/schemas/IndividualQuote'
maxItems: 1000
minItems: 1
type: array
required:
- bulkQuoteId
- from
- individualQuotes
type: object
bulkQuoteResponse:
description: A response to a request for a bulk quote.
properties:
bulkQuoteId:
$ref: '#/components/schemas/bulkQuoteId'
expiration:
$ref: '#/components/schemas/timestamp'
individualQuoteResults:
description: Fees for each individual transaction, if any of them are charged per transaction.
items:
oneOf:
- $ref: '#/components/schemas/IndividualQuoteResultSuccess'
- $ref: '#/components/schemas/IndividualQuoteResultFailed'
maxItems: 1000
minItems: 1
type: array
required:
- bulkQuoteId
- individualQuoteResults
type: object
bulkTransferId:
description: A Mojaloop API transfer identifier (UUID/ULID).
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[1-7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$|^[0-9A-HJKMNP-TV-Z]{26}$
type: string
bulkTransferRequest:
properties:
bulkQuote:
$ref: '#/components/schemas/bulkQuoteResponse'
bulkTransferId:
$ref: '#/components/schemas/bulkTransferId'
from:
$ref: '#/components/schemas/transferParty'
individualTransfers:
items:
$ref: '#/components/schemas/IndividualTransfer'
maxItems: 1000
minItems: 1
type: array
required:
- bulkTransferId
- individualTransfers
type: object
bulkTransferResponse:
properties:
bulkTransferId:
$ref: '#/components/schemas/bulkTransferId'
homeTransactionId:
description: Transaction ID from the DFSP backend, used to reconcile transactions between the switch and DFSP backend systems.
type: string
individualTransferResults:
items:
$ref: '#/components/schemas/IndividualTransferResult'
maxItems: 1000
minItems: 1
type: array
required:
- homeTransactionId
type: object
currency:
enum:
- AED
- AFN
- ALL
- AMD
- ANG
- AOA
- ARS
- AUD
- AWG
- AZN
- BAM
- BBD
- BDT
- BGN
- BHD
- BIF
- BMD
- BND
- BOB
- BRL
- BSD
- BTN
- BWP
- BYN
- BZD
- CAD
- CDF
- CHF
- CLP
- CNY
- COP
- CRC
- CUC
- CUP
- CVE
- CZK
- DJF
- DKK
- DOP
- DZD
- EGP
- ERN
- ETB
- EUR
- FJD
- FKP
- GBP
- GEL
- GGP
- GHS
- GIP
- GMD
- GNF
- GTQ
- GYD
- HKD
- HNL
- HRK
- HTG
- HUF
- IDR
- ILS
- IMP
- INR
- IQD
- IRR
- ISK
- JEP
- JMD
- JOD
- JPY
- KES
- KGS
- KHR
- KMF
- KPW
- KRW
- KWD
- KYD
- KZT
- LAK
- LBP
- LKR
- LRD
- LSL
- LYD
- MAD
- MDL
- MGA
- MKD
- MMK
- MNT
- MOP
- MRO
- MUR
- MVR
- MWK
- MXN
- MYR
- MZN
- NAD
- NGN
- NIO
- NOK
- NPR
- NZD
- OMR
- PAB
- PEN
- PGK
- PHP
- PKR
- PLN
- PYG
- QAR
- RON
- RSD
- RUB
- RWF
- SAR
- SBD
- SCR
- SDG
- SEK
- SGD
- SHP
- SLL
- SOS
- SPL
- SRD
- STD
- SVC
- SYP
- SZL
- THB
- TJS
- TMT
- TND
- TOP
- TRY
- TTD
- TVD
- TWD
- TZS
- UAH
- UGX
- USD
- UYU
- UZS
- VEF
- VND
- VUV
- WST
- XAF
- XCD
- XDR
- XOF
- XPF
- XTS
- XXX
- YER
- ZAR
- ZMW
- ZWD
maxLength: 3
minLength: 3
type: string
dateOfBirth:
description: Date of birth in the form YYYY-MM-DD.
pattern: ^(?:[1-9]\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)$
type: string
errorCode:
description: |
The API data type errorCode is a JSON String of four characters, consisting of digits only. Negative numbers are not allowed. A leading zero is not allowed. Each error code in the API is a four-digit number, for example, 1234, where the first number (1 in the example) represents the high-level error category, the second number (2 in the example) represents the low-level error category, and the last two numbers (34 in the example) represents the specific error.
pattern: ^[1-9]\d{3}$
title: ErrorCode
type: string
errorDescription:
description: Error description string.
maxLength: 128
minLength: 1
title: ErrorDescription
type: string
errorInformation:
description: A Mojaloop API error information construct.
properties:
errorCode:
$ref: '#/components/schemas/errorCode'
errorDescription:
$ref: '#/components/schemas/errorDescription'
extensionList:
$ref: '#/components/schemas/extensionListComplex'
required:
- errorCode
- errorDescription
title: ErrorInformation
type: object
extensionItem:
properties:
key:
minLength: 1
type: string
value:
maxLength: 128
minLength: 1
type: string
type: object
extensionList:
items:
$ref: '#/components/schemas/extensionItem'
maxItems: 16
minItems: 0
type: array
extensionListComplex:
description: Data model for the complex type ExtensionList.
properties:
extension:
description: Number of Extension elements.
items:
$ref: '#/components/schemas/extensionItem'
maxItems: 16
minItems: 1
type: array
required:
- extension
type: object
fspId:
description: FSP identifier.
maxLength: 32
minLength: 1
type: string
fulfilNotification:
description: PUT /transfers/{transferId} object.
properties:
currentState:
$ref: '#/components/schemas/transferStatus'
direction:
enum:
- INBOUND
type: string
finalNotification:
properties:
completedTimestamp:
$ref: '#/components/schemas/timestamp'
extensionList:
$ref: '#/components/schemas/extensionList'
transferState:
$ref: '#/components/schemas/transferState'
required:
- completedTimestamp
- transferState
type: object
fulfil:
properties:
body:
$ref: '#/components/schemas/TransfersIDPutResponse'
headers:
type: object
type: object
initiatedTimestamp:
$ref: '#/components/schemas/timestamp'
lastError:
$ref: '#/components/schemas/transferError'
prepare:
properties:
body:
$ref: '#/components/schemas/TransfersPostRequest'
headers:
type: object
type: object
quote:
properties:
fulfilment:
$ref: '#/components/schemas/IlpFulfilment'
internalRequest:
$ref: '#/components/schemas/quoteRequest'
mojaloopResponse:
$ref: '#/components/schemas/QuotesIDPutResponse'
request:
$ref: '#/components/schemas/QuotesPostRequest'
response:
$ref: '#/components/schemas/quoteResponse'
type: object
quoteRequest:
properties:
body:
$ref: '#/components/schemas/QuotesPostRequest'
headers:
type: object
type: object
quoteResponse:
properties:
body:
$ref: '#/components/schemas/QuotesIDPutResponse'
headers:
type: object
type: object
transferId:
$ref: '#/components/schemas/transferId'
title: TransfersIDPatchResponse
type: object
generalError:
description: This object may represent a number of different error object types and so its properties may vary significantly.
type: object
geoCode:
description: Indicates the geographic location from where the transaction was initiated.
properties:
latitude:
$ref: '#/components/schemas/latitude'
longitude:
$ref: '#/components/schemas/longitude'
required:
- latitude
- longitude
type: object
idSubValue:
maxLength: 128
minLength: 1
type: string
idType:
enum:
- MSISDN
- ACCOUNT_NO
- EMAIL
- PERSONAL_ID
- BUSINESS
- DEVICE
- ACCOUNT_ID
- IBAN
- ALIAS
type: string
idValue:
description: Identifier of the party.
maxLength: 128
minLength: 1
type: string
ilpPacketData:
description: Object containing transfer object.
properties:
amount:
$ref: '#/components/schemas/amountCurrency'
payee:
$ref: '#/components/schemas/Party'
payer:
$ref: '#/components/schemas/Party'
quoteId:
$ref: '#/components/schemas/quoteId'
transactionId:
$ref: '#/components/schemas/transactionId'
transactionType:
$ref: '#/components/schemas/transactionTypeObject'
required:
- quoteId
- transactionId
- payer
- payee
- amount
- transactionType
type: object
initiator:
enum:
- PAYER
- PAYEE
type: string
initiatorType:
enum:
- CONSUMER
- AGENT
- BUSINESS
- DEVICE
type: string
latitude:
description: The API data type Latitude is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons.
pattern: ^(\+|-)?(?:90(?:(?:\.0{1,6})?)|(?:[0-9]|[1-8][0-9])(?:(?:\.[0-9]{1,6})?))$
type: string
longitude:
description: The API data type Longitude is a JSON String in a lexical format that is restricted by a regular expression for interoperability reasons.
pattern: ^(\+|-)?(?:180(?:(?:\.0{1,6})?)|(?:[0-9]|[1-9][0-9]|1[0-7][0-9])(?:(?:\.[0-9]{1,6})?))$
type: string
money:
pattern: ^([0]|([1-9][0-9]{0,17}))([.][0-9]{0,3}[1-9])?$
type: string
otpDetails:
properties:
otpValue:
description: OTP value.
type: string
required:
- otpValue
type: object
participantsResponse:
properties:
fspId:
$ref: '#/components/schemas/fspId'
type: object
payerType:
enum:
- CONSUMER
- AGENT
- BUSINESS
- DEVICE
type: string
quoteId:
description: A Mojaloop API quote identifier (UUID/ULID).
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[1-7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$|^[0-9A-HJKMNP-TV-Z]{26}$
type: string
quoteRequest:
description: A request for a quote for transfer from the DFSP backend.
properties:
homeR2PTransactionId:
type: string
description: Linked homeR2PTransactionId which was generated as part of POST /requestToPay to SDK incase of requestToPay transfer.
amount:
$ref: '#/components/schemas/money'
amountType:
$ref: '#/components/schemas/amountType'
currency:
$ref: '#/components/schemas/currency'
expiration:
$ref: '#/components/schemas/timestamp'
extensionList:
$ref: '#/components/schemas/extensionList'
feesAmount:
$ref: '#/components/schemas/money'
feesCurrency:
$ref: '#/components/schemas/currency'
from:
$ref: '#/components/schemas/transferParty'
geoCode:
$ref: '#/components/schemas/geoCode'
initiator:
$ref: '#/components/schemas/initiator'
initiatorType:
$ref: '#/components/schemas/initiatorType'
note:
description: An optional note associated with the requested transfer.
maxLength: 128
minLength: 1
type: string
quoteId:
$ref: '#/components/schemas/quoteId'
subScenario:
$ref: '#/components/schemas/TransactionSubScenario'
to:
$ref: '#/components/schemas/transferParty'
transactionId:
$ref: '#/components/schemas/transactionId'
transactionType:
$ref: '#/components/schemas/transactionType'
transactionRequestId:
$ref: '#/components/schemas/transactionRequestId'
converter:
allOf:
- $ref: '#/components/schemas/CurrencyConverter'
- description: An optional field which will allow the payer DFSP to specify which DFSP it wants to undertake currency conversion. This is useful incase of if the sender wants the recipient to receive a specified amount of the target currency, but the payer DFSP does not want to undertake the currency conversion. In this case, the amount of the transfer would be expressed in the target currency and the amountType would be set to RECEIVE.
currencyConversion:
allOf:
- $ref: '#/components/schemas/FxRate'
- description: Used by the debtor party if it wants to share information about the currency conversion it proposes to make; or if it is required by scheme rules to share this information. This object contains the amount of the transfer in the source and target currencies, but does not identify the FXP being used.
required:
- quoteId
- transactionId
- to
- from
- amountType
- amount
- currency
- transactionType
- initiator
- initiatorType
type: object
quoteResponse:
description: A response to a request for a quote.
properties:
expiration:
$ref: '#/components/schemas/timestamp'
extensionList:
$ref: '#/components/schemas/extensionList'
geoCode:
$ref: '#/components/schemas/geoCode'
payeeFspCommissionAmount:
$ref: '#/components/schemas/money'
payeeFspCommissionAmountCurrency:
$ref: '#/components/schemas/currency'
payeeFspFeeAmount:
$ref: '#/components/schemas/money'
payeeFspFeeAmountCurrency:
$ref: '#/components/schemas/currency'
payeeReceiveAmount:
$ref: '#/components/schemas/money'
payeeReceiveAmountCurrency:
$ref: '#/components/schemas/currency'
quoteId:
$ref: '#/components/schemas/quoteId'
transactionId:
$ref: '#/components/schemas/transactionId'
transferAmount:
$ref: '#/components/schemas/money'
transferAmountCurrency:
$ref: '#/components/schemas/currency'
required:
- quoteId
- transactionId
- transferAmount
- transferAmountCurrency
type: object
scenario:
enum:
- TRANSFER
type: string
timestamp:
description: An ISO-8601 formatted timestamp.
pattern: ^(?:[1-9]\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:(\.\d{3}))(?:Z|[+-][01]\d:[0-5]\d)$
type: string
transactionId:
description: ID of the transaction, the ID is decided by the Payer FSP during the creation of the quote.
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[1-7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$|^[0-9A-HJKMNP-TV-Z]{26}$
type: string
transactionRequest:
description: A request for a pull based transfer.
properties:
amount:
$ref: '#/components/schemas/money'
currency:
$ref: '#/components/schemas/currency'
expiration:
$ref: '#/components/schemas/timestamp'
from:
$ref: '#/components/schemas/transferParty'
geoCode:
$ref: '#/components/schemas/geoCode'
initiator:
$ref: '#/components/schemas/initiator'
initiatorType:
$ref: '#/components/schemas/initiatorType'
note:
description: An optional note associated with the requested transfer.
maxLength: 128
minLength: 1
type: string
to:
$ref: '#/components/schemas/transferParty'
transactionRequestId:
$ref: '#/components/schemas/transactionRequestId'
transactionType:
$ref: '#/components/schemas/transactionType'
subScenario:
$ref: '#/components/schemas/TransactionSubScenario'
authenticationType:
$ref: '#/components/schemas/AuthenticationType'
required:
- transactionRequestId
- to
- from
- amount
- currency
- transactionType
- initiator
- initiatorType
type: object
transactionRequestId:
description: A Mojaloop API transaction request identifier (UUID/ULID).
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[1-7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$|^[0-9A-HJKMNP-TV-Z]{26}$
type: string
transactionRequestResponse:
description: A response to a request for a quote.
properties:
homeR2PTransactionId:
type: string
description: Transaction ID from the DFSP backend, used to reconcile transactions between the Switch and DFSP backend systems.
transactionId:
$ref: '#/components/schemas/transactionId'
transactionRequestState:
$ref: '#/components/schemas/transactionRequestState'
required:
- transactionId
- transactionRequestState
type: object
transactionRequestState:
enum:
- RECEIVED
- PENDING
- ACCEPTED
- REJECTED
type: string
transactionSubScenario:
description: Possible sub-scenario, defined locally within the scheme (UndefinedEnum Type). Based on FSPIOP TransactionSubScenario.
example: LOCALLY_DEFINED_SUBSCENARIO
pattern: ^[A-Z_]{1,32}$
title: transactionSubScenario
type: string
transactionType:
enum:
- TRANSFER
- DEPOSIT
- PAYMENT
type: string
transactionTypeObject:
description: Object containing transfer object.
properties:
initiator:
$ref: '#/components/schemas/initiator'
initiatorType:
$ref: '#/components/schemas/initiatorType'
scenario:
$ref: '#/components/schemas/scenario'
subScenario:
$ref: '#/components/schemas/TransactionSubScenario'
required:
- scenario
- initiator
- initiatorType
type: object
transferDetailsResponse:
properties:
amount:
$ref: '#/components/schemas/money'
amountType:
$ref: '#/components/schemas/amountType'
currency:
$ref: '#/components/schemas/currency'
extensions:
$ref: '#/components/schemas/extensionList'
from:
$ref: '#/components/schemas/transferParty'
homeTransactionId:
description: Transaction ID from the DFSP backend, used to reconcile transactions between the Switch and DFSP backend systems.
type: string
note:
maxLength: 128
type: string
subScenario:
$ref: '#/components/schemas/TransactionSubScenario'
timestamp:
$ref: '#/components/schemas/timestamp'
to:
$ref: '#/components/schemas/transferParty'
transactionType:
$ref: '#/components/schemas/transactionType'
transferState:
$ref: '#/components/schemas/transferState'
required:
- homeTransactionId
- from
- to
- amountType
- currency
- amount
- transferState
- transactionType
- timestamp
type: object
transferId:
description: A Mojaloop API transfer identifier (UUID/ULID).
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[1-7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$|^[0-9A-HJKMNP-TV-Z]{26}$
type: string
transferParty:
properties:
dateOfBirth:
$ref: '#/components/schemas/dateOfBirth'
displayName:
description: Display name of the sender, if known.
type: string
extensionList:
$ref: '#/components/schemas/extensionList'
firstName:
description: Party first name.
type: string
fspId:
description: Mojaloop scheme FSPID of the DFSP which owns the party account.
type: string
idSubValue:
$ref: '#/components/schemas/idSubValue'
idType:
$ref: '#/components/schemas/idType'
idValue:
description: The identifier string used to identify the sender.
type: string
lastName:
description: Party last name.
type: string
merchantClassificationCode:
description: Up to 4 digits specifying the sender's merchant classification, if known and applicable.
type: string
middleName:
description: Party middle name.
type: string
type:
$ref: '#/components/schemas/payerType'
supportedCurrencies:
type: array
description: Currencies in which the party can receive funds.
items:
$ref: '#/components/schemas/currency'
minItems: 0
maxItems: 16
kycInformation:
$ref: '#/components/schemas/KYCInformation'
required:
- idType
- idValue
type: object
transferRequest:
properties:
homeR2PTransactionId:
type: string
description: Linked homeR2PTransactionId which was generated as part of POST /requestToPay to SDK incase of requestToPay transfer.
amount:
$ref: '#/components/schemas/money'
amountType:
$ref: '#/components/schemas/amountType'
currency:
$ref: '#/components/schemas/currency'
from:
$ref: '#/components/schemas/transferParty'
ilpPacket:
properties:
data:
$ref: '#/components/schemas/ilpPacketData'
required:
- data
type: object
note:
maxLength: 128
type: string
quote:
$ref: '#/components/schemas/quoteResponse'
quoteRequestExtensions:
$ref: '#/components/schemas/extensionList'
subScenario:
$ref: '#/components/schemas/TransactionSubScenario'
to:
$ref: '#/components/schemas/transferParty'
transactionType:
$ref: '#/components/schemas/transactionType'
transferId:
$ref: '#/components/schemas/transferId'
transactionRequestId:
$ref: '#/components/schemas/transactionRequestId'
required:
- transferId
- quote
- from
- to
- amountType
- currency
- amount
- transactionType
- ilpPacket
type: object
transferResponse:
properties:
completedTimestamp:
$ref: '#/components/schemas/timestamp'
fulfilment:
$ref: '#/components/schemas/IlpF