Webhook Solutions
Overview
Our webhook solution ensures that your system receives real-time notifications regarding specific events triggered within the NI system, based on your subscription to the different webhooks.
Integration
Our Webhooks solution relies on consumer defining a single API endpoint to receive all the notification types. Each message contains a common structure with:
- id: Unique message id
- type: type of notification. This is the key field to differentiate processing of the details payload
- timestamp: timestamp of the message from NI systems
- details: notification payload. Every message type will have its own payload specification and should be parsed and acted accordingly.
Security
The webhook endpoint is expected to be hosted through TLS/HTTPS to ensure secured data exchange. In addition to this, our webhook solution supports API authentication.
The preferred authentication strategy is oAuth2 where the consumer should provide NI with:
- Authentication/Token management URL endpoint
- client_id
- client_secret
Pre-requisites
Our webhook API request will be using the POST verb.
To register a Webhook endpoint with us, please contact your relationship manager with:
- Webhook URL Endpoint
- Authentication mode
- Security requirements
To support different authentication method or integration strategy with us, please contact your relationship manager
Card Replacement
Status:
Production
Version:
V2
Product:
Webhook Solutions
Overview
This webbook serves to promptly inform your system whenever a card replacement occurs. This helps ensure that important card management activities are communicated accurately and on time. Card replacements are crucial in banking because they affect customer accounts, security, and transaction abilities.
How It Works
Upon detection of a relevant card replacement action, regardless of the channel that was used for this action, the webhook initiates a notification process after checking the subscribers for this event.
To be able to receive this webhook notification, you must subscribe to it, and by default you are not.
Subscribers will be defined while create the financial institution in our system, or after creating.
Card Replacement
Status:
Production
Version:
V2
Product:
Webhook Solutions
Node | Child Node | Type | Length | Description |
---|---|---|---|---|
Authorization | Bearer xxxx | string | Authorization Header (Bearer Token) | |
Content-Type | application/json | string | Content Type |
Node Type | Type | Length | Description | |||||||
---|---|---|---|---|---|---|---|---|---|---|
id | string | 20 | Unique identifer for the request | |||||||
type | string | 32 | Type of the webhook | |||||||
timestamp | string | 30 | Timestamp of the request - Format YYYY-MM-DDtHH:MM:SS.SSS+04:00 | |||||||
details | card | id | value | string | 32 | Card Identifier | ||||
type | string | 20 | externalCardId - when this is used,cardNumber - when clear card number is used | |||||||
expiryDate | string | 4 | Card's expiry date | |||||||
newExternalCardId | string | 32 | New external CardId | |||||||
newCard | string | 32 | New Block Code | |||||||
oldCard | string | 32 | Previous Block Code |
{
"id": "b876d568-8411-4638-bdef-a1a188a4773b",
"type": "CardReplacement",
"timestamp": "2020-07-20T06:49:02.366Z",
"details": {
"card": {
"id": {
"value": "99984100133767425304",
"type": "externalCardId"
}
},
"expiryDate": "2809",
"newExternalCardId": "_",
"newCard": "_",
"oldCard": "_"
}
}
Node | Child Node | Type | Length | Description | |
---|---|---|---|---|---|
Content-Type | application/json | string | Content Type |
Node Type | Type | Length | Description | |||||||
---|---|---|---|---|---|---|---|---|---|---|
id | string | 36 | Unique identifer ID | |||||||
type | string | 10 | Type of the webhook | |||||||
timestamp | string | 30 | Timestamp of the response - Format YYYY-MM-DDtHH:MM:SS.SSS+04:00 | |||||||
response | status | code | string | 5 | Status code of the response | |||||
description | string | 30 | Response Description |
{
"id": "b876d568-8411-4638-bdef-a1a188a4773b",
"type": "CardReplacement",
"timestamp": "2020-07-20T06:49:02.366Z",
"response": {
"status": {
"code": "00",
"description": "successful"
}
}
}
Code | Description |
---|---|
200 | Sample Description |
400 | Bad Request |
401 | Unauthorized |
403 | Forbidden |
500 | Internal Server Error |
502 | Bad gateway |
503 | Scheduled Maintenance |
504 | Gateway Timeout |
596 | Service Not Found |