Core Mobile SDKs

Here you'll get to know the core SDKs of Brick provides you, thereby helping you build fantastic fintech products.

What is core SDK?

Core SDK is a powerful tool through which you can customize the UI of SDKs while connecting your Mobile application with Brick.

Demo Project

We have created a sample demo to understand SDK faster, Please check out the below links for demos.

https://gitlab.com/brick-app/android-demo
https://gitlab.com/brick-app/ios-demo

Sample Application

Still confused? You can install the sample application to understand the flow better.

http://brick-android-demo-staging.s3.amazonaws.com/apk/app-debug.apk
Please share your device UUID at [email protected]. You will send customized application for your mobile.

Steps to integrate

We have written a step-by-step guide to help you integrate your app using core SDKs. We have used both Kotlin and Swift languages to showcase the process, These steps allow you to link Financial Institution accounts through Brick's API using our Core SDK.

Before writing code using the SDK, you must first perform some setup steps to register your app with Brick and configure your project. If you haven't yet generated your Sandbox API Keys- Sign Up Now!

Requirements

The Brick Mobile SDK is compatible with apps supporting iOS 10/ Android 8 and above, and can be installed with CocoaPods or Swift Package Manager, Gradle or by manually integrating the framework.

Android

Android 5.0 (API level 21) and above
Android Gradle Plugin 3.5.1
Gradle 5.4.1+
AndroidX (as of v11.0.0)
iOS 9.0
Cococapods 1.10.0

Update your project plugins

As a second step after adding plugin settings, Please update your project plugin by giving the below line of code.

buildscript {
    repositories {
        maven { url 'https://jitpack.io' }
        google()  // Google's Maven repository
        mavenCentral() // Include to import Brick Android SDK
    }
    dependencies {
        // ...
    }
}
pod 'BrickSDK', '~> 1.0'

In your root-level (project-level) Gradle/Podile file (build.gradle), add rules to include the Gradle plugin/Cocoapods

Add Brick Project

As a third step, Please add the below settings in the project configuration

android {
  defaultConfig {
    minSdkVersion 21 // or greater
  }
  // Enable Java 8 support for Brick Android SDK to work
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}
dependencies {
  // ...
    implementation "io.onebrick.sdk:bricksdk:1.0.53"
}
pod 'BrickSDK', '~> 1.0'

Opening SDK

Please enable the internet, Network state, and phone state to use the Brick core SDK.

import io.onebrick.sdk.*
import io.onebrick.sdk.util.Environment
import io.onebrick.sdk.*
import io.onebrick.sdk.util.Environment
import BrickSDK

Then initialized SDK with trigger eg button etc

private val clientId = "xxx"
   private val clientSecret = "xxx"
   private val name = "xxx"
   private val url = "xxx"
  
  CoreBrickSDK.initializedSDK( applicationContext,
                                 clientId,
                                 clientSecret,
                                 name, url,
                                 Environment.SANDBOX)
private val clientId = "xxx"
   private val clientSecret = "xxx"
   private val name = "xxx"
   private val url = "xxx"
  
  CoreBrickSDK.initializedSDK( applicationContext,
                                 clientId,
                                 clientSecret,
                                 name, url,
                                 Environment.SANDBOX)
CoreBrickSDK.initializedSDK(clientId,
                                 clientSecret,
                                 name, url,
                                 Environment.SANDBOX)

Parameters explanation

Key ParameterDescription
clientIdUnique Id for users
clientSecretUnique secret that is mapped with clientId(Unique Id)
**url (Optional)**Brick returns the newly created user_access_token via POST request to this "redirect_url" parameter. Your server needs to host this redirect_url as a REST API endpoint of type POST.
EnvironmentAccepted values-
"Environment.SANDBOX" for Sanbox
"Environment.PRODUCTION" for Productio

Available Methods

1. Request Access Token

import com.io.io.sdk.*
import com.io.io.sdk.util.Environment

class MyApp : Application() {

    private val clientId = "Some-client-key"
    private val clientSecret = "some-client-secret"
    private val name = "BRICK"
    private val url = "https://onebrick.io"
    
    override fun onCreate() {
        super.onCreate()
          CoreBrickSDK.initializedSDK(clientId,clientSecret,name,url,Environment.YOUR_ENV)
    }
    
    val buttonRequest = findViewById<Button>(R.id.button_institution)
        buttonRequest.setOnClickListener {
          CoreBrickSDK.requestAccessToken(object :IAccessTokenRequestResult {
              override fun success(accessToken: AccessToken?) {
                 ...
              }

              override fun error(t: Throwable?) {
                ...
              }

          })
        }
}
import com.io.io.sdk.*
import com.io.io.sdk.util.Environment

class MyApp : Application() {

    private val clientId = "Some-client-key"
    private val clientSecret = "some-client-secret"
    private val name = "BRICK"
    private val url = "https://onebrick.io"
    
    override fun onCreate() {
        super.onCreate()
          CoreBrickSDK.initializedSDK(clientId,clientSecret,name,url,Environment.YOUR_ENV)
    }
    
    val buttonRequest = findViewById<Button>(R.id.button_institution)
        buttonRequest.setOnClickListener {
          CoreBrickSDK.requestAccessToken(object :IAccessTokenRequestResult {
              override fun success(accessToken: AccessToken?) {
                 ...
              }

              override fun error(t: Throwable?) {
                ...
              }

          })
        }
}
import BrickSDK

class BaseViewController {

    private val clientId = "Some-client-key"
    private val clientSecret = "some-client-secret"
    private val name = "BRICK"
    private val url = "https://onebrick.io"
    
     override func viewDidLoad() {
   			 super.viewDidLoad()
          CoreBrickSDK.initializedSDK(clientId,clientSecret,name,url,Environment.YOUR_ENV)
    }
}

Incase of success it will return DataClass AccessToken

Key ParameterTypeDescription
statusStringResponse status from server
messageStringResponse message from server
dataData Class AccessTokenDataData Class AccessTokenData

Data Class AccessTokenData explanation

Key ParameterTypeDescription
access_tokenStringString Access token

2. Request Access Token Credentials

import com.io.io.sdk.*
import com.io.io.sdk.util.Environment

class MyApp : Application() {

    private val clientId = "Some-client-key"
    private val clientSecret = "some-client-secret"
    private val name = "BRICK"
    private val url = "https://onebrick.io"
    
    override fun onCreate() {
        super.onCreate()
          CoreBrickSDK.initializedSDK(clientId,clientSecret,name,url,Environment.YOUR_ENV)
    }
    
    val buttonRequest = findViewById<Button>(R.id.button_institution)
        buttonRequest.setOnClickListener {
			CoreBrickSDK.requestTokenCredentials(object:IRequestTokenCredentials{
               override fun success(response: AccessTokenRequest?) {
                  ...
               }

               override fun error(t: Throwable?) {
                  ...
               }

           })
        }
}
import com.io.io.sdk.*
import com.io.io.sdk.util.Environment

class MyApp : Application() {

    private val clientId = "Some-client-key"
    private val clientSecret = "some-client-secret"
    private val name = "BRICK"
    private val url = "https://onebrick.io"
    
    override fun onCreate() {
        super.onCreate()
          CoreBrickSDK.initializedSDK(clientId,clientSecret,name,url,Environment.YOUR_ENV)
    }
    
    val buttonRequest = findViewById<Button>(R.id.button_institution)
        buttonRequest.setOnClickListener {
			CoreBrickSDK.requestTokenCredentials(object:IRequestTokenCredentials{
               override fun success(response: AccessTokenRequest?) {
                  ...
               }

               override fun error(t: Throwable?) {
                  ...
               }

           })
        }
}
class BaseViewController {

    private val clientId = "Some-client-key"
    private val clientSecret = "some-client-secret"
    private val name = "BRICK"
    private val url = "https://onebrick.io"
    
     override func viewDidLoad() {
   			 super.viewDidLoad()
          CoreBrickSDK.initializedSDK(clientId,clientSecret,name,url,Environment.YOUR_ENV)
       		CoreBrickSDK.requestTokenCredentials(object:IRequestTokenCredentials{
               override fun success(response: AccessTokenRequest?) {
                  ...
               }

               override fun error(t: Throwable?) {
                  ...
               }

           	})
        	}
       
    }

Incase of success it will return DataClass AccessTokenRequest

Key ParameterTypeDescription
statusStringResponse status from server
messageStringResponse message from server
dataData Class AccessTokenRequestDataData Class AccessTokenRequestData

Data Class AccessTokenRequestData explanation

Key ParameterTypeDescription
clientIdLongClient Id Value
clientNameStringClient Name
clientAliasStringClient Name Alias
clientImageUrlStringClient Image Url
clientFullNameStringClient Full Name
clientFaviconStringClient Favicon
redirectRefIdStringRedirect unique number

3. List Institution

import com.io.io.sdk.*
import com.io.io.sdk.util.Environment

class MyApp : Application() {

    private val clientId = "Some-client-key"
    private val clientSecret = "some-client-secret"
    private val name = "BRICK"
    private val url = "https://onebrick.io"
    
    override fun onCreate() {
        super.onCreate()
          CoreBrickSDK.initializedSDK(clientId,clientSecret,name,url,Environment.YOUR_ENV)
    }
    
    val buttonRequest = findViewById<Button>(R.id.button_institution)
        buttonRequest.setOnClickListener {
		CoreBrickSDK.listInstitution(object :IRequestInstituion{
               override fun success(response: Institution?) {
                   // will return list of institution
               }

               override fun error(t: Throwable?) {
        
               }

           })
           }
}
import com.io.io.sdk.*
import com.io.io.sdk.util.Environment

class MyApp : Application() {

    private val clientId = "Some-client-key"
    private val clientSecret = "some-client-secret"
    private val name = "BRICK"
    private val url = "https://onebrick.io"
    
    override fun onCreate() {
        super.onCreate()
          CoreBrickSDK.initializedSDK(clientId,clientSecret,name,url,Environment.YOUR_ENV)
    }
    
    val buttonRequest = findViewById<Button>(R.id.button_institution)
        buttonRequest.setOnClickListener {
		CoreBrickSDK.listInstitution(object :IRequestInstituion{
               override fun success(response: Institution?) {
                   // will return list of institution
               }

               override fun error(t: Throwable?) {
        
               }

           })
           }
}
class BaseViewController {

    private val clientId = "Some-client-key"
    private val clientSecret = "some-client-secret"
    private val name = "BRICK"
    private val url = "https://onebrick.io"
    
     override func viewDidLoad() {
          CoreBrickSDK.initializedSDK(clientId,clientSecret,name,url,Environment.YOUR_ENV)
    }
    
    val buttonRequest = findViewById<Button>(R.id.button_institution)
        buttonRequest.setOnClickListener {
		CoreBrickSDK.listInstitution(object :IRequestInstituion{
               override fun success(response: Institution?) {
                   // will return list of institution
               }

               override fun error(t: Throwable?) {
        
               }

           })
           }
}

Incase of success it will return DataClass Institution

Key ParameterTypeDescription
statusStringResponse status from server
messageStringResponse message from server
dataArray Of InstitutionDataData Class InstitutionData Array

Data Class InstitutionData explanation

Key ParameterTypeDescription
idLongInstitution
bankNameStringInstitution name
bankCodeStringInstitution Code
countryNameStringInstitution Country Base
typeStringInstitution Type

4. Financial Institution Authentication / Employment Data

Basic Function

CoreBrickSDK.authenticateUser(username:String, password: String, institutionId: String, result:IRequestResponseUserAuth)
CoreBrickSDK.authenticateUser(username:String, password: String, institutionId: String, result:IRequestResponseUserAuth)

Parameter Payload

Key ParameterTypeDescription
usernameStringUsername for Financial Institution
passwordStringPassword for Financial Institution
institutionIdStringInstitution ID from Institution list

Implementation

import com.io.io.sdk.*
import com.io.io.sdk.util.Environment

class MyApp : Application() {

    private val clientId = "Some-client-key"
    private val clientSecret = "some-client-secret"
    private val name = "BRICK"
    private val url = "https://onebrick.io"
    
    override fun onCreate() {
        super.onCreate()
          CoreBrickSDK.initializedSDK(clientId,clientSecret,name,url,Environment.YOUR_ENV)
    }
    
    val buttonRequest = findViewById<Button>(R.id.button_institution)
        buttonRequest.setOnClickListener {
		  CoreBrickSDK.authenticateUser("someUser","somePassword","1",object:IRequestResponseUserAuth{
            override fun success(response: AuthenticateUserResponse) {

             }
             override fun error(t: Throwable?) { 
                   ...
             }

           })
    }
}
import com.io.io.sdk.*
import com.io.io.sdk.util.Environment

class MyApp : Application() {

    private val clientId = "Some-client-key"
    private val clientSecret = "some-client-secret"
    private val name = "BRICK"
    private val url = "https://onebrick.io"
    
    override fun onCreate() {
        super.onCreate()
          CoreBrickSDK.initializedSDK(clientId,clientSecret,name,url,Environment.YOUR_ENV)
    }
    
    val buttonRequest = findViewById<Button>(R.id.button_institution)
        buttonRequest.setOnClickListener {
		  CoreBrickSDK.authenticateUser("someUser","somePassword","1",object:IRequestResponseUserAuth{
            override fun success(response: AuthenticateUserResponse) {

             }
             override fun error(t: Throwable?) { 
                   ...
             }

           })
    }
}
class BaseViewController {

    private val clientId = "Some-client-key"
    private val clientSecret = "some-client-secret"
    private val name = "BRICK"
    private val url = "https://onebrick.io"
    
     override func viewDidLoad() {
          CoreBrickSDK.initializedSDK(clientId,clientSecret,name,url,Environment.YOUR_ENV)
    }
    val buttonRequest = findViewById<Button>(R.id.button_institution)
        buttonRequest.setOnClickListener {
		  CoreBrickSDK.authenticateUser("someUser","somePassword","1",object:IRequestResponseUserAuth{
            override fun success(response: AuthenticateUserResponse) {

             }
             override fun error(t: Throwable?) { 
                   ...
             }

           })
    }
}

🚧

Attention

The process is completed in case of status 200, Otherwise, incase of status 428 go to the next step to do the MFA process ( 4.1 Step Financial Institution Authentication)

Incase of success it will return DataClass AuthenticateUserResponse

Key ParameterTypeDescription
statusStringResponse status from server
messageStringPassword for Financial Institution
dataData Class AuthenticateUserResponseDataData Class
accessTokenStringAccess token that will used by client to retrieve transaction detail
sessionIdStringSession string generated from Brick server

4.1 Financial Institution Authentication

Basic Function

CoreBrickSDK.submitCredentialsForMFAAccount(payload:MFABankingPayload, result:IRequestTransactionResult)
CoreBrickSDK.submitCredentialsForMFAAccount(payload:MFABankingPayload, result:IRequestTransactionResult)
CoreBrickSDK.submitCredentialsForMFAAccount(payload:MFABankingPayload, result:IRequestTransactionResult)

Parameter Payload

Key ParameterTypeDescription
tokenStringOTP SMS that sent from the institution
durationLongTime duration
institutionIdStringInstitution ID from Institution list
redirectRefIdStringRedirect unique number
sessionIdStringSession string generated from Brick server
usernameStringUsername for Financial Institution
passwordStringPassword for Financial Institution

Implementation

import com.io.io.sdk.*
import com.io.io.sdk.util.Environment

class MyApp : Application() {

    private val clientId = "Some-client-key"
    private val clientSecret = "some-client-secret"
    private val name = "BRICK"
    private val url = "https://onebrick.io"
    
    override fun onCreate() {
        super.onCreate()
          CoreBrickSDK.initializedSDK(clientId,clientSecret,name,url,Environment.YOUR_ENV)
    }
    
    val buttonRequest = findViewById<Button>(R.id.button_institution)
        buttonRequest.setOnClickListener {
        
       val payload = MFABankingPayload(
                token = "OTP SMS that sent from the institution",
                duration = " you will get the response from the previous step",
                institutionId = "you will get the response from the previous step",
                redirectRefId = "you will get the response from the previous step",
                sessionId = "you will get the response from the previous step",
                username = "you will get the response from the previous step",
                password = "you will get the response from the previous step"
        )
        
		  CoreBrickSDK.submitCredentialsForMFAAccount(payload:MFABankingPayload, result:IRequestTransactionResult) {
            override fun success(credentials: AuthenticateUserResponse?) {
                ....
            }

            override fun error(t: Throwable?) {
               ....
               
           })
    }
}
import com.io.io.sdk.*
import com.io.io.sdk.util.Environment

class MyApp : Application() {

    private val clientId = "Some-client-key"
    private val clientSecret = "some-client-secret"
    private val name = "BRICK"
    private val url = "https://onebrick.io"
    
    override fun onCreate() {
        super.onCreate()
          CoreBrickSDK.initializedSDK(clientId,clientSecret,name,url,Environment.YOUR_ENV)
    }
    
    val buttonRequest = findViewById<Button>(R.id.button_institution)
        buttonRequest.setOnClickListener {
        
       val payload = MFABankingPayload(
                token = "OTP SMS that sent from the institution",
                duration = " you will get the response from the previous step",
                institutionId = "you will get the response from the previous step",
                redirectRefId = "you will get the response from the previous step",
                sessionId = "you will get the response from the previous step",
                username = "you will get the response from the previous step",
                password = "you will get the response from the previous step"
        )
        
		  CoreBrickSDK.submitCredentialsForMFAAccount(payload:MFABankingPayload, result:IRequestTransactionResult) {
            override fun success(credentials: AuthenticateUserResponse?) {
                ....
            }

            override fun error(t: Throwable?) {
               ....
               
           })
    }
}
class BaseViewController {

    private val clientId = "Some-client-key"
    private val clientSecret = "some-client-secret"
    private val name = "BRICK"
    private val url = "https://onebrick.io"
    
     override func viewDidLoad() {
          CoreBrickSDK.initializedSDK(clientId,clientSecret,name,url,Environment.YOUR_ENV)
    }
    
    val buttonRequest = findViewById<Button>(R.id.button_institution)
        buttonRequest.setOnClickListener {
        
       val payload = MFABankingPayload(
                token = "OTP SMS that sent from the institution",
                duration = " you will get the response from the previous step",
                institutionId = "you will get the response from the previous step",
                redirectRefId = "you will get the response from the previous step",
                sessionId = "you will get the response from the previous step",
                username = "you will get the response from the previous step",
                password = "you will get the response from the previous step"
        )
        
		  CoreBrickSDK.submitCredentialsForMFAAccount(payload:MFABankingPayload, result:IRequestTransactionResult) {
            override fun success(credentials: AuthenticateUserResponse?) {
                ....
            }

            override fun error(t: Throwable?) {
               ....
               
           })
    }
}

Incase of success it will return DataClass AuthenticateUserResponse

Key ParameterTypeDescription
statusStringResponse status from server
messageStringResponse message from server
dataData Class AuthenticateUserResponseDataData Class
accessTokenStringAccess token that will used by client to retrieve transaction detail
sessionIdStringSession string generated from Brick server

*Data Class AuthenticateUserResponseData explanation**

Key ParameterTypeDescription
accessTokenStringAccess token that will used by client to retrieve transaction detail
sessionIdStringSession string generated from Brick server

5. Ewallet

Basic Function

CoreBrickSDK.authenticateEwalletUser(payload:MFABankingPayload, result:IRequestTransactionResult)
CoreBrickSDK.authenticateEwalletUser(payload:MFABankingPayload, result:IRequestTransactionResult)

Parameter Payload

Key ParameterType
usernameStringUsername for Financial Institution
institutionIdStringInstitution ID from Institution list
redirectRefIdStringRedirect unique number
import com.io.io.sdk.*
import com.io.io.sdk.util.Environment

class MyApp : Application() {

    private val clientId = "Some-client-key"
    private val clientSecret = "some-client-secret"
    private val name = "BRICK"
    private val url = "https://onebrick.io"
    
    override fun onCreate() {
        super.onCreate()
          CoreBrickSDK.initializedSDK(clientId,clientSecret,name,url,Environment.YOUR_ENV)
    }
    
    val buttonRequest = findViewById<Button>(R.id.button_institution)
        buttonRequest.setOnClickListener {
        
        val payload = MFABankingPayload(
            username = "you will get the response from the previous step",
            institutionId = "you will get the response from the previous step",
            redirectRefId = "you will get the response from the previous step"

        )
 		CoreBrickSDK.authenticateEwalletUser(payload,object:IRequestTransactionResult{
            override fun success(credentials: AuthenticateUserResponse?) {
            
            }
            override fun error(t: Throwable?) {
                dismissLoadingActivity()
                showErrorMessage(true,getString(R.string.phoneNotRegistered))
            }
        })
    }
}
import com.io.io.sdk.*
import com.io.io.sdk.util.Environment

class MyApp : Application() {

    private val clientId = "Some-client-key"
    private val clientSecret = "some-client-secret"
    private val name = "BRICK"
    private val url = "https://onebrick.io"
    
    override fun onCreate() {
        super.onCreate()
          CoreBrickSDK.initializedSDK(clientId,clientSecret,name,url,Environment.YOUR_ENV)
    }
    
    val buttonRequest = findViewById<Button>(R.id.button_institution)
        buttonRequest.setOnClickListener {
        
        val payload = MFABankingPayload(
            username = "you will get the response from the previous step",
            institutionId = "you will get the response from the previous step",
            redirectRefId = "you will get the response from the previous step"

        )
 		CoreBrickSDK.authenticateEwalletUser(payload,object:IRequestTransactionResult{
            override fun success(credentials: AuthenticateUserResponse?) {
            
            }
            override fun error(t: Throwable?) {
                dismissLoadingActivity()
                showErrorMessage(true,getString(R.string.phoneNotRegistered))
            }
        })
    }
}
class BaseViewController {

    private val clientId = "Some-client-key"
    private val clientSecret = "some-client-secret"
    private val name = "BRICK"
    private val url = "https://onebrick.io"
    
     override func viewDidLoad() {
          CoreBrickSDK.initializedSDK(clientId,clientSecret,name,url,Environment.YOUR_ENV)
    }
    
    val buttonRequest = findViewById<Button>(R.id.button_institution)
        buttonRequest.setOnClickListener {
        
        val payload = MFABankingPayload(
            username = "you will get the response from the previous step",
            institutionId = "you will get the response from the previous step",
            redirectRefId = "you will get the response from the previous step"

        )
 		CoreBrickSDK.authenticateEwalletUser(payload,object:IRequestTransactionResult{
            override fun success(credentials: AuthenticateUserResponse?) {
            
            }
            override fun error(t: Throwable?) {
                dismissLoadingActivity()
                showErrorMessage(true,getString(R.string.phoneNotRegistered))
            }
        })
    }
}

Incase of success it will return DataClass AuthenticateUserResponse

Key ParameterTypeDescription
statusStringResponse status from server
messageStringResponse message from server
dataData Class AuthenticateUserResponseDataData Class
accessTokenStringAccess token that will used by client to retrieve transaction detail
sessionIdStringSession string generated from Brick server

📘

Have trouble integrating SDK?

We are here to help! If you have any trouble integrating our SDKs, You can contact us via.