1. GBDS 4 Notification Flows¶
Whenever GBDS performs enrollment and update operations, notifications are sent to designated endpoints to inform its result. The entity responsible for this flow is called Notifier.
This document describes some of the notification flows during enrollment and update operations.
See also
For further information about the notification flows during sequence and quality control, see the Sequence and Quality Control documentation.
Note
Any notification sent by the Notifier is an HTTP POST to a configured
endpoint (http://<address>:<port>
) containing a JSON object. The JSON model for
each notification is shown below.
Warning
The endpoint to receive notifications must be individually implemented for any system.
Important
The notifier only accepts 200 as an OK response.
1.1. Transaction Accepted¶
All asynchronous transactions received will be enqueued. After processing, a notification is sent informing that the operation was completed.
The notification message will be as the following example:
{
"operation": "<operation>",
"tguid": "<tguid>",
"status": "<status>"
}
Note
The possible operations in this step are: ENROLL
, UPDATE
, or SEARCH
.
Note
The notifier may return diferent statuses according to the operation being performed. The possible final statuses are:
Operation | Status |
---|---|
Enroll/Update | ENROLLED , FAILED |
Search | MATCH , NOT_MATCH , FAILED , PERSON_NOT_FOUND |
The FAILED
status occurs whenever a transaction is aborted or can’t be finished.
The PERSON_NOT_FOUND
status occur when a 1:1 search is requested, but the reference
profile does not exist for the provided key.
In some cases, GBDS identifies a transaction that could not be finished and requires further action. These scenarios generate different statuses and are described in the following sections.
1.2. Transaction Sent to Manual Review¶
In cases where the GBDS identified issues related to sequence or quality control and the transaction was sent to manual review for corrections, a notification will be sent informing that the enrollment is pending, as shown in the following example:
{
"operation": "ENROLL",
"tguid": "<tguid>",
"status": "PENDING"
}
See also
For further information about the notification flows during sequence and quality control, see the Sequence and Quality Control documentation.
See also
See the MIR Manual for further information about how to deal with transactions sent to manual review.
1.3. Transaction with Biometric Exception¶
If an exception is generated while processing the transaction, the entrant transaction will be sent to exception treatment for analysis. In this case, a notification is sent informing that the transaction incurred into an exception, as shown in the following example:
{
"operation": "ENROLL",
"tguid": "<tguid>",
"status": "EXCEPTION"
}
Note
Notifications generated by Update operations will not differ the
“operation” field, then the "operation": "ENROLL"
field will be equal
for both operation types.
See also
See the ETR Manual for more information about how to treat exceptions.
1.3.1. Exception Treatment¶
The exception treatment process will generate different notifications based on the decision provided, the notification flows for each decision will be presented in this section.
1.3.1.1. Enrollment Exception - Same fingers¶
This decision confirms that the biometrics in both registers are from the same person, hence the entrant transaction fails the enrollment and is discarded. The notification endpoint, in this case, will receive a notification describing the exception treatment operation followed by another one, indicating the failed enrollment, as shown below:
{
"operation": "TREAT_EXCEPTION",
"tguid": "<tguid>",
"status": "OK",
"treatment": "SAME_FINGERS"
}
{
"operation": "ENROLL",
"tguid": "<tguid>",
"status": "FAILED"
}
1.3.1.2. Enrollment Exception - Different fingers¶
This decision denotes the match was a false-positive, so the entrant and the reference register contain different biometric sets. In this case, the enrollment must be accepted, and the notification describing the exception treatment operation will be followed by another one, indicating the successful enrollment, as shown below:
{
"operation": "TREAT_EXCEPTION",
"tguid": "<tguid>",
"status": "OK",
"treatment": "DIFFERENT_FINGERS"
}
{
"operation": "ENROLL",
"tguid": "<tguid>",
"status": "ENROLLED"
}
1.3.1.3. Enrollment Exception - Merge transactions¶
This option confirms that the biometrics in both registers are from the same person, but decides for unifying the registers with both’s biometric and biographic data. In this case, the entrant transaction must be accepted, so the notification describing the exception treatment operation will be followed by another one, indicating the successful enrollment, as shown below:
{
"operation": "TREAT_EXCEPTION",
"tguid": "<tguid>",
"status": "OK",
"treatment": "MERGE_TRANSACTIONS"
}
{
"operation": "ENROLL",
"tguid": "<tguid>",
"status": "ENROLLED"
}
1.3.1.4. Enrollment Exception - Recollect¶
This decision implies that there is an error in the entrant enrollment, and the biometrics must be recollected. In this case, the entrant transaction will fail, and the notification describing the exception treatment operation will be followed by another one, indicating the failed enrollment, as shown below:
{
"operation": "TREAT_EXCEPTION",
"tguid": "<tguid>",
"status": "OK",
"treatment": "RECOLLECT"
}
{
"operation": "ENROLL",
"tguid": "<tguid>",
"status": "FAILED"
}
1.3.1.5. Update Exception - Same fingers¶
This decision denotes the no-match was a false-negative, and the biometrics in both registers are from the same person, hence the entrant transaction is successfully enrolled. The notification endpoint, in this case, will receive a notification describing the exception treatment operation followed by another one, indicating the successful enrollment, as shown below:
{
"operation": "TREAT_EXCEPTION",
"tguid": "<tguid>",
"status": "OK",
"treatment": "SAME_FINGERS"
}
{
"operation": "ENROLL",
"tguid": "<tguid>",
"status": "ENROLLED"
}
1.3.1.6. Update Exception - Different fingers¶
This decision confirms that the biometrics in both registers are not from the same person, hence the entrant transaction fails and is discarded. The notification endpoint, in this case, will receive a notification describing the exception treatment operation followed by another one, indicating the failed enrollment, as shown below:
{
"operation": "TREAT_EXCEPTION",
"tguid": "<tguid>",
"status": "OK",
"treatment": "DIFFERENT_FINGERS"
}
{
"operation": "ENROLL",
"tguid": "<tguid>",
"status": "FAILED"
}
1.3.1.7. Update Exception - Recollect¶
This decision implies that there is an error in the entrant enrollment, and the biometrics must be recollected. In this case, the entrant transaction will fail, and the notification describing the exception treatment operation will be followed by another one, indicating the successful enrollment, as shown below:
{
"operation": "TREAT_EXCEPTION",
"tguid": "<tguid>",
"status": "OK",
"treatment": "RECOLLECT"
}
{
"operation": "ENROLL",
"tguid": "<tguid>",
"status": "FAILED"
}
1.3.1.8. Update Exception - Incorrect Enroll¶
This decision implies that there is an error in the reference enrollment, so the profile must be discarded. In this case, the entrant transaction will succeed and replace the reference one. The notification describing the exception treatment operation will be followed by another one, indicating the successful enrollment, as shown below:
{
"operation": "TREAT_EXCEPTION",
"tguid": "<tguid>",
"status": "OK",
"treatment": "INCORRECT_ENROLL"
}
{
"operation": "ENROLL",
"tguid": "<tguid>",
"status": "ENROLLED"
}
1.4. Unsolved Latent Match¶
Whenever performing a search against the unsolved latents database, if there is a match, the notification endpoint will receive an enrollment notification containing the reverse latent match description and pointing the UGUID of the matching UL. After that, the transaction will continue to a normal enrollment process, that will generate another enrollment notification containing the result for the search against the normal reference database, being it a successful enrollment or an exception, as shown below (for a successful enrollment):
{
"operation": "ENROLL",
"tguid": "<tguid>",
"status": "REVERSE_LATENT_MATCH",
"uguid": "<uguid>"
}
{
"operation": "ENROLL",
"tguid": "<tguid>",
"status": "ENROLLED"
}