Skip to main content

Python Library for Dapi API

Project description

dapi-python

A client library that talks to the Dapi API.

Quickstart

Configure Project

First install the library.

$ pip install dapi-python

Configure Library

  1. Create a Dapi client instance with your App Secret.
from dapi import DapiClient

client = DapiClient(app_secret="YOUR_APP_SECRET")
  1. Now you can access any of the functions of the products available on the DapiClient instance, client, (data for example) to call Dapi with your appSecret.
from dapi import DapiClient

client = DapiClient(app_secret="YOUR_APP_SECRET")
accounts_resp = client.data.getAccounts("YOUR_ACCESS_TOKEN", "YOUR_USER_SECRET")
  1. Or, you can use the handleSDKDapiRequests function from the DapiClient instance inside your endpoint. Our code will basically update the request to add your app's appSecret to it, and forward the request to Dapi, then return the result.
from dapi import DapiClient

client = DapiClient(app_secret="YOUR_APP_SECRET")

dapi_resp = client.handleSDKDapiRequests()  # inside your endpoint handler

Reference

!! Dapi API Disclaimer !!

Dapi's api request and response params are in camelCase, so while this library follows PEP8 standard and uses snake_case for all arguments, all responses will be in camelCase.

BaseResponse

All the responses have the fields described here. Meaning all the responses described below in the document will have following fields besides the ones specific to each response.

Parameter Type Description
operationID str Unique ID generated to identify a specific operation.
success bool Returns true if request is successful and false otherwise."
status str The status of the job.

done - Operation Completed.
failed - Operation Failed.
user_input_required - Pending User Input.
initialized - Operation In Progress.

For further explanation see Operation Statuses.
userInputs [dict] Array of UserInput objects, that are needed to complete this operation.

Specifies the type of further information required from the user before the job can be completed.

Note: It's only returned if operation status is user_input_required
type str Type of error encountered.

Note: It's only returned if operation status is failed
msg str Detailed description of the error.

Note: It's only returned if operation status is failed

UserInput Object

Parameter Type Description
id str Type of input required.

You can read more about user input types on User Input Types.
query str Textual description of what is required from the user side.
index int Is used in case more than one user input is requested.
Will always be 0 If only one input is requested.
answer str User input that must be submitted. In the response it will always be empty.

Methods

auth.exchangeToken

Method is used to obtain user's permanent access token by exchanging it with access code received during the user authentication (user login).

Note:

You can read more about how to obtain a permanent token on Obtain an Access Token.

Method Description
def exchangeToken(access_code, connection_id) -> dict
Input Parameters
Parameter Type Description
access_code
REQUIRED
str Unique code for a user’s successful login to Connect. Returned in the response of UserLogin.
connection_id
REQUIRED
str The connectionID from a user’s successful log in to Connect.
Response

In addition to the fields described in the BaseResponse, it has the following fields, which will only be returned if the status is done:

Parameter Type Description
accessToken str A unique permanent token linked to the user.

data.getIdentity

Method is used to retrieve personal details about the user.

Method Description
def getIdentity(access_token, user_secret, user_inputs=[], operation_id="") -> dict
Input Parameters
Parameter Type Description
access_token
REQUIRED
str Access Token obtained using the exchangeToken method.
user_secret
REQUIRED
str The userSecret from a user’s successful log in to Connect.
operation_id
OPTIONAL
str The operationID from a previous call's response.
Required only when resuming a previous call that responded with user_input_required status, to provided user inputs.
user_inputs
OPTIONAL
[dict] Array of UserInput objects, that are needed to complete this operation.
Required only if a previous call responded with user_input_required status.

You can read more about user inputs specification on Specify User Input
UserInput Object
Parameter Type Description
id str Type of input required.

You can read more about user input types on User Input Types.
index int Is used in case more than one user input is requested.
Will always be 0 If only one input is requested.
answer str User input that must be submitted.
Response

In addition to the fields described in the BaseResponse, it has the following fields, which will only be returned if the status is done:

Parameter Type Description
identity dict An object containing the identity data of the user.

For the exact schema of the identity object, see Identity schema.

data.getAccounts

Method is used to retrieve list of all the bank accounts registered on the user. The list will contain all types of bank accounts.

Method Description
def getAccounts(access_token, user_secret, user_inputs=[], operation_id="") -> dict
Input Parameters
Parameter Type Description
access_token
REQUIRED
str Access Token obtained using the exchangeToken method.
user_secret
REQUIRED
str The userSecret from a user’s successful log in to Connect.
operation_id
OPTIONAL
str The operationID from a previous call's response.
Required only when resuming a previous call that responded with user_input_required status, to provided user inputs.
user_inputs
OPTIONAL
[dict] Array of UserInput objects, that are needed to complete this operation.
Required only if a previous call responded with user_input_required status.

You can read more about user inputs specification on Specify User Input
UserInput Object
Parameter Type Description
id str Type of input required.

You can read more about user input types on User Input Types.
index int Is used in case more than one user input is requested.
Will always be 0 If only one input is requested.
answer str User input that must be submitted.
Response

In addition to the fields described in the BaseResponse, it has the following fields, which will only be returned if the status is done:

Parameter Type Description
accounts [dict] An array containing the accounts data of the user.

For the exact schema of the accounts array, see Account schema.

data.getBalance

Method is used to retrieve balance on specific bank account of the user.

Method Description
def getBalance(access_token, user_secret, account_id, user_inputs=[], operation_id="") -> dict
Input Parameters
Parameter Type Description
account_id
REQUIRED
str The bank account ID which its balance is requested.
Retrieved from one of the accounts returned from the GetAccounts method.
access_token
REQUIRED
str Access Token obtained using the exchangeToken method.
user_secret
REQUIRED
str The userSecret from a user’s successful log in to Connect.
operation_id
OPTIONAL
str The operationID from a previous call's response.
Required only when resuming a previous call that responded with user_input_required status, to provided user inputs.
user_inputs
OPTIONAL
[dict] Array of UserInput objects, that are needed to complete this operation.
Required only if a previous call responded with user_input_required status.

You can read more about user inputs specification on Specify User Input
UserInput Object
Parameter Type Description
id str Type of input required.

You can read more about user input types on User Input Types.
index int Is used in case more than one user input is requested.
Will always be 0 If only one input is requested.
answer str User input that must be submitted.
Response

In addition to the fields described in the BaseResponse, it has the following fields, which will only be valid if the status is done:

Parameter Type Description
balance dict An object containing the account's balance information.

For the exact schema of the balance object, see Balance schema.

data.getTransactions

Method is used to retrieve transactions that user has performed over a specific period of time from their bank account. The transaction list is unfiltered, meaning the response will contain all the transactions performed by the user (not just the transactions performed using your app).

Date range of the transactions that can be retrieved varies for each bank. The range supported by the users bank is shown in the response parameter transactionRange of Get Accounts Metadata endpoint.

Method Description
def getTransactions(access_token, user_secret, account_id, from_date, to_date, user_inputs=[], operation_id="") -> dict
Input Parameters
Parameter Type Description
account_id
REQUIRED
str The bank account ID which its transactions are requested.
Retrieved from one of the accounts returned from the getAccounts method.
from_date
REQUIRED
str The start date of the transactions wanted.
It should be in this format YYYY-MM-DD.
to_date
REQUIRED
str The end date of the transactions wanted.
It should be in this format YYYY-MM-DD.
access_token
REQUIRED
str Access Token obtained using the exchangeToken method.
user_secret
REQUIRED
str The userSecret from a user’s successful log in to Connect.
operation_id
OPTIONAL
str The operationID from a previous call's response.
Required only when resuming a previous call that responded with user_input_required status, to provided user inputs.
user_inputs
OPTIONAL
[dict] Array of UserInput objects, that are needed to complete this operation.
Required only if a previous call responded with user_input_required status.

You can read more about user inputs specification on Specify User Input
UserInput Object
Parameter Type Description
id str Type of input required.

You can read more about user input types on User Input Types.
index int Is used in case more than one user input is requested.
Will always be 0 If only one input is requested.
answer str User input that must be submitted.
Response

In addition to the fields described in the BaseResponse, it has the following fields, which will only be valid if the status is done:

Parameter Type Description
transactions [dict] Array containing the transactional data for the specified account within the specified period.

For the exact schema of the transactions array, see Transaction schema.

payment.getBeneficiaries

Method is used to retrieve list of all the beneficiaries already added for a user within a financial institution.

Method Description
def getBeneficiaries(access_token, user_secret, user_inputs=[], operation_id="") -> dict
Input Parameters
Parameter Type Description
access_token
REQUIRED
str Access Token obtained using the exchangeToken method.
user_secret
REQUIRED
str The userSecret from a user’s successful log in to Connect.
operation_id
OPTIONAL
str The operationID from a previous call's response.
Required only when resuming a previous call that responded with user_input_required status, to provided user inputs.
user_inputs
OPTIONAL
[dict] Array of UserInput objects, that are needed to complete this operation.
Required only if a previous call responded with user_input_required status.

You can read more about user inputs specification on Specify User Input
UserInput Object
Parameter Type Description
id str Type of input required.

You can read more about user input types on User Input Types.
index int Is used in case more than one user input is requested.
Will always be 0 If only one input is requested.
answer str User input that must be submitted.
Response

In addition to the fields described in the BaseResponse, it has the following fields, which will only be returned if the status is done:

Parameter Type Description
beneficiaries [dict] An array containing the beneficiary information.

For the exact schema of the beneficiaries array, see Beneficiary schema.

payment.createBeneficiary

Method is used to retrieve list of all the beneficiaries already added for a user within a financial institution.

Method Description
def createBeneficiary(access_token, user_secret, beneficiary_data, user_inputs=[], operation_id="") -> dict
Input Parameters
Parameter Type Description
beneficiary_data
REQUIRED
dict An object that contains info about the beneficiary that should be added.
access_token
REQUIRED
str Access Token obtained using the exchangeToken method.
user_secret
REQUIRED
str The userSecret from a user’s successful log in to Connect.
operation_id
OPTIONAL
str The operationID from a previous call's response.
Required only when resuming a previous call that responded with user_input_required status, to provided user inputs.
user_inputs
OPTIONAL
[dict] Array of UserInput objects, that are needed to complete this operation.
Required only if a previous call responded with user_input_required status.

You can read more about user inputs specification on Specify User Input
UserInput Object
Parameter Type Description
id str Type of input required.

You can read more about user input types on User Input Types.
index int Is used in case more than one user input is requested.
Will always be 0 If only one input is requested.
answer str User input that must be submitted.
beneficiary_data Object
Parameter Type Description
name
REQUIRED
str Name of the beneficiary.
accountNumber
REQUIRED
str Account number of the beneficiary.
iban
REQUIRED
str Beneficiary's IBAN number.
swiftCode
REQUIRED
str Beneficiary's financial institution's SWIFT code.
type
REQUIRED
str Type of beneficiary.
For further explanation see Beneficiary Types.
address
REQUIRED
dict An object containing the address information of the beneficiary.
country
REQUIRED
str Name of the country in all uppercase letters.
branchAddress
REQUIRED
str Address of the financial institution’s specific branch.
branchName
REQUIRED
str Name of the financial institution’s specific branch.
phoneNumber
OPTIONAL
str Beneficiary's phone number.
routingNumber
OPTIONAL
str Beneficiary's Routing number, needed only for US banks accounts.
address Object
Parameter Type Description
line1
REQUIRED
str Street name and number. Note: value should not contain any commas or special characters.
line2
REQUIRED
str City name. Note: value should not contain any commas or special characters.
line3
REQUIRED
str Country name. Note: value should not contain any commas or special characters.
Response

Method returns only the fields defined in the BaseResponse.


payment.createTransfer

Method is used to initiate a new payment from one account to another account.

Important

We suggest you use transferAutoflow method instead to initiate a payment. transferAutoflow abstracts all the validations and processing logic, required to initiate a transaction using createTransfer method.

You can read about transferAutoflow further in the document.

Method Description
def createTransfer(access_token, user_secret, transfer_data, user_inputs=[], operation_id="") -> dict
Input Parameters
Parameter Type Description
transfer_data
REQUIRED
dict An object that contains info about the transfer that should be initiated.
access_token
REQUIRED
str Access Token obtained using the exchangeToken method.
user_secret
REQUIRED
str The userSecret from a user’s successful log in to Connect.
operation_id
OPTIONAL
str The operationID from a previous call's response.
Required only when resuming a previous call that responded with user_input_required status, to provided user inputs.
user_inputs
OPTIONAL
[dict] Array of UserInput objects, that are needed to complete this operation.
Required only if a previous call responded with user_input_required status.

You can read more about user inputs specification on Specify User Input
UserInput Object
Parameter Type Description
id str Type of input required.

You can read more about user input types on User Input Types.
index int Is used in case more than one user input is requested.
Will always be 0 If only one input is requested.
answer str User input that must be submitted.
transfer_data Object
Parameter Type Description
senderID
REQUIRED
str The id of the account which the money should be sent from.
Retrieved from one of the accounts array returned from the getAccounts method.
amount
REQUIRED
float The amount of money which should be sent.
receiverID
OPTIONAL
str The id of the beneficiary which the money should be sent to.
Retrieved from one of the beneficiaries array returned from the getBeneficiaries method.
Needed only when creating a transfer from a bank that requires the receiver to be already registered as a beneficiary to perform a transaction.
name
OPTIONAL
str The name of receiver.
Needed only when creating a transfer from a bank that handles the creation of beneficiaries on its own, internally, and doesn't require the receiver to be already registered as a beneficiary to perform a transaction.
accountNumber
OPTIONAL
str The Account Number of the receiver's account.
Needed only when creating a transfer from a bank that handles the creation of beneficiaries on its own, internally, and doesn't require the receiver to be already registered as a beneficiary to perform a transaction.
iban
OPTIONAL
str The IBAN of the receiver's account.
Needed only when creating a transfer from a bank that handles the creation of beneficiaries on its own, internally, and doesn't require the receiver to be already registered as a beneficiary to perform a transaction.
Response

In addition to the fields described in the BaseResponse, it has the following fields, which will only be returned if the status is done:

Parameter Type Description
reference str Transaction reference string returned by the bank.

payment.transferAutoflow

Method is used to initiate a new payment from one account to another account, without having to care nor handle any special cases or scenarios.

Method Description
def transferAutoflow(access_token, user_secret, transfer_autoflow_data, user_inputs=[], operation_id="") -> dict
Input Parameters
Parameter Type Description
transfer_autoflow_data
REQUIRED
dict An object that contains info about the transfer that should be initiated, and any other details that's used to automate the operation.
access_token
REQUIRED
str Access Token obtained using the exchangeToken method.
user_secret
REQUIRED
str The userSecret from a user’s successful log in to Connect.
operation_id
OPTIONAL
str The operationID from a previous call's response.
Required only when resuming a previous call that responded with user_input_required status, to provided user inputs.
user_inputs
OPTIONAL
[dict] Array of UserInput objects, that are needed to complete this operation.
Required only if a previous call responded with user_input_required status.

You can read more about user inputs specification on Specify User Input
UserInput Object
Parameter Type Description
id str Type of input required.

You can read more about user input types on User Input Types.
index int Is used in case more than one user input is requested.
Will always be 0 If only one input is requested.
answer str User input that must be submitted.
transfer_autoflow_data Object
Parameter Type Description
senderID
REQUIRED
str The id of the account which the money should be sent from.
Retrieved from one of the accounts array returned from the getAccounts method.
amount
REQUIRED
float The amount of money which should be sent.
beneficiary
REQUIRED
dict An object that holds the info about the beneficiary which the money should be sent to.
bankID
REQUIRED
str The bankID of the user which is initiating this transfer.
beneficiary Object
Parameter Type Description
name
REQUIRED
str Name of the beneficiary.
accountNumber
REQUIRED
str Account number of the beneficiary.
iban
REQUIRED
str Beneficiary's IBAN number.
swiftCode
REQUIRED
str Beneficiary's financial institution's SWIFT code.
address
REQUIRED
dict An object containing the address information of the beneficiary.
country
REQUIRED
str Name of the country in all uppercase letters.
branchAddress
REQUIRED
str Address of the financial institution’s specific branch.
branchName
REQUIRED
str Name of the financial institution’s specific branch.
phoneNumber
OPTIONAL
str Beneficiary's phone number.
routingNumber
OPTIONAL
str Beneficiary's Routing number, needed only for US banks accounts.
address Object
Parameter Type Description
line1
REQUIRED
str Street name and number. Note: value should not contain any commas or special characters.
line2
REQUIRED
str City name. Note: value should not contain any commas or special characters.
line3
REQUIRED
str Country name. Note: value should not contain any commas or special characters.
Response

In addition to the fields described in the BaseResponse, it has the following fields, which will only be returned if the status is done:

Parameter Type Description
reference str Transaction reference string returned by the bank.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dapi-python-2.2.0.tar.gz (16.8 kB view hashes)

Uploaded Source

Built Distribution

dapi_python-2.2.0-py3-none-any.whl (16.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page