core-connector-lib
Version:
A connector that facilitates payments between a Mojaloop Connector (SDK Scheme Adapter) and a Core Banking system
1,458 lines (1,407 loc) • 97.5 kB
YAML
openapi: 3.0.1
info:
title: Mojaloop SDK Outbound Scheme Adapter API
description: >
Specification for the Mojaloop SDK Scheme Adapter Outbound Transfers API
This API can be used by DFSP backends to simplify the process of sending
funds to other parties within a Mojaloop scheme.
Please see other documentation on
https://github.com/mojaloop/sdk-scheme-adapter for more information.
**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: https://github.com/mojaloop/documentation/blob/main/LICENSE.md
version: 1.0.0
paths:
/:
get:
summary: Health check endpoint
description: >-
This endpoint allows a user of the SDK scheme adapter to check the
outbound transfers service is listening.
tags:
- Health
responses:
'200':
description: >-
Returns empty body if the scheme adapter outbound transfers service
is running.
/accounts:
post:
summary: Create accounts on the Account Lookup Service
description: >-
The HTTP request `POST /accounts` is used to create account information
on the Account Lookup Service (ALS) regarding the provided list of
identities.
Caller DFSP is used as the account source FSP information
tags:
- Accounts
requestBody:
description: Identities list request body
content:
application/json:
schema:
$ref: '#/components/schemas/accountsRequest'
required: true
responses:
'200':
$ref: '#/components/responses/accountsCreationCompleted'
'400':
$ref: '#/components/responses/accountsCreationError'
'500':
$ref: '#/components/responses/accountsCreationError'
'504':
$ref: '#/components/responses/accountsCreationTimeout'
/bulkQuotes:
post:
summary: Request bulk quotes for the provided financial transactions
description: >
The HTTP request `POST /bulkQuotes` is used to request a bulk quote to
fascilitate funds transfer from payer DFSP to payees' DFSP.
tags:
- BulkQuotes
requestBody:
description: Bulk quote request body
content:
application/json:
schema:
$ref: '#/components/schemas/bulkQuoteRequest'
required: true
responses:
'200':
$ref: '#/components/responses/bulkQuoteSuccess'
'400':
$ref: '#/components/responses/bulkQuoteBadRequest'
'500':
$ref: '#/components/responses/bulkQuoteServerError'
'504':
$ref: '#/components/responses/bulkQuoteTimeout'
/bulkQuotes/{bulkQuoteId}:
get:
summary: Retrieves information for a specific bulk quote
description: >-
The HTTP request `GET /bulkQuotes/{bulktQuoteId}` is used to get
information regarding a bulk quote created or requested earlier. The
`{bulkQuoteId}` in the URI should contain the `bulkQuoteId` that was
used for the creation of the bulk quote.
tags:
- BulkQuotes
parameters:
- $ref: '#/components/parameters/bulkQuoteId'
responses:
'200':
description: Bulk quote information successfully retrieved
content:
application/json:
schema:
$ref: '#/components/schemas/bulkQuoteStatusResponse'
'500':
description: An error occurred processing the bulk quote
content:
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
/bulkTransactions:
post:
summary: Sends money from one account to multiple accounts
description: >
The HTTP request `POST /bulkTransactions` is used to request the
movement of funds from payer DFSP to payees' DFSP.
tags:
- BulkTransactions
requestBody:
description: Bulk transfer request body
content:
application/json:
schema:
$ref: '#/components/schemas/bulkTransactionRequest'
required: true
responses:
'202':
$ref: '#/components/responses/bulkTransactionAccepted'
'400':
$ref: '#/components/responses/bulkTransferBadRequest'
'500':
$ref: '#/components/responses/errorResponse'
/bulkTransactions/{bulkTransactionId}:
put:
summary: Amends the bulk transaction request
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.
tags:
- BulkTransactions
parameters:
- $ref: '#/components/parameters/bulkTransactionId'
requestBody:
description: Bulk transaction request body
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/bulkTransactionContinuationAcceptParty'
- $ref: '#/components/schemas/bulkTransactionContinuationAcceptQuote'
required: true
responses:
'202':
description: Bulk transaction information successfully amended
'400':
$ref: '#/components/responses/bulkTransactionPutBadRequest'
'500':
description: An error occurred processing the bulk transaction
content:
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
/bulkTransfers:
post:
summary: Sends money from one account to multiple accounts
description: >
The HTTP request `POST /bulkTransfers` is used to request the movement
of funds from payer DFSP to payees' DFSP.
tags:
- BulkTransfers
requestBody:
description: Bulk transfer request body
content:
application/json:
schema:
$ref: '#/components/schemas/bulkTransferRequest'
required: true
responses:
'200':
$ref: '#/components/responses/bulkTransferSuccess'
'400':
$ref: '#/components/responses/bulkTransferBadRequest'
'500':
$ref: '#/components/responses/errorResponse'
/bulkTransfers/{bulkTransferId}:
get:
summary: Retrieves information for a specific bulk transfer
description: >-
The HTTP request `GET /bulkTransfers/{bulkTransferId}` is used to get
information regarding a bulk transfer created or requested earlier. The
`{bulkTransferId}` in the URI should contain the `bulkTransferId` that
was used for the creation of the bulk transfer.
tags:
- BulkTransfers
parameters:
- $ref: '#/components/parameters/bulkTransferId'
responses:
'200':
description: Bulk transfer information successfully retrieved
content:
application/json:
schema:
$ref: '#/components/schemas/bulkTransferStatusResponse'
'500':
description: An error occurred processing the bulk transfer
content:
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
/parties/{Type}/{ID}:
parameters:
- $ref: '#/components/parameters/Type'
- $ref: '#/components/parameters/ID'
get:
description: >-
The HTTP request GET /parties// (or GET /parties///) is used to lookup
information regarding the requested Party, defined by , and optionally
(for example, GET /parties/MSISDN/123456789, or GET
/parties/BUSINESS/shoecompany/employee1).
summary: PartiesByTypeAndID
tags:
- parties
operationId: PartiesByTypeAndID
responses:
'200':
$ref: '#/components/responses/partiesByIdSuccess'
'404':
$ref: '#/components/responses/partiesByIdError404'
/parties/{Type}/{ID}/{SubId}:
parameters:
- $ref: '#/components/parameters/Type'
- $ref: '#/components/parameters/ID'
- $ref: '#/components/parameters/SubId'
get:
description: >-
The HTTP request GET /parties// (or GET /parties///) is used to lookup
information regarding the requested Party, defined by , and optionally
(for example, GET /parties/MSISDN/123456789, or GET
/parties/BUSINESS/shoecompany/employee1).
summary: PartiesSubIdByTypeAndID
tags:
- parties
operationId: PartiesSubIdByTypeAndID
responses:
'200':
$ref: '#/components/responses/partiesByIdSuccess'
'404':
$ref: '#/components/responses/partiesByIdError404'
/quotes:
post:
summary: Quotes endpoint
description: is used to request quotes from other DFSP
tags:
- quotes
operationId: QuotesPost
requestBody:
description: Quotes request payload
content:
application/json:
schema:
$ref: '#/components/schemas/simpleQuotesPostRequest'
required: true
responses:
'200':
$ref: '#/components/responses/quotesPostSuccess'
'500':
$ref: '#/components/responses/quotesServerError'
/requestToPay:
post:
summary: Receiver requesting funds from Sender
description: >
The HTTP request `POST /requestToPay` is used to support Pull Funds
pattern where in a receiver can request for funds from the Sender.
The underlying API has two stages:
1. Party lookup. This facilitates a check by the sending party that the destination party is correct before proceeding with a money movement.
2. Transaction Request. This request enables a Payee to request Payer to send electronic funds to the Payee.
tags:
- RequestToPay
requestBody:
description: RequestToPay request body
content:
application/json:
schema:
$ref: '#/components/schemas/requestToPayRequest'
required: true
responses:
'200':
$ref: '#/components/responses/requestToPaySuccess'
/requestToPay/{transactionRequestId}:
put:
summary: >-
Continues a request funds from sender that has paused at the party
resolution stage in order to accept or reject party information
description: >
The HTTP request `PUT /requestToPay/{transactionRequestId}` is used to
continue a transfer initiated via the `POST /requestToPay` method that
has halted after party lookup stage.
The request body should contain the "acceptParty" property set to `true`
as required to continue the transfer.
See the description of the `POST /requestToPay` HTTP method for more
information on modes of transfer.
tags:
- RequestToPay
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/transferContinuationAcceptParty'
parameters:
- $ref: '#/components/parameters/transactionRequestId'
responses:
'200':
$ref: '#/components/responses/requestToPaySuccess'
'500':
$ref: '#/components/responses/transferServerError'
'504':
$ref: '#/components/responses/transferTimeout'
/requestToPayTransfer:
post:
summary: >-
Used to trigger funds from customer fsp account to merchant fsp account.
This is a follow-up request to requestToPay.
description: >
The HTTP request `POST /requestToPayTransfer` is used to request the
movement of funds from payer DFSP to payee DFSP.
The underlying Mojaloop API has three stages for money transfer:
1. Quotation. This facilitates the exchange of fee information and the construction of a cryptographic "contract" between payee and payer DFSPs before funds are transferred.
2. Authorization. This facilitates getting OTP from payee DFSP.
3. Transfer. The enactment of the previously agreed "contract"
This method has several modes of operation.
- If the configuration variable `AUTO_ACCEPT_QUOTES` is set to `"false"`
this method will terminate and return the quotation when it has been
received from the payee DFSP.
If the payee wished to proceed with the otp, then a subsequent `PUT /transfers/{transferId}` request (accepting the quote) is required to continue the operation.
The scheme adapter will then proceed with the transfer state.
- If the configuration variable `AUTO_ACCEPT_OTP` is set to `"false"`
this method will terminate and return the otp when it has been received
from the payee DFSP.
If the payer wished to proceed with the transfer, then a subsequent `PUT /transfers/{transferId}` request (accepting the quote) is required to continue the operation.
The scheme adapter will then proceed with the transfer state.
If the configuration variables `AUTO_ACCEPT_PARTIES` and
`AUTO_ACCEPT_QUOTES` are both set to `"true"` this method will block
until all three transfer stages are complete. Upon completion it will
return the entire set of transfer details received during the operation.
Combinations of settings for `AUTO_ACCEPT...` configuration variables
allow the scheme adapter user to decide which mode of operation best
suits their use cases. i.e. the scheme adapter can be configured to
"break" the three stage transfer at these points in order to execute
backend logic such as party verification, quoted fees assessments etc...
tags:
- RequestToPayTransfer
requestBody:
description: Request To Pay Transfer request body
content:
application/json:
schema:
$ref: '#/components/schemas/requestToPayTransferRequest'
required: true
responses:
'200':
$ref: '#/components/responses/requestToPayTransferSuccess'
'400':
$ref: '#/components/responses/requestToPayTransferBadRequest'
'500':
$ref: '#/components/responses/transferServerError'
'504':
$ref: '#/components/responses/transferTimeout'
/requestToPayTransfer/{transactionRequestId}:
put:
summary: >-
Continues a transfer that has paused at the otp stage in order to accept
or reject quote
description: >
This request is used to continue a requestToPayTransfer initiated via
the `POST /requestToPayTransfer` method that has halted after quotation
stage and/or otp stage.
The request body should contain either the "acceptOTP" or "acceptQuote"
property set to `true` as required to continue the transfer.
See the description of the `POST /requestToPayTransfer` HTTP method for
more information on modes of transfer.
tags:
- RequestToPayTransferID
requestBody:
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/transferContinuationAcceptQuote'
- $ref: '#/components/schemas/transferContinuationAcceptOTP'
parameters:
- $ref: '#/components/parameters/transactionRequestId'
responses:
'200':
$ref: '#/components/responses/transferSuccess'
'500':
$ref: '#/components/responses/transferServerError'
'504':
$ref: '#/components/responses/transferTimeout'
/simpleTransfers:
post:
summary: Simple Transfers endpoint
description: is used to request a transfer
tags:
- transfers
operationId: SimpleTransfersPost
requestBody:
description: Simple Transfer request payload
content:
application/json:
schema:
$ref: '#/components/schemas/simpleTransfersPostRequest'
required: true
responses:
'200':
$ref: '#/components/responses/simpleTransfersPostSuccess'
'500':
$ref: '#/components/responses/simpleTransfersServerError'
/transfers:
post:
summary: Sends money from one account to another
description: >
The HTTP request `POST /transfers` is used to request the movement of
funds from payer DFSP to payee DFSP.
The underlying Mojaloop API has three stages for money transfer:
1. Party lookup. This facilitates a check by the sending party that the destination party is correct before proceeding with a money movement.
2. Quotation. This facilitates the exchange of fee information and the construction of a cryptographic "contract" between payee and payer DFSPs before funds are transferred.
3. Transfer. The enactment of the previously agreed "contract"
This method has several modes of operation.
- If the configuration variables `AUTO_ACCEPT_PARTIES` is set to
`"false"` this method will terminate when the payee party has been
resolved and return the payee party details.
If the payee wishes to proceed with the transfer, then a subsequent `PUT /transfers/{transferId}` request (accepting the payee party) is required to continue the operation.
The scheme adapter will then proceed with quotation stage...
- If the configuration variable `AUTO_ACCEPT_QUOTES` is set to `"false"`
this method will terminate and return the quotation when it has been
received from the payee DFSP.
If the payee wished to proceed with the transfer, then a subsequent `PUT /transfers/{transferId}` request (accepting the quote) is required to continue the operation.
The scheme adapter will then proceed with the transfer state.
If the configuration variables `AUTO_ACCEPT_PARTIES` and
`AUTO_ACCEPT_QUOTES` are both set to `"true"` this method will block
until all three transfer stages are complete. Upon completion it will
return the entire set of transfer details received during the operation.
Combinations of settings for `AUTO_ACCEPT...` configuration variables
allow the scheme adapter user to decide which mode of operation best
suits their use cases. i.e. the scheme adapter can be configured to
"break" the three stage transfer at these points in order to execute
backend logic such as party verification, quoted fees assessments etc...
tags:
- Transfers
requestBody:
description: Transfer request body
content:
application/json:
schema:
$ref: '#/components/schemas/transferRequest'
required: true
responses:
'200':
$ref: '#/components/responses/transferSuccess'
'400':
$ref: '#/components/responses/transferBadRequest'
'500':
$ref: '#/components/responses/transferServerError'
'504':
$ref: '#/components/responses/transferTimeout'
/transfers/{transferId}:
put:
summary: >-
Continues a transfer that has paused at the quote stage in order to
accept or reject payee party and/or quote
description: >
The HTTP request `PUT /transfers/{transferId}` is used to continue a
transfer initiated via the `POST /transfers` method that has halted
after party lookup and/or quotation stage.
The request body should contain either the "acceptParty" or
"acceptQuote" property set to `true` as required to continue the
transfer.
See the description of the `POST /transfers` HTTP method for more
information on modes of transfer.
tags:
- Transfers
requestBody:
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/transferContinuationAcceptParty'
- $ref: '#/components/schemas/transferContinuationAcceptQuote'
parameters:
- $ref: '#/components/parameters/transferId'
responses:
'200':
$ref: '#/components/responses/transferSuccess'
'500':
$ref: '#/components/responses/transferServerError'
'504':
$ref: '#/components/responses/transferTimeout'
get:
summary: Retrieves information for a specific transfer
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.
tags:
- Transfers
parameters:
- $ref: '#/components/parameters/transferId'
responses:
'200':
description: Transfer information successfully retrieved
content:
application/json:
schema:
$ref: '#/components/schemas/transferStatusResponse'
'500':
description: An error occurred processing the transfer
content:
application/json:
schema:
$ref: '#/components/schemas/errorResponse'
components:
schemas:
PartyIdType:
title: PartyIdType
type: string
enum:
- MSISDN
- EMAIL
- PERSONAL_ID
- BUSINESS
- DEVICE
- ACCOUNT_ID
- IBAN
- ALIAS
description: >-
Below are the allowed values for the enumeration.
- MSISDN - An MSISDN (Mobile Station International Subscriber Directory
Number, that is, the phone number) is used as reference to a
participant. The MSISDN identifier should be in international format
according to the [ITU-T E.164
standard](https://www.itu.int/rec/T-REC-E.164/en). Optionally, the
MSISDN may be prefixed by a single plus sign, indicating the
international prefix.
- EMAIL - An email is used as reference to a participant. The format of
the email should be according to the informational [RFC
3696](https://tools.ietf.org/html/rfc3696).
- PERSONAL_ID - A personal identifier is used as reference to a
participant. Examples of personal identification are passport number,
birth certificate number, and national registration number. The
identifier number is added in the PartyIdentifier element. The personal
identifier type is added in the PartySubIdOrType element.
- BUSINESS - A specific Business (for example, an organization or a
company) is used as reference to a participant. The BUSINESS identifier
can be in any format. To make a transaction connected to a specific
username or bill number in a Business, the PartySubIdOrType element
should be used.
- DEVICE - A specific device (for example, a POS or ATM) ID connected to
a specific business or organization is used as reference to a Party. For
referencing a specific device under a specific business or organization,
use the PartySubIdOrType element.
- ACCOUNT_ID - A bank account number or FSP account ID should be used as
reference to a participant. The ACCOUNT_ID identifier can be in any
format, as formats can greatly differ depending on country and FSP.
- IBAN - A bank account number or FSP account ID is used as reference to
a participant. The IBAN identifier can consist of up to 34 alphanumeric
characters and should be entered without whitespace.
- ALIAS An alias is used as reference to a participant. The alias should
be created in the FSP as an alternative reference to an account owner.
Another example of an alias is a username in the FSP system. The ALIAS
identifier can be in any format. It is also possible to use the
PartySubIdOrType element for identifying an account under an Alias
defined by the PartyIdentifier.
PartyIdentifier:
title: PartyIdentifier
type: string
minLength: 1
maxLength: 128
description: Identifier of the Party.
example: '16135551212'
PartySubIdOrType:
title: PartySubIdOrType
type: string
minLength: 1
maxLength: 128
description: >-
Either a sub-identifier of a PartyIdentifier, or a sub-type of the
PartyIdType, normally a PersonalIdentifierType.
Currency:
title: Currency
description: >-
The currency codes defined in [ISO
4217](https://www.iso.org/iso-4217-currency-codes.html) as three-letter
alphabetic codes are used as the standard naming representation for
currencies.
type: string
minLength: 3
maxLength: 3
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
accountsRequest:
type: array
items:
type: object
required:
- idType
- idValue
- currency
properties:
idType:
$ref: '#/components/schemas/PartyIdType'
idValue:
$ref: '#/components/schemas/PartyIdentifier'
idSubValue:
$ref: '#/components/schemas/PartySubIdOrType'
currency:
$ref: '#/components/schemas/Currency'
CorrelationId:
title: CorrelationId
type: string
pattern: >-
^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
description: >-
Identifier that correlates all messages of the same sequence. The API
data type UUID (Universally Unique Identifier) is a JSON String in
canonical format, conforming to [RFC
4122](https://tools.ietf.org/html/rfc4122), that is restricted by a
regular expression for interoperability reasons. A UUID is always 36
characters long, 32 hexadecimal symbols and 4 dashes (‘-‘).
example: b51ec534-ee48-4575-b6a9-ead2955b8069
errorResponse:
type: object
properties:
statusCode:
type: string
description: Error code as string.
message:
type: string
description: Error message text.
accountCreationStatus:
type: array
items:
type: object
required:
- idType
- idValue
properties:
idType:
$ref: '#/components/schemas/PartyIdType'
idValue:
$ref: '#/components/schemas/PartyIdentifier'
idSubValue:
$ref: '#/components/schemas/PartySubIdOrType'
error:
$ref: '#/components/schemas/errorResponse'
accountsCreationState:
type: string
enum:
- ERROR_OCCURRED
- COMPLETED
ErrorCode:
title: ErrorCode
type: string
pattern: ^[1-9]\d{3}$
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) represent the specific error.
example: '5100'
ErrorDescription:
title: ErrorDescription
type: string
minLength: 1
maxLength: 128
description: Error description string.
ExtensionKey:
title: ExtensionKey
type: string
minLength: 1
maxLength: 32
description: Extension key.
ExtensionValue:
title: ExtensionValue
type: string
minLength: 1
maxLength: 128
description: Extension value.
Extension:
title: Extension
type: object
description: Data model for the complex type Extension.
properties:
key:
$ref: '#/components/schemas/ExtensionKey'
value:
$ref: '#/components/schemas/ExtensionValue'
required:
- key
- value
ExtensionList:
title: ExtensionList
type: object
description: >-
Data model for the complex type ExtensionList. An optional list of
extensions, specific to deployment.
properties:
extension:
type: array
items:
$ref: '#/components/schemas/Extension'
minItems: 1
maxItems: 16
description: Number of Extension elements.
required:
- extension
ErrorInformation:
title: ErrorInformation
type: object
description: Data model for the complex type ErrorInformation.
properties:
errorCode:
$ref: '#/components/schemas/ErrorCode'
errorDescription:
$ref: '#/components/schemas/ErrorDescription'
extensionList:
$ref: '#/components/schemas/ExtensionList'
required:
- errorCode
- errorDescription
mojaloopError:
type: object
properties:
errorInformation:
$ref: '#/components/schemas/ErrorInformation'
transferError:
type: object
description: >-
This may be a Mojaloop API error returned from another entity in the
scheme or an object representing other types of error e.g. exceptions
that may occur inside the scheme adapter.
properties:
httpStatusCode:
type: integer
description: >-
The HTTP status code returned to the caller. This is the same as the
actual HTTP status code returned with the response.
mojaloopError:
$ref: '#/components/schemas/mojaloopError'
accountsResponse:
type: object
required:
- accounts
properties:
modelId:
$ref: '#/components/schemas/CorrelationId'
accounts:
$ref: '#/components/schemas/accountsRequest'
response:
$ref: '#/components/schemas/accountCreationStatus'
currentState:
$ref: '#/components/schemas/accountsCreationState'
lastError:
$ref: '#/components/schemas/transferError'
postAccountsResponse:
type: object
required:
- body
properties:
body:
type: object
headers:
type: object
errorAccountsResponse:
allOf:
- $ref: '#/components/schemas/errorResponse'
- type: object
required:
- executionState
properties:
executionState:
$ref: '#/components/schemas/accountsResponse'
TransactionInitiatorType:
title: TransactionInitiatorType
type: string
enum:
- CONSUMER
- AGENT
- BUSINESS
- DEVICE
description: |-
Below are the allowed values for the enumeration.
- CONSUMER - Consumer is the initiator of the transaction.
- AGENT - Agent is the initiator of the transaction.
- BUSINESS - Business is the initiator of the transaction.
- DEVICE - Device is the initiator of the transaction.
example: CONSUMER
Name:
title: Name
type: string
pattern: ^(?!\s*$)[\w .,'-]{1,128}$
description: >-
The API data type Name is a JSON String, restricted by a regular
expression to avoid characters which are generally not used in a name.
Regular Expression - The regular expression for restricting the Name
type is "^(?!\s*$)[\w .,'-]{1,128}$". The restriction does not allow a
string consisting of whitespace only, all Unicode characters are
allowed, as well as the period (.) (apostrophe (‘), dash (-), comma (,)
and space characters ( ).
**Note:** In some programming languages, Unicode support must be
specifically enabled. For example, if Java is used, the flag
UNICODE_CHARACTER_CLASS must be enabled to allow Unicode characters.
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
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
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
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'
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.
FspId:
title: FspId
type: string
minLength: 1
maxLength: 32
description: FSP identifier.
extensionListEmptiable:
type: array
items:
$ref: '#/components/schemas/Extension'
minItems: 0
maxItems: 16
transferParty:
type: object
required:
- idType
- idValue
properties:
type:
$ref: '#/components/schemas/TransactionInitiatorType'
idType:
$ref: '#/components/schemas/PartyIdType'
idValue:
$ref: '#/components/schemas/PartyIdentifier'
idSubValue:
$ref: '#/components/schemas/PartySubIdOrType'
displayName:
$ref: '#/components/schemas/Name'
firstName:
$ref: '#/components/schemas/FirstName'
middleName:
$ref: '#/components/schemas/MiddleName'
lastName:
$ref: '#/components/schemas/LastName'
dateOfBirth:
$ref: '#/components/schemas/DateOfBirth'
merchantClassificationCode:
$ref: '#/components/schemas/MerchantClassificationCode'
fspId:
$ref: '#/components/schemas/FspId'
extensionList:
$ref: '#/components/schemas/extensionListEmptiable'
AmountType:
title: AmountType
type: string
enum:
- SEND
- RECEIVE
description: >-
Below are the allowed values for the enumeration AmountType.
- SEND - Amount the Payer would like to send, that is, the amount that
should be withdrawn from the Payer account including any fees.
- RECEIVE - Amount the Payer would like the Payee to receive, that is,
the amount that should be sent to the receiver exclusive of any fees.
example: RECEIVE
Amount:
title: Amount
type: string
pattern: ^([0]|([1-9][0-9]{0,17}))([.][0-9]{0,3}[1-9])?$
description: >-
The API data type Amount is a JSON String in a canonical format that is
restricted by a regular expression for interoperability reasons. This
pattern does not allow any trailing zeroes at all, but allows an amount
without a minor currency unit. It also only allows four digits in the
minor currency unit; a negative value is not allowed. Using more than 18
digits in the major currency unit is not allowed.
example: '123.45'
transferTransactionType:
title: transferTransactionType
type: string
enum:
- TRANSFER
description: Type of transaction.
TransactionSubScenario:
title: TransactionSubScenario
type: string
pattern: ^[A-Z_]{1,32}$
description: >-
Possible sub-scenario, defined locally within the scheme (UndefinedEnum
Type).
example: LOCALLY_DEFINED_SUBSCENARIO
Note:
title: Note
type: string
minLength: 1
maxLength: 128
description: Memo assigned to transaction.
example: Note sent to Payee.
individualQuote:
title: IndividualQuote
type: object
description: Data model for the complex type 'individualQuote'.
properties:
quoteId:
$ref: '#/components/schemas/CorrelationId'
to:
$ref: '#/components/schemas/transferParty'
amountType:
$ref: '#/components/schemas/AmountType'
currency:
$ref: '#/components/schemas/Currency'
amount:
$ref: '#/components/schemas/Amount'
transactionType:
$ref: '#/components/schemas/transferTransactionType'
subScenario:
$ref: '#/components/schemas/TransactionSubScenario'
note:
$ref: '#/components/schemas/Note'
extensions:
$ref: '#/components/schemas/ExtensionList'
required:
- quoteId
- to
- amountType
- currency
- transactionType
- amount
bulkQuoteRequest:
type: object
required:
- homeTransactionId
- from
- individualQuotes
properties:
homeTransactionId:
type: string
description: >-
Transaction ID from the DFSP backend, used to reconcile transactions
between the Switch and DFSP backend systems.
bulkQuoteId:
$ref: '#/components/schemas/CorrelationId'
from:
$ref: '#/components/schemas/transferParty'
individualQuotes:
description: List of individual quotes in a bulk quote.
type: array
minItems: 1
maxItems: 1000
items:
$ref: '#/components/schemas/individualQuote'
extensions:
$ref: '#/components/schemas/ExtensionList'
DateTime:
title: DateTime
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)T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:(\.\d{3}))(?:Z|[+-][01]\d:[0-5]\d)$
description: >-
The API data type DateTime is a JSON String in a lexical format that is
restricted by a regular expression for interoperability reasons. The
format is according to [ISO
8601](https://www.iso.org/iso-8601-date-and-time-format.html), expressed
in a combined date, time and time zone format. A more readable version
of the format is yyyy-MM-ddTHH:mm:ss.SSS[-HH:MM]. Examples are
"2016-05-24T08:38:08.699-04:00", "2016-05-24T08:38:08.699Z" (where Z
indicates Zulu time zone, same as UTC).
example: '2016-05-24T08:38:08.699-04:00'
bulkTransferStatus:
type: string
enum:
- ERROR_OCCURRED
- COMPLETED
Money:
title: Money
type: object
description: Data model for the complex type Money.
properties:
currency:
$ref: '#/components/schemas/Currency'
amount:
$ref: '#/components/schemas/Amount'
required:
- currency
- amount
Latitude:
title: Latitude
type: string
pattern: >-
^(\+|-)?(?:90(?:(?:\.0{1,6})?)|(?:[0-9]|[1-8][0-9])(?:(?:\.[0-9]{1,6})?))$
description: >-
The API data type Latitude is a JSON String in a lexical format that is
restricted by a regular expression for interoperability reasons.
example: '+45.4215'
Longitude:
title: Longitude
type: string
pattern: >-
^(\+|-)?(?:180(?:(?:\.0{1,6})?)|(?:[0-9]|[1-9][0-9]|1[0-7][0-9])(?:(?:\.[0-9]{1,6})?))$
description: >-
The API data type Longitude is a JSON String in a lexical format that is
restricted by a regular expression for interoperability reasons.
example: '+75.6972'
GeoCode:
title: GeoCode
type: object
description: >-
Data model for the complex type GeoCode. Indicates the geographic
location from where the transaction was initiated.
properties:
latitude:
$ref: '#/components/schemas/Latitude'
longitude:
$ref: '#/components/schemas/Longitude'
required:
- latitude
- longitude
IlpPacket:
title: IlpPacket
type: string
pattern: ^[A-Za-z0-9-_]+[=]{0,2}$
minLength: 1
maxLength: 32768
description: Information for recipient (transport layer information).
example: >-
AYIBgQAAAAAAAASwNGxldmVsb25lLmRmc3AxLm1lci45T2RTOF81MDdqUUZERmZlakgyOVc4bXFmNEpLMHlGTFGCAUBQU0svMS4wCk5vbmNlOiB1SXlweUYzY3pYSXBFdzVVc05TYWh3CkVuY3J5cHRpb246IG5vbmUKUGF5bWVudC1JZDogMTMyMzZhM2ItOGZhOC00MTYzLTg0NDctNGMzZWQzZGE5OGE3CgpDb250ZW50LUxlbmd0aDogMTM1CkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbgpTZW5kZXItSWRlbnRpZmllcjogOTI4MDYzOTEKCiJ7XCJmZWVcIjowLFwidHJhbnNmZXJDb2RlXCI6XCJpbnZvaWNlXCIsXCJkZWJpdE5hbWVcIjpcImFsaWNlIGNvb3BlclwiLFwiY3JlZGl0TmFtZVwiOlwibWVyIGNoYW50XCIsXCJkZWJpdElkZW50aWZpZXJcIjpcIjkyODA2MzkxXCJ9IgA
IlpCondition:
title: IlpCondition
type: string
pattern: ^[A-Za-z0-9-_]{43}$
maxLength: 48
description: Condition that must be attached to the transfer by the Payer.
quoteError:
type: object
description: >-
This object represents a Mojaloop API error received at any time during
the quote process
properties:
httpStatusCode:
type: integer
description: >-
The HTTP status code returned to the caller. This is the same as the
actual HTTP status code returned with the response.
mojaloopError:
$ref: '#/components/schemas/mojaloopError'
individualQuoteResult:
type: object
properties:
quoteId:
$ref: '#/components/schemas/CorrelationId'
transferAmount:
$ref: '#/components/schemas/Money'
payeeReceiveAmount:
$ref: '#/components/schemas/Money'
payeeFspFee:
$ref: '#/components/schemas/Money'
payeeFspCommission:
$ref: '#/components/schemas/Money'
geoCode:
$ref: '#/components/schemas/GeoCode'
ilpPacket:
$ref: '#/components/schemas/IlpPacket'
condition:
$ref: '#/components/schemas/IlpCondition'
extensionList:
$ref: '#/components/schemas/ExtensionList'
lastError:
$ref: '#/components/schemas/quoteError'
required:
- quoteId
bulkQuoteResponse:
type: object
required:
- bulkQuoteId
- individualQuoteResults
- currentState
- expiration
properties:
bulkQuoteId:
$ref: '#/components/schemas/CorrelationId'
homeTransactionId:
type: string
description: >-
Transaction ID from the DFSP backend, used to reconcile transactions
between the Switch and DFSP backend systems.
expiration:
$ref: '#/components/schemas/DateTime'
extensionList:
$ref: '#/components/schemas/ExtensionList'
currentState:
$ref: '#/components/schemas/bulkTransferStatus'
individualQuoteResults:
type: array
maxItems: 1000
items:
$ref: '#/components/schemas/individualQuoteResult'
description: List of individualQuoteResults in a bulk transfer response.
bulkQuoteErrorResponse:
allOf:
- $ref: '#/components/schemas/errorResponse'
- type: object
required:
- bulkQuoteState
properties:
bulkQuoteState:
$ref: '#/components/schemas/bulkQuoteResponse'
bulkQuoteStatus:
type: string
enum:
- ERROR_OCCURRED
- COMPLETED
bulkQuoteStatusResponse:
type: object
required:
- bulkQuoteId
- currentState
- individualQuotes
properties:
bulkQuoteId:
$ref: '#/components/schemas/CorrelationId'
currentState:
$ref: '#/components/schemas/bulkQuoteStatus'
individualQuotes:
type: array
minItems: 1
maxItems: 1000
items:
$ref: '#/components/schemas/individualQuote'
autoAcceptPartyOption:
type: object
required:
- enabled
properties:
enabled:
type: boolean
enum:
- false
- true
bulkPerTransferFeeLimit:
type: object
required:
- currency
- amount
properties:
currency:
$ref: '#/components/schemas/Currency'
amount:
$ref: '#/components/schemas/Amount'
autoAcceptQuote:
type: object
required:
- enabled
properties:
enabled:
type: boolean
enum:
- true
- false
perTransferFeeLimits:
type: array
minItems: 0
items:
$ref: '#/components/schemas/bulkPerTransferFeeLimit'
bulkTransactionOptions:
type: object
required:
- autoAcceptParty
- autoAcceptQuote
- bulkExpiration
properties:
onlyValidateParty:
description: >-
Set to true if only party validation is required. This means the
quotes and transfers will not run. This is useful for only party
resolution.
type: boolean
autoAcceptParty:
$ref: '#/components/schemas/autoAcceptPartyOption'
autoAcceptQuote:
description: >-
Set to true if the quote response is accepted without confirmation
from the payer. The fees applied by the payee will be acceptable to
the payer abiding by the limits set by optional
'perTransferFeeLimits' array.
type: object
oneOf:
- $ref: '#/components/schemas/autoAcceptQuote'
skipPartyLookup:
description: >-
Set to true if supplying an FSPID for the payee party and no party
resolution is needed. This may be useful if a previous party
resolution has been performed.
type: boolean
synchronous:
description: >-
Set to true if the bulkTransfer requests need be handled