HTTP Request
Related Articles
Begini sends the results and events in the form of webhook via REST API. You will need to configure your end point to be able to to receive it.
HTTP Request Signature
The webhook receiver should be implemented as an HTTP server that should able to receive the following request signature mentioned below:
Headers
Header | Value | Remarks |
X-Signature | HMAC Value |
This is the HMAC value of the payload that was hashed by the API Key from an integration (Available in the admin dashboard, in the integration page) Please see Security Features Section for additional details (This will also explain how to perform HMAC Authentication in the webhook receiver) |
content-type | application/json | Begini will always send the payload as JSON |
Request Method
POST
JSON Payload
The webhook will be in JSON format. The time format will be in Epoch format and the score will be in integer format.
Response Status
Status Code | Response Body | Description |
200 | Any valid JSON body | This will identify that the webhook was successfully transmitted to the destination |
Non 200 |
Any String
{\"detail\":\"Validation Failure\"}"
|
This will contain additional information about the error. This will aid the client later on why webhook was not able to successfully transmit the webhook to the webhook receiver.
|
Webhook Event Payload Types
Events are generated when there is a status updates about the application that is processed by Begini. These are the types of webhook events:
psychometric_score.complete - This is generated when a score result from a psychometric integration
{
"uid": "1234QWER-TYUI4567-ASDFD890",
"integration_id": "12345678901234567890",
"event" : {
"type": "psychometric_score.complete",
"details" : {
"application_started_at" : 1644397242,
"application_completed_at" : 1644397300,
"scored_at" : 1644397637,
"platform": "WEB",
"calculated" : {
"score" : ##,
"risk_band" : "RISK_RATING"
"score_confidence" : "CONFIDENCE_RATING",
"traits": [
{
"key": "trait_type",
"value": #,
"risk_band": "RISK_RATING"
},
{
"key": "trait_type",
"value": #,
"risk_band": "RISK_RATING"
},
{
"key": "trait_type",
"value": #,
"risk_band": "RISK_RATING"
},
{
"key": "trait_type",
"value": #,
"risk_band": "RISK_RATING"
},
{
"key": "trait_type",
"value": #,
"risk_band": "RISK_RATING"
},
{
"key": "trait_type",
"value": #,
"risk_band": "RISK_RATING"
},
{
"key": "trait_type",
"value": #,
"risk_band": "RISK_RATING"
},
{
"key": "trait_type",
"value": #,
"risk_band": "RISK_RATING"
},
{
"key": "trait_type",
"value": #,
"risk_band": "RISK_RATING"
},
{
"key": "trait_type",
"value": #,
"risk_band": "RISK_RATING"
},
{
"key": "trait_type",
"value": #,
"risk_band": "RISK_RATING"
},
{
"key": "trait_type",
"value": #,
"risk_band": "RISK_RATING"
}
]
},
"flags" : [ ]
]
}
}
application.complete - This is generated when the user finishes the application journey
{
"uid": "1234QWER-TYUI4567-ASDFD890",
"integration_id": "12345678901234567890",
"event" : {
"type": "psychometric_score.complete",
"details" : {
"application_started_at" : 1644397242,
"application_completed_at" : 1644397300,
}
}
}
android_score.complete - This is generated when a score result from an ANDROID device data integration
{
"uid": "1234QWER-TYUI4567-ASDFD890",
"integration_id": "12345678901234567890",
"event" : {
"type": "android_score.complete",
"details" : {
"application_started_at" : 1644397242,
"application_completed_at" : 1644397300,
"scored_at" : 1644397637,
"platform": "ANDROID",
"calculated": {
"score" : #
},
"permissions_granted": [ ],
"permissions_denied": [ ],
"flags" : [ ]
}
}
}
ios_score.complete - This is generated when a score result from an IOS device data integration
{
"uid": "1234QWER-TYUI4567-ASDFD890",
"integration_id": "12345678901234567890",
"event" : {
"type": "ios_score.complete",
"details" : {
"application_started_at" : 1644397242,
"application_completed_at" : 1644397300,
"scored_at" : 1644397637,
"platform": "IOS",
"calculated": {
"score" : #
},
"permissions_granted": [ ],
"permissions_denied": [ ],
"flags" : [ ]
}
}
}
application.expired - This is generated when the user did not completely finish the application journey within a given timeframe.
{
"uid": "1234QWER-TYUI4567-ASDFD890",
"integration_id": "12345678901234567890",
"event" : {
"type": "application.expired",
"details" : {
"application_started_at" : 1652882892,
"application_expired_at" : 1652883492,
"percentage_completed": "0.333333333333333"
}
}
}
application.incomplete - This is generated when the user has incompletely gone thru the application journey but still submitted the application. (For example, user did not answer certain sections, local storage permission not granted, etc)
{
"uid": "1234QWER-TYUI4567-ASDFD890",
"integration_id": "12345678901234567890",
"event" : {
"type": "application.incomplete",
"details" : {
"application_started_at" : 1652882892,
"last_response_submitted_at" : 1652883492,
"percentage_completed": "0.333333333333333"
},
"reasons" : [ "Missing data" ]
}
}
application.cancelled - This is generated when the user has terminated or did not proceed in application journey.
{
"uid": "1234QWER-TYUI4567-ASDFD890",
"integration_id": "12345678901234567890",
"event" : {
"type": "application.cancelled",
"details" : {
"application_started_at" : 1652882892,
"application_cancelled_at" : 1652883492
},
"reasons" : [ "Denied the terms and conditions" ]
}
}