@innocells/unnax-client

Unnax client for node

Stats

StarsIssuesVersionUpdatedCreatedSize
@innocells/unnax-client
1.0.603 years ago4 years agoMinified + gzip package size for @innocells/unnax-client in KB

Readme

unnax-client

Unnax SDK for JavaScript

Installation

You can install it directly from npm:

npm install @innocells/unnax-client --save

Initialization

init(request)

To initialize the unnax-client use the init() method passing the options object:

{
  apiCode:        Unnax client ApiCode (string)
  apiId:          Unnax client ApiId   (string)
  unnaxBaseUrl:   Unnax api endpoint (Unnax Environment) (string)
}

Initialization example:

 const UnnaxClient = require('@innocells/unnax-client').init({
  apiCode: "unnaxApiCode",
  apiId: "unnaxApiId",
  unnaxBaseUrl: "unnax api url base (integration environment unnax sample: https://integration.unnax.com)"
 });

Response:

Returns an instance of the unnax-client.

Methods

getWidgetHtml(request)

Returns the html code (so intended for web browsers) of the widget used to connect bank accounts.

Request object definition:

{
  requestCode:      Unique request code (string)   
  baseColor:        Base color for the widget (?string) (Default #0098C3)
  logoUrl:          Url for the application logo (?string)
  urlOk:            Redirect url for success bank login (?string)
  urlKo:            Redirect url for fails bank login (?string)
}

Request example:

  const widgetRequest = {
    baseColor: '#09D3C7',
    requestCode: '123456',
    logoUrl: 'https://www.jido.io/wp-content/uploads/2018/01/Jido-logo.png'
    urlOk: 'http://localhost:4000/loginOk',
    urlKo: 'http://localhost:4000/loginOk'
  };

  const widget = UnnaxClient.getWidgetHtml(widgetRequest);

Response:

HTML content for the widget. When the user finish the login process the unnax widget redirects to urlOk or urlKo.

getAvailableWebhooks()

Returns the list of available webhooks in Unnax.

Request example:

const response = await UnnaxClient.getAvailableWebhooks();

The returned object is an array of events:

[
    {
        "name": "Aml Check",
        "id": "aml_check",
        "description": "Triggered when an AML check completes"
    },
    {
        "name": "Fitnance Read",
        "id": "fitnance_read",
        "description": "Triggered when a fitnance read operation completes"
    }
  ...
]

getSubscribedWebhooks()

Returns an object with the currently subscribed events.

Request example:

const response = await UnnaxClient.getSubscribedWebhooks();

Response:

{
  count:      Number of subscribed webhooks.
  next:       Url to get the next page.
  previous:   Url to get the previous page. 
  results:    Array of subscribed events. Each event has an id, client ("email" or "callback") and target (email or callback url from site)
}

Response sample:

{
  "count": 1,
  "next": null,
  "previous": null,
  "results": [
    {
      "id": 235,
      "client": "callback",
      "event": "event_credential_token_creation",
      "target": "https://mySite.com/response",
      "created_at": "2018-01-17T12:24:53Z",
      "updated_at": "2018-01-17T12:24:53Z"
    },
    {
      "id": 240,
      "client": "email",
      "event": "event_reader_lockstep_complete",
      "target": "myname@myemail.io",
      "created_at": "2018-01-17T14:57:55Z",
      "updated_at": "2018-01-17T15:07:56Z"
    },
    ...
  ]
} 

subscribeWebHook(options)

This method is used to register a webhook event.

Request object definition:

{
   client:       Client type, either `email` or `callback`) (string)
   event:        Event id (returned from `getAvailableWebhooks()`) (string)
   target:       An email or callback url.
}

Request example:

  const request = { client: 'email', event: 'aml_check', target: 'myname@myemail.com' };
  const response = await UnnaxClient.SubscribeWebHook(request);

The response represents a new webhook subscription:

{
   id:           Webhook subscription id (number)
   client:       'email' or 'callback' (same as request.client) (string)
   event:        Event id (eventId returned in the getAvailableWebhooks() method) (string)
   target:       Target of webhook response. (url if the client is 'callback' or email if the client is 'email')
}

decryptData(data)

This method is used to decrypt the data received from the webhook (fitnance_read) callback.

Request object definition:

 data: string

Callback webhook definition object

Sample fitnance_reader callback:

  {
    service:            Service (example: 'reader') (string)
    triggered_event:    Event id (to receive the callback, you must to subscribe to an event) (string)
    environment:        Unnax environment (example: "unnax_integration")
    data:               Encrypted data received (i.e. all movements from a client bank account) (string)
    date:               Date time executed (string)
    response_id:        Response id (string),
    trace_identifier:   trace identifier (string)
  }

Sample request:

  const result = UnnaxClient.decryptData(request.body.data.data);  

launchTokenizedReader(request)

Launchs a request for tokenized readings (once the read finish unnax will launch a fitnance_read event and post the data to the target webhook subscription).

Request object definition:

{
 tokenKey:         Token_key created previously (callback of Credentials Tokenized Widget) (string), 
 tokenId:          Token_id created previously (callback of Credentials Tokenized Widget) (string), 
 requestCode:      RequestCode for reader (string), 
 startDate:        Movements since YYYY-MM-DD (string)
}  

Request example:

const request = {
    tokenKey: "lsFt7skxMaVfX4itYFB5sP8XVZLXoCVn",
    tokenId: "92",
    requestCode: "2AAsdfrA65_1",
    startDate : "2017-01-01"
}

const result = await UnnaxClient.launchTokenizedReader(request);

The response contains a job_id:

{
    "job_id": "rt_f586421f5e9c4f61b0f8882a220ddd77"
}

apiInit(requestCode)

Launchs a request for Login Bank by API

Request object definition:

 requestCode:         identifier for bank login (string)

Request example:

const request = 'requesBankLoginIdentifier'

const result = await UnnaxClient.apiInit(request);

The response contains a session ID sid and array of banks. Each bank contains login methods:

{
    "sid": "s_asdassdacegrthaf86a90aa6437da4f3",
    "banks": [
        {
            "id": 3,
            "name": "Banc Sabadell",
            "parameters": [
                {
                    "name": "document_type",
                    "label": "Tipo de documento",
                    "type": "option",
                    "optional": false,
                    "fields": [
                        {
                            "name": "bso_id_number",
                            "label": "Usuario (DNI)",
                            "type": "text",
                            "minLength": 0,
                            "maxLength": 30
                        },
                        {
                            "name": "bso_sec_card",
                            "label": "Tarjeta secundaria",
                            "type": "text",
                            "minLength": 0,
                            "maxLength": 30
                        },
                        {
                            "name": "bso_nie",
                            "label": "NIE",
                            "type": "text",
                            "minLength": 0,
                            "maxLength": 30
                        }
                    ]
                },
                {
                    "name": "username",
                    "label": "Usuario",
                    "type": "text",
                    "optional": false,
                    "fields": [
                        {
                            "name": "username",
                            "label": "Usuario",
                            "type": "text",
                            "minLength": 0,
                            "maxLength": 20
                        }
                    ]
                },
                {
                    "name": "password",
                    "label": "Contraseña",
                    "type": "password",
                    "optional": false,
                    "fields": [
                        {
                            "name": "password",
                            "label": "Contraseña",
                            "type": "text",
                            "minLength": 0,
                            "maxLength": 20
                        }
                    ]
                }
            ]
        }]
}

If you find any bugs or have a feature request, please open an issue on github!

The npm package download data comes from npm's download counts api and package details come from npms.io.