EDGE Monitor - Starter Guide

Overview

Welcome to the developer documentation for the EDGE Monitor Product.

EDGE Monitor performs daily refreshes of connected bank accounts, providing insights based on the most recent balance and transaction data. This guide outlines how to effectively integrate and utilize EDGE Monitor.

Prerequisites

Before you begin, ensure you have:

  • An API key for accessing the EDGE platform
  • Integration with the EDGE platform to acquire consumers’ bank transaction data
  • A subscription to the EDGE Monitor product configured

Overview of the APIs and Webhooks

The following actions are supported by the EDGE Monitor product:

API ActionDescription
Subscribe ConsumersSubscribe consumers to the EDGE Monitor product for daily refreshes.
Unsubscribe ConsumersUnsubscribe consumers from EDGE Monitor.
Retrieve SubscriptionsGet the list of consumers subscribed to EDGE Monitor.
Event AlertsReceive webhook alert in response to EDGE Monitor event.
Retrieve EDGE Monitor ReportRetrieve detailed balance and transaction reports.

Detailed API Information

  1. Subscribe Consumers

Use the POST method on the following endpoint to subscribe consumers to the EDGE Monitor product:

POST https://ninjafetch.com/api/v1/subscriptions

Headers:
x-api-key: [your_api_key]
Accept: application/json

Request Example:

{
  "ids": ["11222", "11223"],
  "action": "subscribe",
  "product": "edgemonitor"
}
FieldsInput
idsValid consumer IDs that were submitted in the product requests for connecting bank accounts. Use commas to separate multiple consumer IDs when subscribing multiple consumers.
actionsubscribe
productedgemonitor

By default, new consumers are automatically subscribed to the EDGE Monitor product upon establishing a connection with their bank accounts. Manual subscription via the API is also supported if the customer prefers to subscribe only those consumers who meet certain criteria. In this case, automatic subscription will be turned off.

Response Example (200)

{
 "results": [
   {
     "id": "11222",
     "status": "subscribed",
     "message": "Success",
     "connection_link": "",
     "last_data_pull_performed_at": "timestamp",
     "last_data_pull_status": "pulled",
   },
   {
     "id": "11223",
     "status": "subscribed_connection_expired",
     "message": "Connection is no longer valid",
     "connection_link": "https://ninjafetch.com/connect/de9a61a1edc38414755c",
     "last_data_pull_performed_at": "TIMESTAMP",
     "last_data_pull_status": "error"
   }
 ]
}

Supported Subscription Statuses

StatusMessageDescription
subscribedSuccessThe consumer was successfully subscribed.
subscribed_connection_expiredConnection is no longer validThe consumer was subscribed, but the connection is no longer valid. A connection link will be provided in this case, allowing the consumer to reconnect the bank account using the link.
consumer_not_foundConsumer does not existNo consumer was found for the given ID.

Supported Last Data Pull Statuses

StatusDescription
pendingData pull in progress
pulledData pull was successful
errorData pull failed due to an error

  1. Unsubscribe Consumers

Use the POST method on the following endpoint to unsubscribe consumers from the EDGE Monitor product:

POST https://ninjafetch.com/api/v1/subscriptions

Headers:
x-api-key: [your_api_key]
Accept: application/json

Request Example:

{  
 "ids": ["11222","11223"],  
 "action": "unsubscribe",  
 "product": "edgemonitor"  
}
FieldsInput
idsValid consumer IDs that were used to subscribe to the EDGE Monitor product. You can use commas to separate multiple consumer IDs when unsubscribing multiple consumers.
actionunsubscribe
productedgemonitor

Response Example (200)

{
 "results": [
   {
     "id": "11222",
     "status": "unsubscribed",
     "message": "Subscription removed",
     "removed_at": "TIMESTAMP"
   },
   {
     "id": "11223",
     "status": "consumer_not_found",
     "message": "Consumer does not exist",
     "removed_at": "TIMESTAMP"
   }
 ]
}

Supported Statuses

StatusMessageDescription
unsubscribedSubscription removedThe consumer was successfully unsubscribed.
consumer_not_foundConsumer does not existNo consumer was found for the given ID.
  1. Retrieve Subscriptions

Use the GET method on the following endpoint to retrieve the list of consumers who are subscribed to the EDGE Monitor product:

GET https://ninjafetch.com/api/v1/subscriptions

Headers:
x-api-key: [your_api_key]
Accept: application/json

Request Example:

{
 "status": "subscribed", *optional field
 "product": "edgemonitor"
}

Supported statuses:

Status
subscribed
unsubscribed
subscribed_connection_expired

The API will return the list of consumers that have subscribed to the EDGE Monitor product based on the status, if the optional status field was included in the request payload. Otherwise, the API will return the list of all subscribed consumers.

Response Example (200)

{  
 "product": "edgemonitor",  
 "results": [  
   {  
     "id": "11222",  
     "status": "subscribed",  
     "message": "Success",  
     "connection_link": "",  
     "last_data_pull_performed_at": "TIMESTAMP",  
     "last_data_pull_status": ""  
   }  
 ]  
}

Supported Subscription Statuses

StatusMessageDescription
subscribedSuccessThe consumer was successfully subscribed.
subscribed_connection_expiredConnection is no longer validThe consumer was subscribed, but the connection is no longer valid. A connection link will be provided in this case, allowing the consumer to reconnect the bank account using the link.
consumer_not_foundConsumer does not existNo consumer was found for the given ID.

Supported Last Data Pull Statuses

StatusDescription
pendingData pull in progress
pulledData pull was successful
errorData pull failed due to an error

Response Example (401)

A 401 response indicates that the request payload failed validation.

{  
 "message": "Actual error message",  
 "tracking_id": "<A unique id for tracking purpose>"  
}

Event Alerts

Set Up Webhooks

To receive webhooks, set up an API endpoint that is reachable by the EDGE platform. The EDGE platform supports API authentication in the header. Please provide the endpoint and authentication details to the EDGE team. If the customer wishes to whitelist the EDGE server for webhooks, the IP address is 18.191.8.81.

EDGE Monitor can send Webhook callbacks based on the following events:

EventDescriptionDetails
account_refresh_successIndicates that a data refresh was successful for the consumer.Each subscribed consumer will receive a dedicated webhooks callback. The product request ID included in the response will be used to retrieve the EDGE Monitor report.
account_refresh_failedIndicates that a data refresh was unsuccessful for the consumer.A connection link will be included in the response. The customer can send the connection link to the consumer to reestablish the connection.
account_alertIndicates that one or more account alerts are triggered.All alerts for the same consumer are grouped together. Customers can choose to receive all alerts or a subset of alerts. This configuration needs to be performed by the team.

Supported account alerts:

Alert NameDescription
Negative balanceAccount balance changes from positive to negative
Current balance recoveryAccount in the negatives reaches a current balance over $100
Available balance recoveryAccount in the negatives reaches an available balance over $100
Large depositNew deposit in the account for over $100

Account object details

The account_alert webhook payload contains a single field named accounts, which contains an array of accounts that triggered alerts. Every account object consists of the following:

FieldDescription
account_nameName of account
account_typeAccount type (checking, savings, etc.)
account_numberMasked account number
itemsAn array of triggered alerts and their metadata

Response Examples:

account_refresh_success:

{  
 "consumer_id": "12345",  
 "event": "account_refresh_success",  
 "last_refreshed_at": "<timestamp>",  
 "product_request_id": "IBVB0D967AB40AEFF8E62B0"  
}

account_refresh_failed:

{  
 "consumer_id": "12345",  
 "event": "account_refresh_failed",  
 "attempted_at": "<timestamp>",  
 "message": "Connection invalid. Use the connection link to reconnect.",  
 "ibv_connection_link":  "<https://ninjafetch.com/connect/438da2e3b1b3211e8d4a899c2ee66a6">  
}

account_alert:

{
 "consumer_id": "12345",
 "event": "account_alert",
 "time": "<timestamp>",
  "accounts": [
    {
      "account_name": "Checking Plus",
      "account_type": "CHECKING",
      "account_number": "xxxx4197",
      "items": [
        {
          "rule_id": "79dc3e25-2572-45bf-8c0d-e26fb9c0b19f",
          "alert_name": "Current balance recovery",
          "result": true
        },
        {
          "rule_id": "06232f01-ed4b-43de-8d38-9e23b55aed71",
          "alert_name": "Available balance recovery",
          "result": true
        },
        {
          "rule_id": "3192fdda-9141-4f67-acb2-88c2a97c1b03",
          "alert_name": "Large Deposit Alert",
          "result": [
            {
              "is_pending": false,
              "memo": "Interest Payment",
              "value": "250.0",
              "category": "Interest"
            }
          ]
        }
      ]
    }
  ]
}

Retrieve EDGE Monitor Report

After receiving a webhook notification, use the GET method on the following endpoint to download the EDGE Monitor report:

GET <https://ninjafetch.com/api/v1/ibv/requests/><product_request_id>

Headers:
x-api-key: [your_api_key]
Accept: application/json

FieldsInput
product_request_idThe unique identifier of the product request associated with your subscription