# GBDS 5 Relational Database

## Introduction

This manual describes all tables, schemas, and information in the GBDS relational databases. GBDS uses a relational database to store metadata about people, transactions, notification groups, configuration substitutions, and exceptions.

The document is divided into four sections that describe:

* The general tables;
* The Unresolved Latents (UL) tables;
* The Notification tables;
* The GBDS configuration tables.

## General tables <a href="#general-tables" id="general-tables"></a>

The general tables are tables that store vital information for GBDS operation, such as exceptions, information about people, transaction information, and others. These tables are described below.

### gbds.people

The `people`table is intended to store the indexes of all people stored in the GBDS database and is described as follows:

<table><thead><tr><th width="100">Column</th><th width="100">Type</th><th width="100">Size</th><th width="100">Value</th><th>Additional information</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>not null</td><td>Primary key;<br><br>Private key of the relational database</td></tr><tr><td>pguid</td><td>varchar</td><td>255</td><td>not null</td><td>Personal UGUID stored in HBase</td></tr><tr><td>deleted</td><td>tinyint</td><td>1</td><td>null</td><td>Indicates whether the candidate was deleted, so that they are not included when listing operations are performed</td></tr></tbody></table>

### gbds.people\_version

The `people_version`table is intended to store information about the latest changes to a person's registration and is described as follows:

<table><thead><tr><th width="100">Column</th><th width="100">Type</th><th width="116.6666259765625">Size</th><th width="100">Value</th><th>Additional information</th></tr></thead><tbody><tr><td>version</td><td>int</td><td>11</td><td>not null</td><td>Primary key; Version index (incremental from the first change)</td></tr><tr><td>person_id</td><td>bigint</td><td>20</td><td>not null</td><td>Reference to the person<code>gbds.people.id</code></td></tr><tr><td>_timestamp</td><td>datetime</td><td>6</td><td>null</td><td>date and time timestamp for the current version of a person</td></tr><tr><td>deleted</td><td>tinyint</td><td>1</td><td>null</td><td>Indicates whether the candidate was deleted so it can be run when listing candidate operations</td></tr><tr><td>active</td><td>tinyint</td><td>1</td><td>null</td><td>Defines whether a version of a people is eligible for master record transactions</td></tr></tbody></table>

### gbds.organization

The table `organization` is responsible for storing information about organizations registered in GBDS

| Column      | Type    | Size | Value    | Additional Information                            |
| ----------- | ------- | ---- | -------- | ------------------------------------------------- |
| id          | bigint  | 20   | not null | Primary key; Uniquely identifies the organization |
| parent\_id  | bigint  | 20   | null     | Identifies the responsible organization, key;     |
| name        | varchar | 255  | not null | Organization name                                 |
| description | varchar | 1000 | not null | Description                                       |

### gbds.transactions

The `transactions`table is intended to store information about the biometric data quality analysis of a transaction.

<table><thead><tr><th width="200">Column</th><th width="100">Type</th><th width="100">Size</th><th width="100">Value</th><th>Additional Information</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>not null</td><td>Primary key; Private key of the relational database</td></tr><tr><td>tguid</td><td>varchar</td><td>255</td><td>not null</td><td>Reference to the transaction<code>transactions.tguid</code></td></tr><tr><td>pguid</td><td>varchar</td><td>255</td><td>null</td><td>UGUID of the person stored in HBase</td></tr><tr><td>active</td><td>tinyint</td><td>1</td><td>not null</td><td>Defines whether a version of a person is eligible for Master Record transactions</td></tr><tr><td>priority</td><td>enum</td><td>n/a</td><td>null</td><td>enum<code>('GOD_PRIORITY','HIGHEST_PRIORITY','HIGHER_PRIORITY','HIGH_PRIORITY','DEFAULT_PRIORITY','LOW_PRIORITY','LOWER_PRIORITY','LOWEST_PRIORITY')</code></td></tr><tr><td>created</td><td>datetime</td><td>6</td><td>null</td><td>date and time timestamp of transaction creation</td></tr><tr><td>updated</td><td>datetime</td><td>6</td><td>null</td><td>date and time timestamp of the last transaction modification</td></tr><tr><td>quality_status</td><td>enum</td><td>n/a</td><td>null</td><td>Quality analysis status (such as <code>OK</code>, <code>PENDING</code>, <code>APPROVED</code>, and others)</td></tr><tr><td>enroll_status</td><td>enum</td><td>n/a</td><td>null</td><td>Enrollment status (such as <code>ENQUEUED</code>, <code>PROCESSING</code>, <code>FAILED</code>, and others)</td></tr><tr><td>search_status</td><td>enum</td><td>n/a</td><td>null</td><td>enum<code>('ENQUEUED','PREPARED','PROCESSING','MATCH','NOT_MATCH','UNCERTAIN','MISMATCH','FAILED','PENDING','PERSON_NOT_FOUND','NONE','UL_NOT_FOUND','REFUSED','RESENT_ENROLL')</code></td></tr><tr><td>extraction_time</td><td>int</td><td>11</td><td>null</td><td>Elapsed time for template extractions</td></tr><tr><td>extraction_quality_time</td><td>int</td><td>11</td><td>null</td><td>Elapsed time for quality extractions</td></tr><tr><td>match_time</td><td>int</td><td>11</td><td>null</td><td>Elapsed matching time for this transaction</td></tr><tr><td>post_match_time</td><td>int</td><td>11</td><td>null</td><td>Elapsed time after matching for this transaction</td></tr><tr><td>total_time</td><td>int</td><td>11</td><td>null</td><td>Total operation minus queue wait time</td></tr><tr><td>transaction_type</td><td>enum</td><td>n/a</td><td>null</td><td>Transaction type.<br>enum<code>('ENROLL','UPDATE','VERIFY','IDENTIFY')</code></td></tr><tr><td>latent</td><td>tinyint</td><td>1</td><td>null</td><td>Flags whether the transaction is a latent search</td></tr><tr><td>ul</td><td>tinyint</td><td>1</td><td>null</td><td>Flags whether the transaction is a UL search</td></tr><tr><td>num_fingers</td><td>int</td><td>11</td><td>null</td><td>The number of fingerprints in the transaction</td></tr><tr><td>num_faces</td><td>int</td><td>11</td><td>null</td><td>The number of face images in the transaction (0 or 1)</td></tr><tr><td>finger_quality_extracted</td><td>tinyint</td><td>1</td><td>null</td><td>False if the fingerprints can be extracted</td></tr><tr><td>face_quality_extracted</td><td>tinyint</td><td>1</td><td>null</td><td>False if the face can be extracted in the background. True if it has already been extracted.</td></tr><tr><td>ginger_extractor_type</td><td>enum</td><td>n/a</td><td>null</td><td>Type of ginger extractor used in the transaction. Enum: <code>GRIAULE_FAST</code>, <code>GRIAULE_BASIC</code>, <code>GRIAULE_2020</code>, <code>GRIAULE_2024</code>, <code>GRIAULE_2018</code>.</td></tr><tr><td>finger_global_quality</td><td>int</td><td>11</td><td>null</td><td>Global fingerprint quality score</td></tr><tr><td>global_quality</td><td>int</td><td>11</td><td>null</td><td>Global profile quality score</td></tr><tr><td>quality_extraction_api_id</td><td>varchar</td><td>255</td><td>null</td><td>API ID that will perform or performed the quality extraction</td></tr><tr><td>quality_extraction_msg</td><td>varchar</td><td>512</td><td>null</td><td>Message related to quality extraction</td></tr><tr><td>api_id</td><td>varchar</td><td>255</td><td>null</td><td>The ID of the API instance that received the transaction</td></tr><tr><td>gbds_version</td><td>varchar</td><td>255</td><td>null</td><td>GBDS version that processed the transaction</td></tr></tbody></table>

### gbds.transaction\_fields

The `transaction_fields`table aims to store information about quality information and link it to the non-biometric information of the `fields`table.

<table><thead><tr><th width="120">Column</th><th width="100">Type</th><th width="100"> Size</th><th width="100">Value</th><th>Additional information</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>not null</td><td>Primary key; Private key of the relational database</td></tr><tr><td>fkey</td><td>varchar</td><td>255</td><td>null</td><td>Field key that describes the information contained (for example, whether it is a blood type, mother's name, date of birth, document, etc.) Reference to<code>fields.fkey</code></td></tr><tr><td>type</td><td>varchar</td><td>255</td><td>null</td><td>Type of information (search or <code>label</code>) Reference to<code>fields.type</code></td></tr><tr><td>fvalue</td><td>varchar</td><td>255</td><td>null</td><td>Effective value of the field (for example, the document number) Reference to<code>fields.fvalue</code></td></tr><tr><td>transaction_id</td><td>bigint</td><td>20</td><td>not null</td><td>Transaction Id. Reference to<code>transaction.id</code></td></tr></tbody></table>

### gbds.transaction\_fingerprint\_quality

| Column            | Type    | Size | Value    |
| ----------------- | ------- | ---- | -------- |
| transaction\_id   | bigint  | 20   | not null |
| idx               | int     | 11   | not null |
| image\_quality    | int     | 11   | null     |
| template\_quality | int     | 11   | null     |
| minutiae\_count   | int     | 11   | null     |
| blank             | varchar | 100  | null     |
| contrast          | varchar | 100  | null     |
| fingerArea        | varchar | 100  | null     |
| fingerCenterX     | varchar | 100  | null     |
| fingerCenterY     | varchar | 100  | null     |
| fingerExtentX     | varchar | 100  | null     |
| fingerExtentY     | varchar | 100  | null     |
| hasjoint          | varchar | 100  | null     |
| \_\_index         | varchar | 100  | null     |
| marginBiteEast    | varchar | 100  | null     |
| marginBiteNorth   | varchar | 100  | null     |
| marginBiteSouth   | varchar | 100  | null     |
| marginBiteWest    | varchar | 100  | null     |
| nfiq              | varchar | 100  | null     |
| orientation       | varchar | 100  | null     |
| sizeX             | varchar | 100  | null     |
| sizeY             | varchar | 100  | null     |

### gbds.transaction\_face\_quality

<table><thead><tr><th width="300">Column</th><th>Type</th><th>Size</th><th>Value</th></tr></thead><tbody><tr><td>transaction_id</td><td>bigint</td><td>20</td><td>not null</td></tr><tr><td>idx</td><td>int</td><td>11</td><td>not null</td></tr><tr><td>image_quality</td><td>int</td><td>11</td><td>null</td></tr><tr><td>template_quality</td><td>int</td><td>11</td><td>null</td></tr><tr><td>autoBrightness</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>bgBelowPictureQuality</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>bgBlueStandardDeviation</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>bgDarknessQuality</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>bgGreenStandardDeviation</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>bgRedStandardDeviation</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>bgUniformityQuality</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>blurCompliance</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>busyBackground</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>busyBackgroundInCropped</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>cropContainmentError</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>eyesLookDown</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>eyesLookLeft</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>eyesLookRight</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>eyesLookUp</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>eyesObstruction</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>eyesTooClosed</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>eyesTooOpen</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>faceDown</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>faceLeft</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>faceObstruction</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>faceOrientationPitchCompliance</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>faceOrientationRollAngle</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>faceOrientationYawCompliance</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>faceRight</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>faceUp</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>glasses</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>grayscaleSpan</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>hat</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>heavyGlasses</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>icaoCompliance</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>leftEyeX</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>leftEyeY</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>mouthObstruction</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>mouthOpen</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>obstruction</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>openMouth</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>pictureHeight</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>pictureWidth</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>pixelated</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>redEye</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>result</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>rightEyeX</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>rightEyeY</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>saturated</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>saturationGrayscaleDistribGrade</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>saturationNumGrayTones</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>saturationOverExposure</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>shadows</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>skinColorCompliance</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>smile</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>smilingMouth</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>spoof</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>spoofGrade</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>tiltAngle</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>tooDark</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>unnaturalSkinColor</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>visibleTeeth</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>wrongFacePose</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>wrongShoulderPoseLeft</td><td>varchar</td><td>100</td><td>null</td></tr><tr><td>wrongShoulderPoseRight</td><td>varchar</td><td>100</td><td>null</td></tr></tbody></table>

### gbds.fields

The table `fields`       is intended to store the non-biometric information of a person, being linked to the `transaction`tables `people_version`. It is described as follows:

<table><thead><tr><th width="120">Column</th><th width="100">Type</th><th width="100">Size</th><th width="100">Value</th><th>Additional Information</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>not null</td><td>Primary key; Private key of the relational database</td></tr><tr><td>fkey</td><td>varchar</td><td>255</td><td>null</td><td>Field key that describes the information contained (for example, whether it is a blood type, mother's name, date of birth, document, etc.)</td></tr><tr><td>field_type</td><td>varchar</td><td>255</td><td>null</td><td>Type of information (search or <code>label</code>)</td></tr><tr><td>fvalue</td><td>varchar</td><td>255</td><td>null</td><td>Effective value of the field (for example, the document number)</td></tr><tr><td>person_id</td><td>bigint</td><td>20</td><td>not null</td><td>Reference to the person<code>person.id</code></td></tr><tr><td>person_version</td><td>int</td><td>11</td><td>not null</td><td>Reference to the person<code>people_version.version</code></td></tr></tbody></table>

### gbds.exceptions

The table `exceptions`is intended to store information about any biometric exception and its handling. It is described below:

<table><thead><tr><th width="185">Column</th><th width="100">Type</th><th width="100">Size</th><th width="100">Value</th><th>Additional Information</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>not null</td><td>Primary key; Private key of the relational database</td></tr><tr><td>aguid</td><td>varchar</td><td>255</td><td>not null</td><td>Stored exception from HBase UGUID</td></tr><tr><td>comments</td><td>varchar</td><td>255</td><td>null</td><td>Any comments provided when handling the exception</td></tr><tr><td>_timestamp</td><td>datetime</td><td>6</td><td>null</td><td>date and time timestamp for exception creation</td></tr><tr><td>exception_status</td><td>enum</td><td>n/a</td><td>not null</td><td>enum <code>('ANALYSIS', 'DIFFERENT_FINGERS', 'SAME_FINGERS', 'INCORRECT_ENROLL', 'RECOLLECT', 'MERGE_TRANSACTIONS', 'APPROVE', 'REJECT', 'ERROR', 'REFUSED')</code></td></tr><tr><td>target</td><td>enum</td><td>n/a</td><td>not null</td><td>enum<code>('BIOMETRIC','BIOMETRIC_INCONCLUSIVE','BIOMETRIC_MISMATCH','BIOGRAPHIC')</code>;<br>Default: <code>BIOMETRIC</code></td></tr><tr><td>priority</td><td>tinyint</td><td>1</td><td>not null</td><td>Reference exception priority, with default value 0</td></tr><tr><td>user</td><td>varchar</td><td>255</td><td>null</td><td>User identification responsible for handling the exception</td></tr><tr><td>transaction_id_50</td><td>bigint</td><td>20</td><td>not null</td><td>Foreign key: Reference to the transaction<code>transactions.id</code></td></tr><tr><td>reference_person_id</td><td>bigint</td><td>20</td><td>not null</td><td>Foreign key: Reference to the reference person<code>people.id</code></td></tr><tr><td>trusted_master_record</td><td>tinyint</td><td>1</td><td>null</td><td>Flag for using transaction data in future analyses</td></tr><tr><td>reference_indexes</td><td>varchar</td><td>1000</td><td>null</td><td></td></tr><tr><td>exception_group_id</td><td>int</td><td>11</td><td>not null</td><td>ID of the exception group it belongs to</td></tr><tr><td>fusion_score</td><td>int</td><td>11</td><td>not null</td><td>Stores the score evaluated in the fusion</td></tr><tr><td>fusion_decision</td><td>enum</td><td>n/a</td><td>null</td><td>Stores the decision taken by the fusion rules;<br>enum<code>('HIT','NO_HIT','UNCERTAIN','UNCERTAIN_EXPERT','MISMATCH','ERROR')</code></td></tr></tbody></table>

### gbds.exception\_decision

The table `exception_decision`is intended to store information about decisions regarding an exception. It is described below:

<table><thead><tr><th width="110">Column</th><th width="100">Type</th><th width="100">Size</th><th width="100">Value</th><th>Additional Information</th></tr></thead><tbody><tr><td>candidate_id</td><td>bigint</td><td>20</td><td>not null</td><td>Identifies the exception candidate;<br>Forms a primary key with user</td></tr><tr><td>user</td><td>varchar</td><td>100</td><td>not null</td><td>User responsible for handling the exception</td></tr><tr><td>locked_timestamp</td><td>datetime</td><td>6</td><td>not null</td><td>Date when the exception was allocated</td></tr><tr><td>decision_timestamp</td><td>datetime</td><td>6</td><td>not null</td><td>Date when the decision was generated</td></tr><tr><td>decision</td><td>enum</td><td>n/a</td><td>not null</td><td>Decision taken for the exception<br>enum<code>('HIT','NO_HIT','UNCERTAIN','UNCERTAIN_EXPERT','ERROR')</code></td></tr></tbody></table>

### gbds.exception\_candidates

The table `exception_candidates`is intended to store information about the candidates for a biometric exception. It is described below:

<table><thead><tr><th width="185">Column</th><th width="102">Type</th><th width="100">Size</th><th width="89.0909423828125">Value</th><th>Additional Information</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>not null</td><td>Primary key; Private key of the relational database</td></tr><tr><td>exception_id</td><td>bigint</td><td>20</td><td>not null</td><td>Exception ID</td></tr><tr><td>reference_transaction_id</td><td>bigint</td><td>20</td><td>null</td><td>Reference transaction ID</td></tr><tr><td>query_index</td><td>int</td><td>11</td><td>not null</td><td>Incoming biometric index</td></tr><tr><td>reference_index</td><td>int</td><td>11</td><td>not null</td><td>Reference biometric index</td></tr><tr><td>query_quality</td><td>int</td><td>11</td><td>null</td><td>Incoming biometric quality</td></tr><tr><td>reference_quality</td><td>int</td><td>255</td><td>null</td><td>Reference biometric quality</td></tr><tr><td>score</td><td>int</td><td>20</td><td>null</td><td>Corresponding matching score</td></tr><tr><td>locked_user</td><td>varchar</td><td>20</td><td>null</td><td>User allocated to handle the exception</td></tr><tr><td>locked_timestamp</td><td>datetime</td><td>20</td><td>null</td><td>Date when the exception was allocated</td></tr><tr><td>locked_timeout</td><td>datetime</td><td>11</td><td>null</td><td>Date when the exception will be deallocated due to inactivity</td></tr><tr><td>decision</td><td>enum</td><td>n/a</td><td>null</td><td>enum<code>(HIT, NO_HIT, UNCERTAIN, UNCERTAIN_EXPERT, ERROR)</code></td></tr><tr><td>minutiae</td><td>mediumblob</td><td>1</td><td>n/a</td><td></td></tr></tbody></table>

### gbds.exception\_group

The table `exception_group`is intended to store information about the candidates for a biometric exception. It is described below:

<table><thead><tr><th width="188.6363525390625">Column</th><th width="103.54547119140625">Type</th><th width="104.3636474609375">Size</th><th width="111.6363525390625">Value </th><th>Additional Information</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>not null</td><td>Primary key; Uniquely identifies the exception group</td></tr><tr><td>gguid</td><td>varchar</td><td>100</td><td>not null</td><td>UGUID of the exception group stored in HBase</td></tr><tr><td>tguid</td><td>varchar</td><td>100</td><td>not null</td><td>UGUID of the transaction stored in HBase</td></tr><tr><td>target</td><td>enum</td><td>n/a</td><td>not null</td><td>Exception type to which the group refers.<br>enum<code>('BIOMETRIC','BIOMETRIC_INCONCLUSIVE','BIOMETRIC_MISMATCH','BIOGRAPHIC')</code></td></tr><tr><td>decision</td><td>enum</td><td>n/a</td><td>null</td><td>Decision taken for exception handling<br>enum<code>('APPROVE','REJECT','KEEP')</code></td></tr><tr><td>status</td><td>enum</td><td>n/a</td><td>not null</td><td>Status of the exception handling process<br>enum<code>('ANALYSIS','PENDING','READY','PROCESSING','DONE','REFUSED','ERROR')</code></td></tr><tr><td>priority</td><td>tinyint</td><td>1</td><td>not null</td><td>Reference exception priority, with default value 0</td></tr><tr><td>created</td><td>datetime</td><td>6</td><td>not null</td><td>Group creation timestamp</td></tr><tr><td>updated</td><td>timestamp</td><td>n/a</td><td>not null</td><td>Creation timestamp </td></tr><tr><td>user</td><td>varchar</td><td>100</td><td>null</td><td>User who handled the group</td></tr><tr><td>message</td><td>varchar</td><td>4000</td><td>null</td><td>Message left after handling</td></tr><tr><td>comments</td><td>varchar</td><td>4000</td><td>null</td><td>Comments to be left in case of lights out</td></tr><tr><td>locked_user</td><td>varchar</td><td>100</td><td>null</td><td>User allocated to handle the group</td></tr><tr><td>locked_timestamp</td><td>datetime</td><td>6</td><td>null</td><td>Date when the exception group was allocated</td></tr><tr><td>locked_timeout</td><td>datetime</td><td>6</td><td>null</td><td>Date when the allocation will expire if it is not handled</td></tr><tr><td>decision_parameters</td><td>varchar</td><td>5000</td><td>null</td><td>Decision parameters used (id, values and labels)</td></tr><tr><td>new_tguid</td><td>varchar</td><td>100</td><td>null</td><td></td></tr><tr><td>refused_status</td><td>enum</td><td>n/a</td><td>null</td><td>enum<code>('CREATED','REMOVED','READY_TO_RESEND','SENDING','SENT','ERROR')</code></td></tr><tr><td>refused_new_tguid</td><td>varchar</td><td>100</td><td>null</td><td>New TGUID generated in case of REFUSED</td></tr><tr><td>lights_out_criteria</td><td>varchar</td><td>5000</td><td>null</td><td>Indicates what was considered in Lights Out<br>EX: {"matchedBiographics":["name","date of birth","affiliation"]}</td></tr><tr><td>lights_out_status</td><td>enum</td><td>n/a</td><td>null</td><td>enum <code>('READY','ANALYSING','KEEP','AUTO_TREAT','ERROR')</code></td></tr></tbody></table>

### gbds.exception\_group\_organizations

The exception\_group\_organizations table is intended to store information about organizations related to an exception group.

<table><thead><tr><th width="120">Column</th><th width="100">Type</th><th width="100">Size</th><th width="100">Value</th><th>Additional Information</th></tr></thead><tbody><tr><td>exception_group_id</td><td>bigint</td><td>20</td><td>not null</td><td>Exception group ID;<br>Forms a primary key with <code>exception_id</code></td></tr><tr><td>exception_id</td><td>bigint</td><td>20</td><td>not null</td><td>Exception ID to which the organization refers;<br>Forms a primary key with <code>exception_group_id</code>;</td></tr><tr><td>organization</td><td>varchar</td><td>100</td><td>not null</td><td>Organization name</td></tr><tr><td>origin</td><td>enum</td><td>n/a</td><td>not null</td><td>Refers to the organization origin type within the exception<br><code>DEFAULT 'BOTH'</code><br>enum<code>('ENTRANT','REFERENCE','BOTH')</code><br><br><br><br><br><br><br></td></tr></tbody></table>

### gbds.exception\_group\_refused

The table `exception_group_refused` is intended to store information about refused exception groups and the groups responsible for the refusal.

<table><thead><tr><th width="110">Column</th><th width="100">Type</th><th width="100">Size</th><th width="100">Value</th><th>Additional Information</th></tr></thead><tbody><tr><td>exception_group_id</td><td>bigint</td><td>20</td><td>not null</td><td>Reference exception group ID</td></tr><tr><td>refused_exception_group_id</td><td>bigint</td><td>20</td><td>not null</td><td>Refused exception group ID</td></tr></tbody></table>

### gbds.key\_format

The gbds.key\_format table is intended to store keys and formats for key validation.

<table><thead><tr><th width="110">Column</th><th width="100">Type</th><th width="100">Size</th><th width="100">Value</th><th>Additional Information</th></tr></thead><tbody><tr><td>key_id</td><td>varchar</td><td>255</td><td>not null</td><td>Primary key;<br>Defines the key ID</td></tr><tr><td>format_type</td><td>enum</td><td>6</td><td>not null</td><td>Default <code>ALPHANUMERIC</code><br>enum<code>('TITULO','CPF','ALPHANUMERIC','NUMERIC','ALPHABETIC','REGEX')</code></td></tr><tr><td>regex</td><td>varchar</td><td>20</td><td>null</td><td></td></tr><tr><td>min_length</td><td>int</td><td>20</td><td>null</td><td>Defines the minimum key size</td></tr><tr><td>max_length</td><td>int</td><td>Up to 4Gb</td><td>null</td><td>Defines the maximum key size</td></tr></tbody></table>

### gbds.operation\_log

The gbds.operation\_log table is used to store operation logs.

<table><thead><tr><th width="100">Column</th><th width="100">Type</th><th width="100">Size</th><th width="100">Value</th><th>Additional Information</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>not null</td><td>Internal identification ID</td></tr><tr><td>guid</td><td>varchar</td><td>100</td><td>null</td><td>Universal unique identifier</td></tr><tr><td>user</td><td>varchar</td><td>100</td><td>null</td><td>User responsible for the action</td></tr><tr><td>log_timestamp</td><td>datetime</td><td>-</td><td>not null</td><td>Log creation date</td></tr><tr><td>log_type</td><td>enum</td><td>n/a</td><td>not null</td><td>enum('EXCEPTION','EXCEPTION_BIOMETRIC','EXCEPTION_GROUP','TRANSACTION)</td></tr><tr><td>operation</td><td>enum</td><td>n/a</td><td>not null</td><td>enum('UNKNOWN','CONNECT','DISCONNECT','AUTHENTICATE','ENROLL','EXTERNAL_AUTHENTICATE','BATCH_ENROLL','REGISTER_SEARCH','SEARCH','DELETE','GET_RESULT','CLOSE_SESSION','FILTER','COUNT_ANOMALIES','FIND_ANOMALIES','GET_ANOMALY','ASSIGN_ANOMALY','UNASSIGN_ANOMALY','TRUST_ENROLL','GET_TRANSACTION','CHANGE_PRIORITY','ADD_TO_REFERENCE','REMOVE_FROM_REFERENCE','REMOVE_KEYS','GET_PEOPLE_TRANSACTIONS','ANOMALY_ENROLL','GET_EXCEPTION_RESULT','QUALITY_ANALYSIS','REGISTER_ENROLL','STOP_SERVICE','REGISTER_UL_BIOMETRIC','REMOVE_UL_BIOMETRIC','UPDATE_PERSON_BIOMETRIC','DISABLE_PERSON_TRANSACTION','CREATE_EXCEPTION','CREATE_EXCEPTION_GROUP','PRIORITY_EXCEPTION','PRIORITY_EXCEPTION_GROUP','TREAT_EXCEPTION','TREAT_EXCEPTION_BIOMETRIC','TREAT_EXCEPTION_GROUP','CHANGE_REFUSED_STATUS','RESEND_REFUSED','LIGHTS_OUT')</td></tr><tr><td>status</td><td>enum</td><td>n/a</td><td>null</td><td>enum('ANALYSIS','READY','PROCESSING','DONE','REFUSED','PENDING','ERROR','ENQUEUED','OK','NOT_FINAL','BIOMETRIC','BIOMETRIC_INCONCLUSIVE','BIOMETRIC_MISMATCH','BIOGRAPHIC','APPROVE','REJECT','LIGHTS_OUT')</td></tr><tr><td>bio_index</td><td>int</td><td>11</td><td>null</td><td>Biometric index</td></tr><tr><td>decision</td><td>enum</td><td>n/a</td><td>null</td><td>enum<code>('UNCERTAIN','UNCERTAIN_EXPERT','NO_HIT','HIT','MISMATCH','ERROR','APPROVE','REJECT','KEEP','CREATED','REMOVED','READY_TO_RESEND')</code></td></tr><tr><td>message</td><td>varchar</td><td>1000</td><td>null</td><td>Description of the operation to which the operation refers</td></tr><tr><td>tguid</td><td>varchar</td><td>100</td><td>null</td><td>Unique transaction identifier</td></tr><tr><td>pguid</td><td>varchar</td><td>100</td><td>null</td><td>Unique identifier of the profile to which the operation refers</td></tr><tr><td>kept_tguids</td><td>varchar</td><td>1000</td><td>null</td><td>TGUIDs to be kept by the Lights Out KEEP operation</td></tr></tbody></table>

### gbds.apis

The `apis`is used by GBDS to manage multiple active APIs at the same time.

<table><thead><tr><th width="100">Column</th><th width="100">Type</th><th width="100">Size</th><th width="100">Value</th><th>Additional Information</th></tr></thead><tbody><tr><td>api_id</td><td>varchar</td><td>255</td><td>not null</td><td>Exclusive API instance ID</td></tr><tr><td>hostname</td><td>varchar</td><td>255</td><td>not null</td><td>Host name of the node where the API is running</td></tr><tr><td>port</td><td>int</td><td>11</td><td>not null</td><td>Port where the API is running</td></tr><tr><td>type</td><td>varchar</td><td>255</td><td>null</td><td>API instance type (LEADER, RUNNER or null)</td></tr></tbody></table>

At API startup, each API will look for itself in this table. If it is not found by host name/IP and port, it inserts itself into the table with a GUID as *api-id* and *null type* , which means it is not ready for quality extraction. Changes applied directly to this table will be analyzed every 15 minutes.

## Unsolved Latent tables (UL) <a href="#unsolved-latent-ul-tables" id="unsolved-latent-ul-tables"></a>

The Unsolved Latent tables are used to store information about UL data and candidates. The tables are described below.

### gbds.ul

The table `ul`was designed to store all GBDS ULs and is described as follows:

<table><thead><tr><th width="150">Column</th><th width="100">Type</th><th width="100">Size</th><th width="100">Value</th><th>Additional Information</th></tr></thead><tbody><tr><td>uguid</td><td>varchar</td><td>255</td><td>not null</td><td>Primary key; UGUID stored in HBase</td></tr><tr><td>ul_status</td><td>varchar</td><td>255</td><td>not null</td><td><br><code>UNSOLVED</code>or <code>SOLVED</code>; HBase replicates this status</td></tr><tr><td>creation_time</td><td>timestamp</td><td>4</td><td>not null</td><td><code>current_timestamp</code>by default</td></tr><tr><td>person_pguid</td><td>varchar</td><td>255</td><td>null</td><td>PGUID of the corresponding person when<code>SOLVED</code></td></tr><tr><td>person_tguid</td><td>varchar</td><td>255</td><td>null</td><td>TGUID of the corresponding person when<code>SOLVED</code></td></tr><tr><td>fragment_id</td><td>varchar</td><td>255</td><td>null</td><td>Original fragment ID for the fragment that generated the UL</td></tr><tr><td>fragment_case_id</td><td>varchar</td><td>255</td><td>null</td><td>Original case ID for the fragment that generated the UL</td></tr><tr><td>fragment_index</td><td>int</td><td>11</td><td>null</td><td>Fragment index for the UL. By default, the index is set to <code>-1</code>(unknown index, any index)</td></tr><tr><td>analysis_user</td><td>varchar</td><td>255</td><td>null</td><td>User responsible for the UL analysis</td></tr><tr><td>analysis_timestamp</td><td>timestamp</td><td>4</td><td>null</td><td>analysis date and time timestamp</td></tr><tr><td>group_guid</td><td>varchar</td><td>255</td><td>not null</td><td>Grouping GUID (to list linked ULs)</td></tr></tbody></table>

### gbds.ul\_candidates

The table `ul_candidates` was designed to store the candidates of each UL that GBDS keeps after any *REVERSE LATENT MATCH* performed on enrollments that generated a *match* with a UL, and is described as follows:

<table><thead><tr><th width="110">Column</th><th width="100">Type</th><th width="100">Size</th><th width="100">Value </th><th>Additional Information</th></tr></thead><tbody><tr><td>ul_uguid</td><td>varchar</td><td>255</td><td>not null</td><td>Primary key; UL UGUID</td></tr><tr><td>person_pguid</td><td>varchar</td><td>255</td><td>not null</td><td>Primary key; candidate PGUID</td></tr><tr><td>person_tguid</td><td>varchar</td><td>255</td><td>not null</td><td>Primary key; candidate TGUID</td></tr><tr><td>person_index</td><td>int</td><td>11</td><td>not null</td><td>Primary key; candidate fingerprint</td></tr><tr><td>score</td><td>int</td><td>11</td><td>not null</td><td>Corresponding matching score for the candidate</td></tr><tr><td>deleted</td><td>tinyint</td><td>1</td><td>not null</td><td><code>0</code>by default, indicates whether the candidate was excluded to be excluded when performing candidate listing operations</td></tr><tr><td>minutiae</td><td>longblob</td><td>Up to 4Gb</td><td>null</td><td>JSON serialization containing the corresponding details. It is a list with the following structure:<br> - <code>queryIndex</code>, <code>int</code> <br>- <code>referenceIndex</code>,<code>int</code></td></tr></tbody></table>

## Notification tables

The notification tables are used to store data for auditing purposes, such as emails, people to be notified, and groups.

### gbds.notifications

The table `gbds.notifications` was designed to store information related to GBDS operation notifications

<table><thead><tr><th width="100">Column</th><th width="100">Type</th><th width="100">Size</th><th width="100">Value</th><th>Additional Information</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>not null</td><td>Auto-increment internal index;<br>Primary key;</td></tr><tr><td>nguid</td><td>varchar</td><td>40</td><td>not null</td><td>Unique notification identifier</td></tr><tr><td>tguid</td><td>varchar</td><td>40</td><td>not null</td><td>Unique identifier of the transaction responsible for the notification</td></tr><tr><td>created</td><td>datetime</td><td>6</td><td>not null</td><td>Notification creation date-time timestamp</td></tr><tr><td>operation</td><td>enum</td><td>n/a</td><td>null</td><td>enum<code>('UNKNOWN','CONNECT','DISCONNECT','AUTHENTICATE','ENROLL','EXTERNAL_AUTHENTICATE','BATCH_ENROLL','REGISTER_SEARCH','SEARCH','DELETE','GET_RESULT','CLOSE_SESSION','FILTER','COUNT_ANOMALIES','FIND_ANOMALIES','GET_ANOMALY','ASSIGN_ANOMALY','UNASSIGN_ANOMALY','TRUST_ENROLL','GET_TRANSACTION','CHANGE_PRIORITY','ADD_TO_REFERENCE','REMOVE_FROM_REFERENCE','REMOVE_KEYS','GET_PEOPLE_TRANSACTIONS','ANOMALY_ENROLL','GET_EXCEPTION_RESULT','QUALITY_ANALYSIS','REGISTER_ENROLL','STOP_SERVICE','REGISTER_UL_BIOMETRIC','REMOVE_UL_BIOMETRIC','UPDATE_PERSON_BIOMETRIC','DISABLE_PERSON_TRANSACTION','CREATE_EXCEPTION','CREATE_EXCEPTION_GROUP','PRIORITY_EXCEPTION','PRIORITY_EXCEPTION_GROUP','TREAT_EXCEPTION','TREAT_EXCEPTION_BIOMETRIC','TREAT_EXCEPTION_GROUP','CHANGE_REFUSED_STATUS','RESEND_REFUSED','LIGHTS_OUT')</code></td></tr><tr><td>status</td><td>varchar</td><td>255</td><td>null</td><td>Status of the operation described in operation</td></tr><tr><td>sender</td><td>varchar</td><td>255</td><td>null</td><td>Module responsible for the notification</td></tr><tr><td>uguid</td><td>varchar</td><td>40</td><td>null</td><td>User identifier</td></tr><tr><td>pguid</td><td>varchar</td><td>40</td><td>null</td><td>PGUID to which the operation refers</td></tr><tr><td>new_tguid</td><td>varchar</td><td>40</td><td>null</td><td>New TGUID generated, for example, when creating an enroll</td></tr><tr><td>enroll_pguid</td><td>varchar</td><td>40</td><td>null</td><td>-</td></tr><tr><td>treatment</td><td>varchar</td><td>100</td><td>null</td><td>Treatment in the case of Lights Out analysis</td></tr><tr><td>_update</td><td>tinyint</td><td>1</td><td>null</td><td>Update flag</td></tr><tr><td>trusted</td><td>tinyint</td><td>1</td><td>null</td><td>Truted enroll/update flag</td></tr><tr><td>origin</td><td>enum</td><td>n/a</td><td>null</td><td>enum<code>('API','GBDS')</code></td></tr><tr><td>additional_data</td><td>mediumblob</td><td>-</td><td>null</td><td>Relevant additional data (GGUID, comments, etc.)</td></tr><tr><td>external_ids</td><td>mediumblob</td><td>-</td><td>null</td><td>External IDs and their values;<br>{"name":"protocol", "key":"000000000"}</td></tr><tr><td>related_external_ids</td><td>mediumblob</td><td>-</td><td>null</td><td>Related external IDs</td></tr><tr><td>kept_tguids</td><td>mediumblob</td><td>-</td><td>null</td><td>TGUIDs to be kept in case of Lights Out</td></tr></tbody></table>

###

### gbds.notify\_user

The table `notify_user` was designed to store the data of the user authenticated by gbds.

<table><thead><tr><th width="100">Column</th><th width="100">Type</th><th width="100">Size</th><th width="100">Value</th><th>Additional Information</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>not null</td><td>Primary key; Unique user ID.</td></tr><tr><td>username</td><td>varchar</td><td>255</td><td>not null</td><td>authenticated gbds username</td></tr></tbody></table>

### gbds.notify\_group

The table `notify_group`was designed to store notification group information.

<table><thead><tr><th width="100">Column</th><th width="100">Type</th><th width="100">Size</th><th width="100">Value</th><th>Additional Information</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>not null</td><td>Primary key;</td></tr><tr><td>name</td><td>varchar</td><td>255</td><td>not null</td><td>Group name</td></tr><tr><td>enabled</td><td>tinyint</td><td>1</td><td>not null</td><td>Defines whether the group will be active or not</td></tr></tbody></table>

### gbds.notify\_group\_email

The table `notify_group_email` was designed to store the emails of a given group.

<table><thead><tr><th width="130">Column</th><th width="100">Type</th><th width="100">Size</th><th width="100">Value</th><th>Additional Information</th></tr></thead><tbody><tr><td>notify_group_id</td><td>bigint</td><td>20</td><td>not null</td><td>Primary key; Group ID.</td></tr><tr><td>email</td><td>varchar</td><td>255</td><td>not null</td><td>Primary key; <br>Email that belongs to the group</td></tr></tbody></table>

### gbds.notify\_user\_group

The table `notify_user_group` was designed to store information about which group a given user belongs to.

<table><thead><tr><th width="130">Column</th><th width="100">Type</th><th width="100">Size</th><th width="100">Value</th><th>Additional Information</th></tr></thead><tbody><tr><td>notify_user_id</td><td>bigint</td><td>20</td><td>not null</td><td>Primary key; Reference to the user<code>notify_user.id</code></td></tr><tr><td>notify_group_id</td><td>bigint</td><td>20</td><td>not null</td><td>Primary key; Reference to the group<code>notify_group_email.notify_group.id</code></td></tr></tbody></table>

### gbds.people\_transparency

The table `people_transparency` was designed to store information about a given person and which actions are taken when that person is searched.

<table><thead><tr><th width="100">Column</th><th width="100">Type</th><th width="100">Size</th><th width="100">Value</th><th>Additional Information</th></tr></thead><tbody><tr><td>id</td><td>bigint</td><td>20</td><td>not null</td><td>Primary key;</td></tr><tr><td>pguid</td><td>varchar</td><td>255</td><td>not null</td><td>Reference to the person<code>people.pguid</code></td></tr><tr><td>enabled</td><td>tinyint</td><td>1</td><td>not null</td><td>Reference to the person<code>people.pguid</code></td></tr><tr><td>action</td><td>varchar</td><td>255</td><td>null</td><td>Action to be taken</td></tr></tbody></table>

### gbds.people\_transparency\_group

The table `people_transparency_group` was designed to store information about the groups to which a person belongs.

<table><thead><tr><th width="180">Column</th><th width="100">Type</th><th width="100">Size</th><th width="100">Value</th><th>Additional Information</th></tr></thead><tbody><tr><td>people_transparency_id</td><td>bigint</td><td>20</td><td>not null</td><td>Primary key; Reference to people_transparency's<code>people_transparency.id</code></td></tr><tr><td>notify_group_id</td><td>bigint</td><td>20</td><td>not null</td><td>Primary key; Reference to the group<code>notify_group_email.notify_group.id</code></td></tr></tbody></table>

## GBDS settings tables (gbds.settings)

GBDS uses a relational database to store some API and GBDS settings. The settings table is a special table designed to control certain GBDS and GBDS API settings. These settings are stored in the `gbds.settings`table. The table can contain settings present in the GBDS API, in GBDS, or in both, following the schema below:

<table><thead><tr><th width="100">Type</th><th width="100">Type</th><th width="100">Size</th><th width="100">Value</th><th>Additional Information</th></tr></thead><tbody><tr><td>skey</td><td>varchar</td><td>255</td><td>not null</td><td>Primary key. Parameter key name.</td></tr><tr><td>stype</td><td>varchar</td><td>50</td><td>not null</td><td>Source of the parameter. API or GBDS</td></tr><tr><td>svalue</td><td>varchar</td><td>4096</td><td>null</td><td>Parameter value</td></tr><tr><td>description</td><td>varchar</td><td>4096</td><td>null</td><td>Parameter description</td></tr><tr><td>stimestamp</td><td>datetime</td><td>6</td><td>not null</td><td>Timestamp</td></tr><tr><td>host</td><td>varchar</td><td>1024</td><td>null</td><td>Host name of a node</td></tr></tbody></table>

All settings found in the table will be written to the respective file, `gbdsapi.properties`for both the GBDS API and `application.conf`for GBDS, every 15 minutes. In addition, all settings updated in memory, both in the API and in GBDS, will be propagated.

{% hint style="info" %}
The parameter value defined in the `gbds.settings`table will be propagated to ALL nodes.
{% endhint %}

This feature is controlled by a configuration parameter in the table, `gbds.rdbSystemConfiguration.enabled`. This parameter will allow overriding the configuration values of GBDS and the API. Setting the parameter value to `BOTH`will cause the GBDS and API settings to be overridden.

| gbds.settings / File configuration key                                | Type |
| --------------------------------------------------------------------- | ---- |
| gbscluster.min.quality                                                | API  |
| gbds.enroll.fingerprints.min-nr-template                              | API  |
| gbds.enroll.face.min-nr-template                                      | API  |
| gbds.enroll.iris.min-nr-template                                      | API  |
| gbds.enroll.palmprint.min-nr-template                                 | API  |
| gbds.enroll.newborn-palmprint.min-nr-template                         | API  |
| gbscluster.enroll.fingerprints.verify.matchthreshold                  | API  |
| gbscluster.update.min.quality                                         | API  |
| gbds.transparency.search.identify.request.notify.enabled              | API  |
| gbds.transparency.search.identify.result.actions.enabled              | API  |
| gbds.api.logLevel                                                     | API  |
| gbds.extraction.service                                               | API  |
| gbds.extraction.service.face.count                                    | API  |
| gbds.extraction.service.ginger.count                                  | API  |
| gbds.extraction.service.girl.count                                    | API  |
| gbds.extraction.service.hostname                                      | API  |
| gbds.extraction.service.initialPort                                   | API  |
| gbds.extraction.service.logLevel                                      | API  |
| gbds.extraction.service.maxTries                                      | API  |
| gbds.extraction.service.linkLibSegfault                               | API  |
| gbds.extraction.quality.service                                       | API  |
| gbds.extraction.quality.service.fillTransactionQualityPropertiesTable | API  |
| gbds.faces.extraction.quality.api                                     | API  |
| gbds.faces.extraction.quality.background                              | API  |
| gbds.fingerprints.extraction.quality.api                              | API  |
| gbds.fingerprints.extraction.quality.background                       | API  |
| gbds.extraction.quality.service.finger.count                          | API  |
| gbds.extraction.quality.service.face.count                            | API  |
| gbds.extraction.quality.service.initialPort                           | API  |
| gbds.extraction.quality.service.logLevel                              | API  |
| gbds.extraction.quality.service.timeout                               | API  |
| gbds.extraction.quality.service.hostname                              | API  |
| gbds.extraction.quality.service.maxTries                              | API  |
| gbds.extraction.quality.service.linkLibSegfault                       | API  |
| gbds.extraction.quality.service.rows-on-select                        | API  |
| gbds.extraction.quality.service.submitted-queue-factor                | API  |
| gbds.enroll.face.min.quality                                          | API  |
| gbds.update.face.min.quality                                          | API  |
| gbds.monitor.url                                                      | API  |
| gbds.template.face.multiplicity                                       | API  |
| gbds.biographicBase.enabled                                           | API  |
| gbds.biographicBase.endpoints                                         | API  |
| gbds.biographicBase.get.timeout.ms                                    | API  |
| gbds.biographicBase.list.timeout.ms                                   | API  |
| gbds.biographicBase.logLevel                                          | API  |
| gbds.biographicBase.clientID                                          | API  |
| gbds.biographicBase.clientSecret                                      | API  |
| gbds.biographicBase.lookAllServers                                    | API  |
| gbscluster.fingerprints.extraction.enroll.type                        | API  |
| gbscluster.fingerprints.extraction.verify.type                        | API  |
| gbds.update.exception.reextract                                       | API  |
| gbds.update.exception.reextract.save                                  | API  |
| gbds.biographicBase.autoUpdate                                        | API  |
| gbds.biographicBase.sendPguidAsKey                                    | API  |
| gbds.biographicBase.sendTguidAsKey                                    | API  |
| gbds.log.diagnose                                                     | GBDS |
| gbds.ul.boot.scan.enabled                                             | GBDS |
| gbds.boot.scan.ignoreErrorsOnRegion                                   | GBDS |
| gbds.boot.matcher.creation.sleepTime.ms                               | GBDS |
| gbds.biometric.fingerprint.identify.threshold                         | GBDS |
| gbds.biometric.fingerprint.exception.threshold                        | GBDS |
| gbds.biometric.fingerprint.exception.enabled                          | GBDS |
| gbds.biometric.fingerprint.exception.enroll.min-matches-for-exception | GBDS |
| gbds.biometric.face.identify.threshold                                | GBDS |
| gbds.biometric.face.exception.threshold                               | GBDS |
| gbds.peopleList.countFromRDB                                          | GBDS |
| gbds.biometric.face.enabled.threshold                                 | GBDS |
| gbds.driver.logLevel                                                  | GBDS |
| gbds.log.loadUnload                                                   | GBDS |
| gbds.template.memory.format                                           | GBDS |
| gbds.match.service.enabled                                            | GBDS |
| gbds.match.service.initialPort                                        | GBDS |
| gbds.match.service.logLevel                                           | GBDS |
| gbds.match.service.timeout                                            | GBDS |
| gbds.match.service.templateSend.parallelByModality                    | GBDS |
| gbds.match.service.linkLibSegfault                                    | GBDS |
| gbds.match.service.maxTries                                           | GBDS |
| gbds.match.service.maxConnectionErrors                                | GBDS |
| gbds.memory-monitor                                                   | GBDS |
| gbds.watchdog.interval                                                | GBDS |
| gbds.watchdog.log.mode                                                | GBDS |
| gbds.watchdog.log.level                                               | GBDS |
| gbds.verifyPostMatch.enabled                                          | GBDS |
| gbds.transparency.search.identify.result.notify.enabled               | BOTH |
| gbds.transparency.email-notifier.url                                  | BOTH |
| gbds.transparency.email-notifier.log-level                            | BOTH |
| gbds.transparency.email-notifier.timeout                              | BOTH |
| gbscluster.update.consider.fingerprints                               | BOTH |
| gbscluster.update.consider.faces                                      | BOTH |
| gbscluster.update.consider.faces.beforeFingerprints                   | BOTH |
| gbscluster.update.faces.verify.matchthreshold                         | BOTH |
| gbscluster.update.minimum.fingers                                     | BOTH |
| gbds.search.verify.adjust-resolution                                  | BOTH |

Other settings can be placed in the `gbds.settings`in rdb and all will be written to the API or GBDS file, according to the type of configuration. However, runtime memory reloads will not be performed for these new settings, only after restarting the API and/or GBDS.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.griaule.com/gbs/en/gbds-integration/gbds-5-relational-database.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
