# Exceptions

## getException

> This method returns an exception for a given person/transaction.

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions/{tguid}/{pguid}":{"get":{"description":"This method returns an exception for a given person/transaction.","tags":["exceptions"],"operationId":"getException","summary":"getException","parameters":[{"name":"tguid","description":"Global unique ID of the transaction.","in":"path","required":true,"schema":{"type":"string"}},{"name":"pguid","description":"Global unique ID of the person.","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetExceptionsResponse"}}}},"404":{"description":"Enrollment transaction does not exist, the exception does not exist","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}}}}}},"components":{"schemas":{"GetExceptionsResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Exception"}}},"Exception":{"type":"object","properties":{"enrollPguid":{"description":"Global unique ID of the person.","type":"string"},"enrollTguid":{"description":"Global unique ID of the transaction.","type":"string"},"transactionTimestamp":{"description":"Timestamp of the transaction that generated the Exception.","type":"integer","format":"int64"},"match":{"$ref":"#/components/schemas/Match"},"assignedUser":{"description":"Username of user tasked with treating the exception.","type":"string"},"exceptionAnalysis":{"$ref":"#/components/schemas/ExceptionAnalysis"},"transactionType":{"description":"Type of the transaction that generated the exception.","type":"string","enum":["ENROLL","UPDATE"]}}},"Match":{"type":"object","properties":{"matchedPersonPguid":{"description":"PGUID of the person the candidate matched against.","type":"string"},"matchedPersonTguid":{"description":"TGUID of the person the candidate matched against.","type":"string"},"biometricMatches":{"description":"Information about the match.","type":"array","items":{"$ref":"#/components/schemas/BiometricMatch"}}}},"BiometricMatch":{"type":"object","properties":{"score":{"description":"Score of the match.","type":"integer","format":"int32"},"queryIndex":{"description":"Index of the biometric data that was sent and caused a match.","type":"integer","format":"int32"},"referenceIndex":{"description":"Index of the biometric data, from the already enrolled person, which matched.","type":"integer","format":"int32"},"minutia":{"description":"Array of minutia matches. Returned only for latent searches.","type":"array","items":{"$ref":"#/components/schemas/Minutiae"}}}},"Minutiae":{"type":"object","properties":{"query":{"description":"Index of Minutiae, from the provided biometric data, which was involved in the match.","type":"integer","format":"int32"},"reference":{"description":"Index of Minutiae, from biometric data already in the database, which was involved in the match.","type":"integer","format":"int32"}}},"ExceptionAnalysis":{"type":"object","properties":{"status":{"description":"Status of the exception.","type":"string","enum":["ANALYSIS","DIFFERENT_FINGERS","SAME_FINGERS","INCORRECT_ENROLL","RECOLLECT","MERGE_TRANSACTIONS","APPROVE","REJECT","ERROR","REFUSED"]},"exceptionTimestamp":{"description":"Timestamp of the exception. This is the timestamp that should be used during exception listing/filtering.","type":"integer","format":"int64"},"user":{"description":"User that performed the analysis of the exception. Used only if LDAP is not active.","type":"string"},"comments":{"description":"Comments made by the user.","type":"string"}}},"ProcessingError":{"type":"object","properties":{"type":{"description":"Type of the Error","type":"string","enum":["PROCESSING_ERROR"]},"code":{"description":"Internal error code.","type":"string","enum":["ENTITY_DOES_NOT_EXIST","ENTITY_ALREADY_EXISTS","POOR_BIOMETRIC_QUALITY","DUPLICATED_BIOMETRIC","BIOMETRIC_OUT_OF_SEQUENCE","BIOMETRIC_ERROR","INSUFFICIENT_TEMPLATE_COUNT","UNEXTRACTABLE_BIOMETRIC","PERSON_DOES_NOT_EXIST","PERSON_NOT_ACTIVE","PERSON_DOES_NOT_HAVE_BIOMETRIC","PENDING_EXCEPTIONS","ENROLL_TRANSACTION_DOES_NOT_EXIST","ENROLL_PERSON_NOT_FOUND","INVALID_TRANSACTION_STATE","EXCEPTION_DOES_NOT_EXIST","TREAT_EXCEPTION_TRANSACTION_DOES_NOT_EXIST","USER_NOT_AUTHORIZED_TO_TREAT_EXCEPTION","UL_IS_ALREADY_SOLVED","INVALID_PARAMETER_COMBINATION","CAN_NOT_DISABLE_ONLY_ENROLL_TRANSACTION","PERSON_DOES_NOT_OWN_TRANSACTION","TRANSACTION_IS_ALREADY_DISABLED","CAN_NOT_DISABLE_TRANSACTION_OF_UNSUPPORTED_TYPE","INVALID_EBTS_TYPE9_CONTENT","EXTERNAL_ID_DOES_NOT_EXIST","EXCEPTION_IS_ALREADY_TREATED","INVALID_TREATMENT_FOR_EXCEPTION","ENROLL_IS_ALREADY_ASSIGNED","ENROLL_IS_ALREADY_UNASSIGNED","ENROLL_IS_NOT_PENDING","ENROLL_IS_NOT_ASSIGNED","ENROLL_HAS_DIFFERENT_ASSIGNED_USER","NO_PGUID_FOUND_FOR_KEY","NO_SEARCHABLE_BIOMETRIC"]},"message":{"description":"Message detailing the nature of the Error","type":"string"},"meta":{"description":"Contains extra information about the API call.","type":"object"}}},"InternalError":{"type":"object","properties":{"type":{"description":"Type of the Error","type":"string","enum":["INTERNAL_ERROR"]},"code":{"description":"Internal error code.","type":"string","enum":["DRIVER_OFFLINE","CREDENTIAL_SERVER_CONNECTION_ERROR","CLIENT_NOT_INITIALIZE","TRUSTED_ENROLL_WITH_PENDING_STATUS","SUBJECT_NOT_SET","UNKNOWN"]},"message":{"description":"Message detailing the nature of the Error","type":"string"},"meta":{"description":"Contains extra information about the API call.","type":"object"}}}}}}
```

## listExceptions

> This method returns a list of exceptions that match the given search criteria.

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions":{"get":{"description":"This method returns a list of exceptions that match the given search criteria.","tags":["exceptions"],"operationId":"listExceptions","summary":"listExceptions","parameters":[{"name":"status","description":"Status of the request.","in":"query","required":false,"schema":{"uniqueItems":true,"type":"array","items":{"type":"string","enum":["ANALYSIS","DIFFERENT_FINGERS","SAME_FINGERS","INCORRECT_ENROLL","RECOLLECT","MERGE_TRANSACTIONS","APPROVE","REJECT","ERROR","REFUSED"]}}},{"name":"startDate","description":"Minimum timestamp, in milliseconds.","in":"query","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"endDate","description":"Maximum timestamp, in milliseconds.","in":"query","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"user","description":"ID of the user.","in":"query","required":false,"schema":{"type":"string"}},{"name":"keys","description":"Array of keys that uniquely identify the person. This field can be an expression.\n\nThe following structure can be used for both `keys` and `biographics`:\n\n| Format         | Description                                                                                       |\n|----------------|---------------------------------------------------------------------------------------------------|\n| `<id>:<value>` | Searches for exceptions with incoming or reference keys/biographics with the passed id and value. |\n| `<id>:`        | Searches for exceptions with incoming or reference keys/biographics with the id and any value.    |\n| `:<value>`     | Searches for exceptions with incoming or reference keys/biographics with the value and any id.    |\n\nFrom the second keys/biographics item onwards, before each id or value, you can include an operator:\n- `[and]`: performs an AND operation with the previous item.\n- `[or]`: performs an OR operation with the previous item.\n\nThese operators may be applied to both keys and biographics.\n\nOn every operation on an id or value, the default behavior will be to test for exact matches.\nTo change this behavior, you can include a modifier at the end of the id or value:\n- `[exact]`: tests for exact matches. This is the default behavior, the same as not including any modifier.\n- `[atstart]`: searches for content that starts with the passed id/value.\n- `[atend]`: searches for content that ends with the passed id/value.\n- `[anywhere]`: searches for content that contains the passed id/value.\n\n**IMPORTANT**: Be careful when using modifiers other than `[exact]`. They can slow down the search.\n\nExamples:\n- `keys=cpf:001&biographics=name`\n- `keys=cpf:001&keys=[or]cpf:002`\n- `keys=cpf:00[atstart]`\n","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"biographics","description":"Biographic data of the person. This field can be an expression.\n\nFor expressions, use the same structure described in the `keys` parameter.\n","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"labels","description":"A list of labels of the person.","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"exceptionFields","description":"List containing the names of the fields of the Exception entity to be included in the response.\n\nThe following fields are available:\n- **NO_FIELDS**: No fields are returned.\n- **BASIC_FIELDS**: Returns only the enroll `TGUID`, `PGUID`, `timestamp`, and `type`.\n- **ANALYSIS_FIELDS**: Returns only the data->`qualityAnalysis` object with the properties `status`, `user`, `comments`, and `timestamp` (if applicable).\n- **MATCH_FIELDS**: Returns only the match `TGUID`, and `PGUID`.\n- **BIOMETRIC_MATCH_FIELDS**: Returns only the indexes, score, and match pairs for each match.\n- **ALL_FIELDS**: All fields are returned.\n","in":"query","required":false,"schema":{"type":"array","items":{"type":"string","enum":["NO_FIELDS","BASIC_FIELDS","ANALYSIS_FIELDS","MATCH_FIELDS","BIOMETRIC_MATCH_FIELDS","ALL_FIELDS"]}}},{"name":"pageIndex","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"statuses","in":"query","required":false,"schema":{"uniqueItems":true,"type":"array","items":{"type":"string","enum":["ANALYSIS","DIFFERENT_FINGERS","SAME_FINGERS","INCORRECT_ENROLL","RECOLLECT","MERGE_TRANSACTIONS","APPROVE","REJECT","ERROR","REFUSED"]}}},{"name":"locekdUser","in":"query","required":false,"schema":{"type":"string"}},{"name":"priority","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"target","in":"query","required":false,"schema":{"type":"string","enum":["BIOGRAPHIC","BIOMETRIC","BIOMETRIC_INCONCLUSIVE","BIOMETRIC_MISMATCH"]}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListExceptionsResponse"}}}},"400":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}}}}}},"components":{"schemas":{"ListExceptionsResponse":{"type":"object","properties":{"data":{"description":"List of exceptions that matched the search criteria.","type":"array","items":{"allOf":[{"type":"object","properties":{"match":{"$ref":"#/components/schemas/MatchBob"}}},{"$ref":"#/components/schemas/Exception"}]}},"pagination":{"$ref":"#/components/schemas/Pagination"}}},"MatchBob":{"type":"object","properties":{"matchedPersonPguid":{"description":"PGUID of the person the candidate matched against.","type":"string"},"matchedPersonTguid":{"description":"TGUID of the person the candidate matched against.\n\nReturned at this level only when Best of Biometrics (**BoB**) is **DISABLED**. Otherwise, omitted here and **one TGUID per biometric** is returned at the `biometricMatches` level (child).\n","type":"string"},"biometricMatches":{"description":"Information about the match.","type":"array","items":{"$ref":"#/components/schemas/BiometricMatchBob"}}}},"BiometricMatchBob":{"type":"object","properties":{"matchedPersonTguid":{"description":"TGUID of the person the candidate matched against.\n\nReturned at this level only when Best of Biometrics (**BoB**) is **ENABLED**. Otherwise, omitted here and only **one TGUID per candidate** is returned at the `candidates` level (parent).\n","type":"string","format":"uuid"},"score":{"description":"Score of the match.","type":"integer","format":"int32"},"queryIndex":{"description":"Index of the biometric data that was sent and caused a match.","type":"integer","format":"int32"},"referenceIndex":{"description":"Index of the biometric data, from the already enrolled person, which matched.","type":"integer","format":"int32"},"minutia":{"description":"Array of minutia matches. Returned only for latent searches.","type":"array","items":{"$ref":"#/components/schemas/Minutiae"}}}},"Minutiae":{"type":"object","properties":{"query":{"description":"Index of Minutiae, from the provided biometric data, which was involved in the match.","type":"integer","format":"int32"},"reference":{"description":"Index of Minutiae, from biometric data already in the database, which was involved in the match.","type":"integer","format":"int32"}}},"Exception":{"type":"object","properties":{"enrollPguid":{"description":"Global unique ID of the person.","type":"string"},"enrollTguid":{"description":"Global unique ID of the transaction.","type":"string"},"transactionTimestamp":{"description":"Timestamp of the transaction that generated the Exception.","type":"integer","format":"int64"},"match":{"$ref":"#/components/schemas/Match"},"assignedUser":{"description":"Username of user tasked with treating the exception.","type":"string"},"exceptionAnalysis":{"$ref":"#/components/schemas/ExceptionAnalysis"},"transactionType":{"description":"Type of the transaction that generated the exception.","type":"string","enum":["ENROLL","UPDATE"]}}},"Match":{"type":"object","properties":{"matchedPersonPguid":{"description":"PGUID of the person the candidate matched against.","type":"string"},"matchedPersonTguid":{"description":"TGUID of the person the candidate matched against.","type":"string"},"biometricMatches":{"description":"Information about the match.","type":"array","items":{"$ref":"#/components/schemas/BiometricMatch"}}}},"BiometricMatch":{"type":"object","properties":{"score":{"description":"Score of the match.","type":"integer","format":"int32"},"queryIndex":{"description":"Index of the biometric data that was sent and caused a match.","type":"integer","format":"int32"},"referenceIndex":{"description":"Index of the biometric data, from the already enrolled person, which matched.","type":"integer","format":"int32"},"minutia":{"description":"Array of minutia matches. Returned only for latent searches.","type":"array","items":{"$ref":"#/components/schemas/Minutiae"}}}},"ExceptionAnalysis":{"type":"object","properties":{"status":{"description":"Status of the exception.","type":"string","enum":["ANALYSIS","DIFFERENT_FINGERS","SAME_FINGERS","INCORRECT_ENROLL","RECOLLECT","MERGE_TRANSACTIONS","APPROVE","REJECT","ERROR","REFUSED"]},"exceptionTimestamp":{"description":"Timestamp of the exception. This is the timestamp that should be used during exception listing/filtering.","type":"integer","format":"int64"},"user":{"description":"User that performed the analysis of the exception. Used only if LDAP is not active.","type":"string"},"comments":{"description":"Comments made by the user.","type":"string"}}},"Pagination":{"type":"object","properties":{"total":{"description":"Total number of elements that matched the selection criteria.","type":"integer","format":"int64"},"count":{"description":"Number of elements in the response.","type":"integer","format":"int32"},"pageSize":{"description":"Size of the page.","type":"integer","format":"int32"},"currentPage":{"description":"Number of the current page.","type":"integer","format":"int64"},"totalPages":{"description":"Number of total pages.","type":"integer","format":"int64"}}},"ValidationError":{"type":"object","properties":{"type":{"description":"Type of the Error","type":"string","enum":["VALIDATION_ERROR"]},"code":{"description":"Internal error code.","type":"string","enum":["MISSING_PGUID","MISSING_PERSON","MISSING_BIOMETRIC","INVALID_PARAMETER_COMBINATION","MISSING_REQUIRED_QUERY_PARAMETER","MISSING_REQUIRED_ENTITY_ATTRIBUTE","UNKNOWN_ENTITY_ATTRIBUTE","QUERY_PARAMETER_OUT_OF_RANGE","PARAMETER_OUT_OF_RANGE","PGUID_IS_EMPTY","FORBIDDEN_ATTRIBUTE_SET","INVALID_TOKEN_GRANT_SPEC","INVALID_ENUM_VALUE","MALFORMED_JSON","INVALID_JSON_ATTRIBUTE_VALUE","INVALID_URL_ATTRIBUTE_VALUE","UNKNOWN_REQUEST_READ_ERROR","PAGE_NOT_FOUND","UNSUPPORTED_HTTP_METHOD"]},"message":{"description":"Message detailing the nature of the Error","type":"string"},"meta":{"description":"Contains extra information about the API call.","type":"object"}}},"InternalError":{"type":"object","properties":{"type":{"description":"Type of the Error","type":"string","enum":["INTERNAL_ERROR"]},"code":{"description":"Internal error code.","type":"string","enum":["DRIVER_OFFLINE","CREDENTIAL_SERVER_CONNECTION_ERROR","CLIENT_NOT_INITIALIZE","TRUSTED_ENROLL_WITH_PENDING_STATUS","SUBJECT_NOT_SET","UNKNOWN"]},"message":{"description":"Message detailing the nature of the Error","type":"string"},"meta":{"description":"Contains extra information about the API call.","type":"object"}}}}}}
```

## unassignException

> This method removes the assignment of a user to an exception.

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions/{tguid}/{pguid}/users":{"delete":{"description":"This method removes the assignment of a user to an exception.","tags":["exceptions"],"operationId":"unassignException","summary":"unassignException","parameters":[{"name":"tguid","required":true,"description":"Global unique ID of the transaction.","in":"path","schema":{"type":"string"}},{"name":"pguid","description":"Global unique ID of the person.","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Exception does not exist","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}}}}}},"components":{"schemas":{"ProcessingError":{"type":"object","properties":{"type":{"description":"Type of the Error","type":"string","enum":["PROCESSING_ERROR"]},"code":{"description":"Internal error code.","type":"string","enum":["ENTITY_DOES_NOT_EXIST","ENTITY_ALREADY_EXISTS","POOR_BIOMETRIC_QUALITY","DUPLICATED_BIOMETRIC","BIOMETRIC_OUT_OF_SEQUENCE","BIOMETRIC_ERROR","INSUFFICIENT_TEMPLATE_COUNT","UNEXTRACTABLE_BIOMETRIC","PERSON_DOES_NOT_EXIST","PERSON_NOT_ACTIVE","PERSON_DOES_NOT_HAVE_BIOMETRIC","PENDING_EXCEPTIONS","ENROLL_TRANSACTION_DOES_NOT_EXIST","ENROLL_PERSON_NOT_FOUND","INVALID_TRANSACTION_STATE","EXCEPTION_DOES_NOT_EXIST","TREAT_EXCEPTION_TRANSACTION_DOES_NOT_EXIST","USER_NOT_AUTHORIZED_TO_TREAT_EXCEPTION","UL_IS_ALREADY_SOLVED","INVALID_PARAMETER_COMBINATION","CAN_NOT_DISABLE_ONLY_ENROLL_TRANSACTION","PERSON_DOES_NOT_OWN_TRANSACTION","TRANSACTION_IS_ALREADY_DISABLED","CAN_NOT_DISABLE_TRANSACTION_OF_UNSUPPORTED_TYPE","INVALID_EBTS_TYPE9_CONTENT","EXTERNAL_ID_DOES_NOT_EXIST","EXCEPTION_IS_ALREADY_TREATED","INVALID_TREATMENT_FOR_EXCEPTION","ENROLL_IS_ALREADY_ASSIGNED","ENROLL_IS_ALREADY_UNASSIGNED","ENROLL_IS_NOT_PENDING","ENROLL_IS_NOT_ASSIGNED","ENROLL_HAS_DIFFERENT_ASSIGNED_USER","NO_PGUID_FOUND_FOR_KEY","NO_SEARCHABLE_BIOMETRIC"]},"message":{"description":"Message detailing the nature of the Error","type":"string"},"meta":{"description":"Contains extra information about the API call.","type":"object"}}},"InternalError":{"type":"object","properties":{"type":{"description":"Type of the Error","type":"string","enum":["INTERNAL_ERROR"]},"code":{"description":"Internal error code.","type":"string","enum":["DRIVER_OFFLINE","CREDENTIAL_SERVER_CONNECTION_ERROR","CLIENT_NOT_INITIALIZE","TRUSTED_ENROLL_WITH_PENDING_STATUS","SUBJECT_NOT_SET","UNKNOWN"]},"message":{"description":"Message detailing the nature of the Error","type":"string"},"meta":{"description":"Contains extra information about the API call.","type":"object"}}}}}}
```

## listByTransaction

> This method returns the exception list from a given exception.

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions/{tguid}":{"get":{"description":"This method returns the exception list from a given exception.","tags":["exceptions"],"operationId":"listByTransaction","summary":"listByTransaction","parameters":[{"name":"tguid","description":"Global unique ID of the transaction.","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListExceptionsResponse"}}}},"404":{"description":"Enrollment transaction does not exist","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}}}}}},"components":{"schemas":{"ListExceptionsResponse":{"type":"object","properties":{"data":{"description":"List of exceptions that matched the search criteria.","type":"array","items":{"allOf":[{"type":"object","properties":{"match":{"$ref":"#/components/schemas/MatchBob"}}},{"$ref":"#/components/schemas/Exception"}]}},"pagination":{"$ref":"#/components/schemas/Pagination"}}},"MatchBob":{"type":"object","properties":{"matchedPersonPguid":{"description":"PGUID of the person the candidate matched against.","type":"string"},"matchedPersonTguid":{"description":"TGUID of the person the candidate matched against.\n\nReturned at this level only when Best of Biometrics (**BoB**) is **DISABLED**. Otherwise, omitted here and **one TGUID per biometric** is returned at the `biometricMatches` level (child).\n","type":"string"},"biometricMatches":{"description":"Information about the match.","type":"array","items":{"$ref":"#/components/schemas/BiometricMatchBob"}}}},"BiometricMatchBob":{"type":"object","properties":{"matchedPersonTguid":{"description":"TGUID of the person the candidate matched against.\n\nReturned at this level only when Best of Biometrics (**BoB**) is **ENABLED**. Otherwise, omitted here and only **one TGUID per candidate** is returned at the `candidates` level (parent).\n","type":"string","format":"uuid"},"score":{"description":"Score of the match.","type":"integer","format":"int32"},"queryIndex":{"description":"Index of the biometric data that was sent and caused a match.","type":"integer","format":"int32"},"referenceIndex":{"description":"Index of the biometric data, from the already enrolled person, which matched.","type":"integer","format":"int32"},"minutia":{"description":"Array of minutia matches. Returned only for latent searches.","type":"array","items":{"$ref":"#/components/schemas/Minutiae"}}}},"Minutiae":{"type":"object","properties":{"query":{"description":"Index of Minutiae, from the provided biometric data, which was involved in the match.","type":"integer","format":"int32"},"reference":{"description":"Index of Minutiae, from biometric data already in the database, which was involved in the match.","type":"integer","format":"int32"}}},"Exception":{"type":"object","properties":{"enrollPguid":{"description":"Global unique ID of the person.","type":"string"},"enrollTguid":{"description":"Global unique ID of the transaction.","type":"string"},"transactionTimestamp":{"description":"Timestamp of the transaction that generated the Exception.","type":"integer","format":"int64"},"match":{"$ref":"#/components/schemas/Match"},"assignedUser":{"description":"Username of user tasked with treating the exception.","type":"string"},"exceptionAnalysis":{"$ref":"#/components/schemas/ExceptionAnalysis"},"transactionType":{"description":"Type of the transaction that generated the exception.","type":"string","enum":["ENROLL","UPDATE"]}}},"Match":{"type":"object","properties":{"matchedPersonPguid":{"description":"PGUID of the person the candidate matched against.","type":"string"},"matchedPersonTguid":{"description":"TGUID of the person the candidate matched against.","type":"string"},"biometricMatches":{"description":"Information about the match.","type":"array","items":{"$ref":"#/components/schemas/BiometricMatch"}}}},"BiometricMatch":{"type":"object","properties":{"score":{"description":"Score of the match.","type":"integer","format":"int32"},"queryIndex":{"description":"Index of the biometric data that was sent and caused a match.","type":"integer","format":"int32"},"referenceIndex":{"description":"Index of the biometric data, from the already enrolled person, which matched.","type":"integer","format":"int32"},"minutia":{"description":"Array of minutia matches. Returned only for latent searches.","type":"array","items":{"$ref":"#/components/schemas/Minutiae"}}}},"ExceptionAnalysis":{"type":"object","properties":{"status":{"description":"Status of the exception.","type":"string","enum":["ANALYSIS","DIFFERENT_FINGERS","SAME_FINGERS","INCORRECT_ENROLL","RECOLLECT","MERGE_TRANSACTIONS","APPROVE","REJECT","ERROR","REFUSED"]},"exceptionTimestamp":{"description":"Timestamp of the exception. This is the timestamp that should be used during exception listing/filtering.","type":"integer","format":"int64"},"user":{"description":"User that performed the analysis of the exception. Used only if LDAP is not active.","type":"string"},"comments":{"description":"Comments made by the user.","type":"string"}}},"Pagination":{"type":"object","properties":{"total":{"description":"Total number of elements that matched the selection criteria.","type":"integer","format":"int64"},"count":{"description":"Number of elements in the response.","type":"integer","format":"int32"},"pageSize":{"description":"Size of the page.","type":"integer","format":"int32"},"currentPage":{"description":"Number of the current page.","type":"integer","format":"int64"},"totalPages":{"description":"Number of total pages.","type":"integer","format":"int64"}}},"ProcessingError":{"type":"object","properties":{"type":{"description":"Type of the Error","type":"string","enum":["PROCESSING_ERROR"]},"code":{"description":"Internal error code.","type":"string","enum":["ENTITY_DOES_NOT_EXIST","ENTITY_ALREADY_EXISTS","POOR_BIOMETRIC_QUALITY","DUPLICATED_BIOMETRIC","BIOMETRIC_OUT_OF_SEQUENCE","BIOMETRIC_ERROR","INSUFFICIENT_TEMPLATE_COUNT","UNEXTRACTABLE_BIOMETRIC","PERSON_DOES_NOT_EXIST","PERSON_NOT_ACTIVE","PERSON_DOES_NOT_HAVE_BIOMETRIC","PENDING_EXCEPTIONS","ENROLL_TRANSACTION_DOES_NOT_EXIST","ENROLL_PERSON_NOT_FOUND","INVALID_TRANSACTION_STATE","EXCEPTION_DOES_NOT_EXIST","TREAT_EXCEPTION_TRANSACTION_DOES_NOT_EXIST","USER_NOT_AUTHORIZED_TO_TREAT_EXCEPTION","UL_IS_ALREADY_SOLVED","INVALID_PARAMETER_COMBINATION","CAN_NOT_DISABLE_ONLY_ENROLL_TRANSACTION","PERSON_DOES_NOT_OWN_TRANSACTION","TRANSACTION_IS_ALREADY_DISABLED","CAN_NOT_DISABLE_TRANSACTION_OF_UNSUPPORTED_TYPE","INVALID_EBTS_TYPE9_CONTENT","EXTERNAL_ID_DOES_NOT_EXIST","EXCEPTION_IS_ALREADY_TREATED","INVALID_TREATMENT_FOR_EXCEPTION","ENROLL_IS_ALREADY_ASSIGNED","ENROLL_IS_ALREADY_UNASSIGNED","ENROLL_IS_NOT_PENDING","ENROLL_IS_NOT_ASSIGNED","ENROLL_HAS_DIFFERENT_ASSIGNED_USER","NO_PGUID_FOUND_FOR_KEY","NO_SEARCHABLE_BIOMETRIC"]},"message":{"description":"Message detailing the nature of the Error","type":"string"},"meta":{"description":"Contains extra information about the API call.","type":"object"}}},"InternalError":{"type":"object","properties":{"type":{"description":"Type of the Error","type":"string","enum":["INTERNAL_ERROR"]},"code":{"description":"Internal error code.","type":"string","enum":["DRIVER_OFFLINE","CREDENTIAL_SERVER_CONNECTION_ERROR","CLIENT_NOT_INITIALIZE","TRUSTED_ENROLL_WITH_PENDING_STATUS","SUBJECT_NOT_SET","UNKNOWN"]},"message":{"description":"Message detailing the nature of the Error","type":"string"},"meta":{"description":"Contains extra information about the API call.","type":"object"}}}}}}
```

## assignException

> This method assigns an exception to a given user.

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions/{tguid}/{pguid}/users/{user}":{"put":{"description":"This method assigns an exception to a given user.","tags":["exceptions"],"operationId":"assignException","summary":"assignException","parameters":[{"name":"tguid","description":"Global unique ID of the transaction.","in":"path","required":true,"schema":{"type":"string"}},{"name":"pguid","description":"Global unique ID of the person.","in":"path","required":true,"schema":{"type":"string"}},{"name":"user","description":"ID of the user.","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Exception does not exist","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}}}}}},"components":{"schemas":{"ProcessingError":{"type":"object","properties":{"type":{"description":"Type of the Error","type":"string","enum":["PROCESSING_ERROR"]},"code":{"description":"Internal error code.","type":"string","enum":["ENTITY_DOES_NOT_EXIST","ENTITY_ALREADY_EXISTS","POOR_BIOMETRIC_QUALITY","DUPLICATED_BIOMETRIC","BIOMETRIC_OUT_OF_SEQUENCE","BIOMETRIC_ERROR","INSUFFICIENT_TEMPLATE_COUNT","UNEXTRACTABLE_BIOMETRIC","PERSON_DOES_NOT_EXIST","PERSON_NOT_ACTIVE","PERSON_DOES_NOT_HAVE_BIOMETRIC","PENDING_EXCEPTIONS","ENROLL_TRANSACTION_DOES_NOT_EXIST","ENROLL_PERSON_NOT_FOUND","INVALID_TRANSACTION_STATE","EXCEPTION_DOES_NOT_EXIST","TREAT_EXCEPTION_TRANSACTION_DOES_NOT_EXIST","USER_NOT_AUTHORIZED_TO_TREAT_EXCEPTION","UL_IS_ALREADY_SOLVED","INVALID_PARAMETER_COMBINATION","CAN_NOT_DISABLE_ONLY_ENROLL_TRANSACTION","PERSON_DOES_NOT_OWN_TRANSACTION","TRANSACTION_IS_ALREADY_DISABLED","CAN_NOT_DISABLE_TRANSACTION_OF_UNSUPPORTED_TYPE","INVALID_EBTS_TYPE9_CONTENT","EXTERNAL_ID_DOES_NOT_EXIST","EXCEPTION_IS_ALREADY_TREATED","INVALID_TREATMENT_FOR_EXCEPTION","ENROLL_IS_ALREADY_ASSIGNED","ENROLL_IS_ALREADY_UNASSIGNED","ENROLL_IS_NOT_PENDING","ENROLL_IS_NOT_ASSIGNED","ENROLL_HAS_DIFFERENT_ASSIGNED_USER","NO_PGUID_FOUND_FOR_KEY","NO_SEARCHABLE_BIOMETRIC"]},"message":{"description":"Message detailing the nature of the Error","type":"string"},"meta":{"description":"Contains extra information about the API call.","type":"object"}}},"InternalError":{"type":"object","properties":{"type":{"description":"Type of the Error","type":"string","enum":["INTERNAL_ERROR"]},"code":{"description":"Internal error code.","type":"string","enum":["DRIVER_OFFLINE","CREDENTIAL_SERVER_CONNECTION_ERROR","CLIENT_NOT_INITIALIZE","TRUSTED_ENROLL_WITH_PENDING_STATUS","SUBJECT_NOT_SET","UNKNOWN"]},"message":{"description":"Message detailing the nature of the Error","type":"string"},"meta":{"description":"Contains extra information about the API call.","type":"object"}}}}}}
```

## getTreatResult

> This method returns the status of the treatment given to a specific transaction.

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions/treatment/{tguid}":{"get":{"description":"This method returns the status of the treatment given to a specific transaction.","tags":["exceptions"],"operationId":"getTreatResult","summary":"getTreatResult","parameters":[{"name":"tguid","description":"Global unique ID of the transaction.","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Ok, enqueued, Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TreatExceptionsResponse"}}}},"400":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"404":{"description":"Exception treatment transaction does not exist","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}}}}}},"components":{"schemas":{"TreatExceptionsResponse":{"type":"object","properties":{"status":{"description":"Status of the treat operation.","type":"string","enum":["OK","ENQUEUED","ERROR"]},"treatTguid":{"description":"TGUID of treat operation.","type":"string"},"failReason":{"description":"If the treatment call failed, this field will contain a message describing the nature of the failure.","type":"string"}}},"ValidationError":{"type":"object","properties":{"type":{"description":"Type of the Error","type":"string","enum":["VALIDATION_ERROR"]},"code":{"description":"Internal error code.","type":"string","enum":["MISSING_PGUID","MISSING_PERSON","MISSING_BIOMETRIC","INVALID_PARAMETER_COMBINATION","MISSING_REQUIRED_QUERY_PARAMETER","MISSING_REQUIRED_ENTITY_ATTRIBUTE","UNKNOWN_ENTITY_ATTRIBUTE","QUERY_PARAMETER_OUT_OF_RANGE","PARAMETER_OUT_OF_RANGE","PGUID_IS_EMPTY","FORBIDDEN_ATTRIBUTE_SET","INVALID_TOKEN_GRANT_SPEC","INVALID_ENUM_VALUE","MALFORMED_JSON","INVALID_JSON_ATTRIBUTE_VALUE","INVALID_URL_ATTRIBUTE_VALUE","UNKNOWN_REQUEST_READ_ERROR","PAGE_NOT_FOUND","UNSUPPORTED_HTTP_METHOD"]},"message":{"description":"Message detailing the nature of the Error","type":"string"},"meta":{"description":"Contains extra information about the API call.","type":"object"}}},"ProcessingError":{"type":"object","properties":{"type":{"description":"Type of the Error","type":"string","enum":["PROCESSING_ERROR"]},"code":{"description":"Internal error code.","type":"string","enum":["ENTITY_DOES_NOT_EXIST","ENTITY_ALREADY_EXISTS","POOR_BIOMETRIC_QUALITY","DUPLICATED_BIOMETRIC","BIOMETRIC_OUT_OF_SEQUENCE","BIOMETRIC_ERROR","INSUFFICIENT_TEMPLATE_COUNT","UNEXTRACTABLE_BIOMETRIC","PERSON_DOES_NOT_EXIST","PERSON_NOT_ACTIVE","PERSON_DOES_NOT_HAVE_BIOMETRIC","PENDING_EXCEPTIONS","ENROLL_TRANSACTION_DOES_NOT_EXIST","ENROLL_PERSON_NOT_FOUND","INVALID_TRANSACTION_STATE","EXCEPTION_DOES_NOT_EXIST","TREAT_EXCEPTION_TRANSACTION_DOES_NOT_EXIST","USER_NOT_AUTHORIZED_TO_TREAT_EXCEPTION","UL_IS_ALREADY_SOLVED","INVALID_PARAMETER_COMBINATION","CAN_NOT_DISABLE_ONLY_ENROLL_TRANSACTION","PERSON_DOES_NOT_OWN_TRANSACTION","TRANSACTION_IS_ALREADY_DISABLED","CAN_NOT_DISABLE_TRANSACTION_OF_UNSUPPORTED_TYPE","INVALID_EBTS_TYPE9_CONTENT","EXTERNAL_ID_DOES_NOT_EXIST","EXCEPTION_IS_ALREADY_TREATED","INVALID_TREATMENT_FOR_EXCEPTION","ENROLL_IS_ALREADY_ASSIGNED","ENROLL_IS_ALREADY_UNASSIGNED","ENROLL_IS_NOT_PENDING","ENROLL_IS_NOT_ASSIGNED","ENROLL_HAS_DIFFERENT_ASSIGNED_USER","NO_PGUID_FOUND_FOR_KEY","NO_SEARCHABLE_BIOMETRIC"]},"message":{"description":"Message detailing the nature of the Error","type":"string"},"meta":{"description":"Contains extra information about the API call.","type":"object"}}},"InternalError":{"type":"object","properties":{"type":{"description":"Type of the Error","type":"string","enum":["INTERNAL_ERROR"]},"code":{"description":"Internal error code.","type":"string","enum":["DRIVER_OFFLINE","CREDENTIAL_SERVER_CONNECTION_ERROR","CLIENT_NOT_INITIALIZE","TRUSTED_ENROLL_WITH_PENDING_STATUS","SUBJECT_NOT_SET","UNKNOWN"]},"message":{"description":"Message detailing the nature of the Error","type":"string"},"meta":{"description":"Contains extra information about the API call.","type":"object"}}}}}}
```

## treatException

> This method provides the treatment for a given exception.

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions/treatment":{"post":{"description":"This method provides the treatment for a given exception.","tags":["exceptions"],"operationId":"treatException","summary":"treatException","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TreatExceptionsRequest"}}}},"responses":{"201":{"description":"Enqueued","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TreatExceptionsResponse"}}}},"202":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TreatExceptionsResponse"}}}},"400":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"403":{"description":"User not authorized to treat exception.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"404":{"description":"Exception treatment transaction does not exist, exception does not exist","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProcessingError"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}}},"parameters":[]}}},"components":{"schemas":{"TreatExceptionsRequest":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/ExceptionTreatment"},"meta":{"$ref":"#/components/schemas/Meta"}}},"ExceptionTreatment":{"type":"object","properties":{"enrollTguid":{"description":"TGUID of transaction that created the exception.","type":"string"},"exceptionPguid":{"description":"PGUID of the person that was matched to create the exception.","type":"string"},"exceptionAnalysis":{"$ref":"#/components/schemas/ExceptionAnalysis"},"referenceIndexes":{"description":"List of biometric indexes. Specifies which biometric from the Update transaction should be used to update the Person.","type":"array","items":{"type":"integer","format":"int32"}}}},"ExceptionAnalysis":{"type":"object","properties":{"status":{"description":"Status of the exception.","type":"string","enum":["ANALYSIS","DIFFERENT_FINGERS","SAME_FINGERS","INCORRECT_ENROLL","RECOLLECT","MERGE_TRANSACTIONS","APPROVE","REJECT","ERROR","REFUSED"]},"exceptionTimestamp":{"description":"Timestamp of the exception. This is the timestamp that should be used during exception listing/filtering.","type":"integer","format":"int64"},"user":{"description":"User that performed the analysis of the exception. Used only if LDAP is not active.","type":"string"},"comments":{"description":"Comments made by the user.","type":"string"}}},"Meta":{"type":"object","properties":{"timeout":{"description":"Time, in milliseconds, waiting for the completion of the operation. If this value is -1, then the method is fully synchronous. If the timeout value is 0, then the method is fully asynchronous. If>0, the call expires after this time (in milliseconds).","type":"integer","format":"int32"},"discardReference":{"type":"boolean"}}},"TreatExceptionsResponse":{"type":"object","properties":{"status":{"description":"Status of the treat operation.","type":"string","enum":["OK","ENQUEUED","ERROR"]},"treatTguid":{"description":"TGUID of treat operation.","type":"string"},"failReason":{"description":"If the treatment call failed, this field will contain a message describing the nature of the failure.","type":"string"}}},"ValidationError":{"type":"object","properties":{"type":{"description":"Type of the Error","type":"string","enum":["VALIDATION_ERROR"]},"code":{"description":"Internal error code.","type":"string","enum":["MISSING_PGUID","MISSING_PERSON","MISSING_BIOMETRIC","INVALID_PARAMETER_COMBINATION","MISSING_REQUIRED_QUERY_PARAMETER","MISSING_REQUIRED_ENTITY_ATTRIBUTE","UNKNOWN_ENTITY_ATTRIBUTE","QUERY_PARAMETER_OUT_OF_RANGE","PARAMETER_OUT_OF_RANGE","PGUID_IS_EMPTY","FORBIDDEN_ATTRIBUTE_SET","INVALID_TOKEN_GRANT_SPEC","INVALID_ENUM_VALUE","MALFORMED_JSON","INVALID_JSON_ATTRIBUTE_VALUE","INVALID_URL_ATTRIBUTE_VALUE","UNKNOWN_REQUEST_READ_ERROR","PAGE_NOT_FOUND","UNSUPPORTED_HTTP_METHOD"]},"message":{"description":"Message detailing the nature of the Error","type":"string"},"meta":{"description":"Contains extra information about the API call.","type":"object"}}},"ProcessingError":{"type":"object","properties":{"type":{"description":"Type of the Error","type":"string","enum":["PROCESSING_ERROR"]},"code":{"description":"Internal error code.","type":"string","enum":["ENTITY_DOES_NOT_EXIST","ENTITY_ALREADY_EXISTS","POOR_BIOMETRIC_QUALITY","DUPLICATED_BIOMETRIC","BIOMETRIC_OUT_OF_SEQUENCE","BIOMETRIC_ERROR","INSUFFICIENT_TEMPLATE_COUNT","UNEXTRACTABLE_BIOMETRIC","PERSON_DOES_NOT_EXIST","PERSON_NOT_ACTIVE","PERSON_DOES_NOT_HAVE_BIOMETRIC","PENDING_EXCEPTIONS","ENROLL_TRANSACTION_DOES_NOT_EXIST","ENROLL_PERSON_NOT_FOUND","INVALID_TRANSACTION_STATE","EXCEPTION_DOES_NOT_EXIST","TREAT_EXCEPTION_TRANSACTION_DOES_NOT_EXIST","USER_NOT_AUTHORIZED_TO_TREAT_EXCEPTION","UL_IS_ALREADY_SOLVED","INVALID_PARAMETER_COMBINATION","CAN_NOT_DISABLE_ONLY_ENROLL_TRANSACTION","PERSON_DOES_NOT_OWN_TRANSACTION","TRANSACTION_IS_ALREADY_DISABLED","CAN_NOT_DISABLE_TRANSACTION_OF_UNSUPPORTED_TYPE","INVALID_EBTS_TYPE9_CONTENT","EXTERNAL_ID_DOES_NOT_EXIST","EXCEPTION_IS_ALREADY_TREATED","INVALID_TREATMENT_FOR_EXCEPTION","ENROLL_IS_ALREADY_ASSIGNED","ENROLL_IS_ALREADY_UNASSIGNED","ENROLL_IS_NOT_PENDING","ENROLL_IS_NOT_ASSIGNED","ENROLL_HAS_DIFFERENT_ASSIGNED_USER","NO_PGUID_FOUND_FOR_KEY","NO_SEARCHABLE_BIOMETRIC"]},"message":{"description":"Message detailing the nature of the Error","type":"string"},"meta":{"description":"Contains extra information about the API call.","type":"object"}}},"InternalError":{"type":"object","properties":{"type":{"description":"Type of the Error","type":"string","enum":["INTERNAL_ERROR"]},"code":{"description":"Internal error code.","type":"string","enum":["DRIVER_OFFLINE","CREDENTIAL_SERVER_CONNECTION_ERROR","CLIENT_NOT_INITIALIZE","TRUSTED_ENROLL_WITH_PENDING_STATUS","SUBJECT_NOT_SET","UNKNOWN"]},"message":{"description":"Message detailing the nature of the Error","type":"string"},"meta":{"description":"Contains extra information about the API call.","type":"object"}}}}}}
```

## GET /exceptions/byEntrant/{pguid}

> getExceptionByEntrantPguid

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions/byEntrant/{pguid}":{"get":{"tags":["exceptions"],"operationId":"getExceptionByEntrantPguid","summary":"getExceptionByEntrantPguid","parameters":[{"name":"pguid","description":"Global unique ID of the person.","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListExceptionsResponse"}}}},"400":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}}}}}},"components":{"schemas":{"ListExceptionsResponse":{"type":"object","properties":{"data":{"description":"List of exceptions that matched the search criteria.","type":"array","items":{"allOf":[{"type":"object","properties":{"match":{"$ref":"#/components/schemas/MatchBob"}}},{"$ref":"#/components/schemas/Exception"}]}},"pagination":{"$ref":"#/components/schemas/Pagination"}}},"MatchBob":{"type":"object","properties":{"matchedPersonPguid":{"description":"PGUID of the person the candidate matched against.","type":"string"},"matchedPersonTguid":{"description":"TGUID of the person the candidate matched against.\n\nReturned at this level only when Best of Biometrics (**BoB**) is **DISABLED**. Otherwise, omitted here and **one TGUID per biometric** is returned at the `biometricMatches` level (child).\n","type":"string"},"biometricMatches":{"description":"Information about the match.","type":"array","items":{"$ref":"#/components/schemas/BiometricMatchBob"}}}},"BiometricMatchBob":{"type":"object","properties":{"matchedPersonTguid":{"description":"TGUID of the person the candidate matched against.\n\nReturned at this level only when Best of Biometrics (**BoB**) is **ENABLED**. Otherwise, omitted here and only **one TGUID per candidate** is returned at the `candidates` level (parent).\n","type":"string","format":"uuid"},"score":{"description":"Score of the match.","type":"integer","format":"int32"},"queryIndex":{"description":"Index of the biometric data that was sent and caused a match.","type":"integer","format":"int32"},"referenceIndex":{"description":"Index of the biometric data, from the already enrolled person, which matched.","type":"integer","format":"int32"},"minutia":{"description":"Array of minutia matches. Returned only for latent searches.","type":"array","items":{"$ref":"#/components/schemas/Minutiae"}}}},"Minutiae":{"type":"object","properties":{"query":{"description":"Index of Minutiae, from the provided biometric data, which was involved in the match.","type":"integer","format":"int32"},"reference":{"description":"Index of Minutiae, from biometric data already in the database, which was involved in the match.","type":"integer","format":"int32"}}},"Exception":{"type":"object","properties":{"enrollPguid":{"description":"Global unique ID of the person.","type":"string"},"enrollTguid":{"description":"Global unique ID of the transaction.","type":"string"},"transactionTimestamp":{"description":"Timestamp of the transaction that generated the Exception.","type":"integer","format":"int64"},"match":{"$ref":"#/components/schemas/Match"},"assignedUser":{"description":"Username of user tasked with treating the exception.","type":"string"},"exceptionAnalysis":{"$ref":"#/components/schemas/ExceptionAnalysis"},"transactionType":{"description":"Type of the transaction that generated the exception.","type":"string","enum":["ENROLL","UPDATE"]}}},"Match":{"type":"object","properties":{"matchedPersonPguid":{"description":"PGUID of the person the candidate matched against.","type":"string"},"matchedPersonTguid":{"description":"TGUID of the person the candidate matched against.","type":"string"},"biometricMatches":{"description":"Information about the match.","type":"array","items":{"$ref":"#/components/schemas/BiometricMatch"}}}},"BiometricMatch":{"type":"object","properties":{"score":{"description":"Score of the match.","type":"integer","format":"int32"},"queryIndex":{"description":"Index of the biometric data that was sent and caused a match.","type":"integer","format":"int32"},"referenceIndex":{"description":"Index of the biometric data, from the already enrolled person, which matched.","type":"integer","format":"int32"},"minutia":{"description":"Array of minutia matches. Returned only for latent searches.","type":"array","items":{"$ref":"#/components/schemas/Minutiae"}}}},"ExceptionAnalysis":{"type":"object","properties":{"status":{"description":"Status of the exception.","type":"string","enum":["ANALYSIS","DIFFERENT_FINGERS","SAME_FINGERS","INCORRECT_ENROLL","RECOLLECT","MERGE_TRANSACTIONS","APPROVE","REJECT","ERROR","REFUSED"]},"exceptionTimestamp":{"description":"Timestamp of the exception. This is the timestamp that should be used during exception listing/filtering.","type":"integer","format":"int64"},"user":{"description":"User that performed the analysis of the exception. Used only if LDAP is not active.","type":"string"},"comments":{"description":"Comments made by the user.","type":"string"}}},"Pagination":{"type":"object","properties":{"total":{"description":"Total number of elements that matched the selection criteria.","type":"integer","format":"int64"},"count":{"description":"Number of elements in the response.","type":"integer","format":"int32"},"pageSize":{"description":"Size of the page.","type":"integer","format":"int32"},"currentPage":{"description":"Number of the current page.","type":"integer","format":"int64"},"totalPages":{"description":"Number of total pages.","type":"integer","format":"int64"}}},"ValidationError":{"type":"object","properties":{"type":{"description":"Type of the Error","type":"string","enum":["VALIDATION_ERROR"]},"code":{"description":"Internal error code.","type":"string","enum":["MISSING_PGUID","MISSING_PERSON","MISSING_BIOMETRIC","INVALID_PARAMETER_COMBINATION","MISSING_REQUIRED_QUERY_PARAMETER","MISSING_REQUIRED_ENTITY_ATTRIBUTE","UNKNOWN_ENTITY_ATTRIBUTE","QUERY_PARAMETER_OUT_OF_RANGE","PARAMETER_OUT_OF_RANGE","PGUID_IS_EMPTY","FORBIDDEN_ATTRIBUTE_SET","INVALID_TOKEN_GRANT_SPEC","INVALID_ENUM_VALUE","MALFORMED_JSON","INVALID_JSON_ATTRIBUTE_VALUE","INVALID_URL_ATTRIBUTE_VALUE","UNKNOWN_REQUEST_READ_ERROR","PAGE_NOT_FOUND","UNSUPPORTED_HTTP_METHOD"]},"message":{"description":"Message detailing the nature of the Error","type":"string"},"meta":{"description":"Contains extra information about the API call.","type":"object"}}},"InternalError":{"type":"object","properties":{"type":{"description":"Type of the Error","type":"string","enum":["INTERNAL_ERROR"]},"code":{"description":"Internal error code.","type":"string","enum":["DRIVER_OFFLINE","CREDENTIAL_SERVER_CONNECTION_ERROR","CLIENT_NOT_INITIALIZE","TRUSTED_ENROLL_WITH_PENDING_STATUS","SUBJECT_NOT_SET","UNKNOWN"]},"message":{"description":"Message detailing the nature of the Error","type":"string"},"meta":{"description":"Contains extra information about the API call.","type":"object"}}}}}}
```

## GET /exceptions/byReference/{pguid}

> getExceptionByReferencePguid

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions/byReference/{pguid}":{"get":{"tags":["exceptions"],"operationId":"getExceptionByReferencePguid","summary":"getExceptionByReferencePguid","parameters":[{"name":"pguid","description":"Global unique ID of the person.","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListExceptionsResponse"}}}},"400":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"500":{"description":"Internal Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"}}}}}}}},"components":{"schemas":{"ListExceptionsResponse":{"type":"object","properties":{"data":{"description":"List of exceptions that matched the search criteria.","type":"array","items":{"allOf":[{"type":"object","properties":{"match":{"$ref":"#/components/schemas/MatchBob"}}},{"$ref":"#/components/schemas/Exception"}]}},"pagination":{"$ref":"#/components/schemas/Pagination"}}},"MatchBob":{"type":"object","properties":{"matchedPersonPguid":{"description":"PGUID of the person the candidate matched against.","type":"string"},"matchedPersonTguid":{"description":"TGUID of the person the candidate matched against.\n\nReturned at this level only when Best of Biometrics (**BoB**) is **DISABLED**. Otherwise, omitted here and **one TGUID per biometric** is returned at the `biometricMatches` level (child).\n","type":"string"},"biometricMatches":{"description":"Information about the match.","type":"array","items":{"$ref":"#/components/schemas/BiometricMatchBob"}}}},"BiometricMatchBob":{"type":"object","properties":{"matchedPersonTguid":{"description":"TGUID of the person the candidate matched against.\n\nReturned at this level only when Best of Biometrics (**BoB**) is **ENABLED**. Otherwise, omitted here and only **one TGUID per candidate** is returned at the `candidates` level (parent).\n","type":"string","format":"uuid"},"score":{"description":"Score of the match.","type":"integer","format":"int32"},"queryIndex":{"description":"Index of the biometric data that was sent and caused a match.","type":"integer","format":"int32"},"referenceIndex":{"description":"Index of the biometric data, from the already enrolled person, which matched.","type":"integer","format":"int32"},"minutia":{"description":"Array of minutia matches. Returned only for latent searches.","type":"array","items":{"$ref":"#/components/schemas/Minutiae"}}}},"Minutiae":{"type":"object","properties":{"query":{"description":"Index of Minutiae, from the provided biometric data, which was involved in the match.","type":"integer","format":"int32"},"reference":{"description":"Index of Minutiae, from biometric data already in the database, which was involved in the match.","type":"integer","format":"int32"}}},"Exception":{"type":"object","properties":{"enrollPguid":{"description":"Global unique ID of the person.","type":"string"},"enrollTguid":{"description":"Global unique ID of the transaction.","type":"string"},"transactionTimestamp":{"description":"Timestamp of the transaction that generated the Exception.","type":"integer","format":"int64"},"match":{"$ref":"#/components/schemas/Match"},"assignedUser":{"description":"Username of user tasked with treating the exception.","type":"string"},"exceptionAnalysis":{"$ref":"#/components/schemas/ExceptionAnalysis"},"transactionType":{"description":"Type of the transaction that generated the exception.","type":"string","enum":["ENROLL","UPDATE"]}}},"Match":{"type":"object","properties":{"matchedPersonPguid":{"description":"PGUID of the person the candidate matched against.","type":"string"},"matchedPersonTguid":{"description":"TGUID of the person the candidate matched against.","type":"string"},"biometricMatches":{"description":"Information about the match.","type":"array","items":{"$ref":"#/components/schemas/BiometricMatch"}}}},"BiometricMatch":{"type":"object","properties":{"score":{"description":"Score of the match.","type":"integer","format":"int32"},"queryIndex":{"description":"Index of the biometric data that was sent and caused a match.","type":"integer","format":"int32"},"referenceIndex":{"description":"Index of the biometric data, from the already enrolled person, which matched.","type":"integer","format":"int32"},"minutia":{"description":"Array of minutia matches. Returned only for latent searches.","type":"array","items":{"$ref":"#/components/schemas/Minutiae"}}}},"ExceptionAnalysis":{"type":"object","properties":{"status":{"description":"Status of the exception.","type":"string","enum":["ANALYSIS","DIFFERENT_FINGERS","SAME_FINGERS","INCORRECT_ENROLL","RECOLLECT","MERGE_TRANSACTIONS","APPROVE","REJECT","ERROR","REFUSED"]},"exceptionTimestamp":{"description":"Timestamp of the exception. This is the timestamp that should be used during exception listing/filtering.","type":"integer","format":"int64"},"user":{"description":"User that performed the analysis of the exception. Used only if LDAP is not active.","type":"string"},"comments":{"description":"Comments made by the user.","type":"string"}}},"Pagination":{"type":"object","properties":{"total":{"description":"Total number of elements that matched the selection criteria.","type":"integer","format":"int64"},"count":{"description":"Number of elements in the response.","type":"integer","format":"int32"},"pageSize":{"description":"Size of the page.","type":"integer","format":"int32"},"currentPage":{"description":"Number of the current page.","type":"integer","format":"int64"},"totalPages":{"description":"Number of total pages.","type":"integer","format":"int64"}}},"ValidationError":{"type":"object","properties":{"type":{"description":"Type of the Error","type":"string","enum":["VALIDATION_ERROR"]},"code":{"description":"Internal error code.","type":"string","enum":["MISSING_PGUID","MISSING_PERSON","MISSING_BIOMETRIC","INVALID_PARAMETER_COMBINATION","MISSING_REQUIRED_QUERY_PARAMETER","MISSING_REQUIRED_ENTITY_ATTRIBUTE","UNKNOWN_ENTITY_ATTRIBUTE","QUERY_PARAMETER_OUT_OF_RANGE","PARAMETER_OUT_OF_RANGE","PGUID_IS_EMPTY","FORBIDDEN_ATTRIBUTE_SET","INVALID_TOKEN_GRANT_SPEC","INVALID_ENUM_VALUE","MALFORMED_JSON","INVALID_JSON_ATTRIBUTE_VALUE","INVALID_URL_ATTRIBUTE_VALUE","UNKNOWN_REQUEST_READ_ERROR","PAGE_NOT_FOUND","UNSUPPORTED_HTTP_METHOD"]},"message":{"description":"Message detailing the nature of the Error","type":"string"},"meta":{"description":"Contains extra information about the API call.","type":"object"}}},"InternalError":{"type":"object","properties":{"type":{"description":"Type of the Error","type":"string","enum":["INTERNAL_ERROR"]},"code":{"description":"Internal error code.","type":"string","enum":["DRIVER_OFFLINE","CREDENTIAL_SERVER_CONNECTION_ERROR","CLIENT_NOT_INITIALIZE","TRUSTED_ENROLL_WITH_PENDING_STATUS","SUBJECT_NOT_SET","UNKNOWN"]},"message":{"description":"Message detailing the nature of the Error","type":"string"},"meta":{"description":"Contains extra information about the API call.","type":"object"}}}}}}
```

## Set exception priority

> Sets or clears the priority flag for a specific exception identified by\
> transaction GUID (\`tguid\`) and person GUID (\`pguid\`). When the\
> \`priority\` path parameter is \`true\`, the exception—and its group—is\
> prioritized; when \`false\`, the priority is removed. Returns\
> \*\*202 Accepted\*\*.

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions/{tguid}/{pguid}/priority/{priority}":{"put":{"tags":["exceptions"],"operationId":"priorityException","parameters":[{"name":"tguid","in":"path","required":true,"schema":{"type":"string"}},{"name":"pguid","in":"path","required":true,"schema":{"type":"string"}},{"name":"priority","in":"path","required":true,"schema":{"type":"boolean"}}],"responses":{"202":{"description":"ACCEPTED","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Sets or clears the priority flag for a specific exception identified by\ntransaction GUID (`tguid`) and person GUID (`pguid`). When the\n`priority` path parameter is `true`, the exception—and its group—is\nprioritized; when `false`, the priority is removed. Returns\n**202 Accepted**.","summary":"Set exception priority"}}}}
```

## Unlock biometric

> Unlocks a previously locked biometric candidate for a given transaction\
> GUID (\`tguid\`), person GUID (\`pguid\`) and biometric index. When API\
> security is enabled, the user is derived from the token; otherwise\
> the user must be provided. Returns \*\*204 No Content\*\*.

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions/{tguid}/{pguid}/biometric/{index}/user":{"delete":{"tags":["exceptions"],"operationId":"unlockBiometric","parameters":[{"name":"tguid","in":"path","required":true,"schema":{"type":"string"}},{"name":"pguid","in":"path","required":true,"schema":{"type":"string"}},{"name":"index","in":"path","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"204":{"description":"NO CONTENT","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Unlocks a previously locked biometric candidate for a given transaction\nGUID (`tguid`), person GUID (`pguid`) and biometric index. When API\nsecurity is enabled, the user is derived from the token; otherwise\nthe user must be provided. Returns **204 No Content**.","summary":"Unlock biometric"}}}}
```

## Unlock biometric for user

> Unlocks a previously locked biometric candidate for a given transaction\
> GUID (\`tguid\`), person GUID (\`pguid\`) and biometric index, specifying\
> the user that holds the lock. Returns \*\*204 No Content\*\*.

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions/{tguid}/{pguid}/biometric/{index}/user/{user}":{"delete":{"tags":["exceptions"],"operationId":"unlockBiometric_1","parameters":[{"name":"tguid","in":"path","required":true,"schema":{"type":"string"}},{"name":"pguid","in":"path","required":true,"schema":{"type":"string"}},{"name":"index","in":"path","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"user","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"NO CONTENT","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Unlocks a previously locked biometric candidate for a given transaction\nGUID (`tguid`), person GUID (`pguid`) and biometric index, specifying\nthe user that holds the lock. Returns **204 No Content**.","summary":"Unlock biometric for user"}}}}
```

## Treat exception group

> Applies a decision to all exceptions within a group. The request body must\
> provide the group GUID (\`gguid\`), user (overwritten by the security\
> token when API security is enabled), a list of permissions, comments,\
> timeout, a \`decision\` (KEEP or REJECT) and decision parameters: \`keys\`\
> (list of \`{id, value}\` pairs), \`biographics\` (list of \`{id, value}\` pairs),\
> \`labels\`, \`keepTransactions\` and \`removeTransactions\`. Responds with\
> \*\*202 Accepted\*\* and \`data\` containing a \`status\` of \`PENDING\` or \`OK\`.\
> \`PENDING\` indicates the treatment requires a follow‑up decision, while\
> \`OK\` indicates the group was treated successfully. When \`status\` is \`OK\`\
> and the decision is \`KEEP\`, the response may include \`newTguid\`,\
> \`newPguid\` and a list of \`keptTguids\`.

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions/treatment/group":{"post":{"tags":["exceptions"],"operationId":"treatGroup","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TreatExceptionGroupRequest"}}},"required":true},"responses":{"202":{"description":"ACCEPTED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TreatExceptionsResponse"}}}}},"description":"Applies a decision to all exceptions within a group. The request body must\nprovide the group GUID (`gguid`), user (overwritten by the security\ntoken when API security is enabled), a list of permissions, comments,\ntimeout, a `decision` (KEEP or REJECT) and decision parameters: `keys`\n(list of `{id, value}` pairs), `biographics` (list of `{id, value}` pairs),\n`labels`, `keepTransactions` and `removeTransactions`. Responds with\n**202 Accepted** and `data` containing a `status` of `PENDING` or `OK`.\n`PENDING` indicates the treatment requires a follow‑up decision, while\n`OK` indicates the group was treated successfully. When `status` is `OK`\nand the decision is `KEEP`, the response may include `newTguid`,\n`newPguid` and a list of `keptTguids`.","parameters":[],"summary":"Treat exception group"}}},"components":{"schemas":{"TreatExceptionGroupRequest":{"type":"object","properties":{"gguid":{"type":"string"},"user":{"type":"string"},"comments":{"type":"string"},"timeout":{"type":"integer","format":"int32"},"decision":{"type":"string","enum":["APPROVE","REJECT","KEEP"]},"parameters":{"$ref":"#/components/schemas/GroupDecisionParameters"},"permissions":{"type":"array","items":{"type":"string"}}}},"GroupDecisionParameters":{"type":"object","properties":{"keys":{"type":"array","items":{"$ref":"#/components/schemas/Key"}},"biographics":{"type":"array","items":{"$ref":"#/components/schemas/Biographic"}},"labels":{"uniqueItems":true,"type":"array","items":{"type":"string"}},"keepTransactions":{"type":"array","items":{"type":"string"}},"removeTransactions":{"type":"array","items":{"type":"string"}}}},"Key":{"type":"object","properties":{"id":{"description":"Name of entity identifier.","type":"string"},"value":{"description":"Value of entity identifier.","type":"string"}}},"Biographic":{"type":"object","properties":{"id":{"description":"ID of the biographic data being stored.\n\nBiobase Server biographics have their IDs prepended with `bs-`. For example, `bs-name` and `bs-surname`.\n","type":"string"},"value":{"description":"Value of the biographic data.","type":"string"}}},"TreatExceptionsResponse":{"type":"object","properties":{"status":{"description":"Status of the treat operation.","type":"string","enum":["OK","ENQUEUED","ERROR"]},"treatTguid":{"description":"TGUID of treat operation.","type":"string"},"failReason":{"description":"If the treatment call failed, this field will contain a message describing the nature of the failure.","type":"string"}}}}}}
```

## Get group treatment result

> Retrieves the treatment result for an exception group identified by its\
> \`gguid\`. Returns \*\*202 Accepted\*\* with the same \`data\` structure as the\
> group treatment response, enabling clients to poll for the final status.

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions/treatment/group/{gguid}":{"get":{"tags":["exceptions"],"operationId":"getTreatGroupResult","parameters":[{"name":"gguid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"202":{"description":"ACCEPTED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TreatExceptionsResponse"}}}}},"description":"Retrieves the treatment result for an exception group identified by its\n`gguid`. Returns **202 Accepted** with the same `data` structure as the\ngroup treatment response, enabling clients to poll for the final status.","summary":"Get group treatment result"}}},"components":{"schemas":{"TreatExceptionsResponse":{"type":"object","properties":{"status":{"description":"Status of the treat operation.","type":"string","enum":["OK","ENQUEUED","ERROR"]},"treatTguid":{"description":"TGUID of treat operation.","type":"string"},"failReason":{"description":"If the treatment call failed, this field will contain a message describing the nature of the failure.","type":"string"}}}}}}
```

## Resolve pending group

> Completes the treatment of a group left in \`PENDING\` status. The request\
> must include the group GUID (\`gguid\`), user (overwritten by the security\
> token when API security is enabled), permissions, a \`pendingTreatment\`\
> flag (\`ACCEPT\` or \`REJECT\`), comments and an optional timeout. Responds\
> with \*\*202 Accepted\*\* and a \`data\` object containing \`status\`. A status\
> of \`OK\` means the pending treatment was accepted and processed; a\
> status of \`BIOGRAPHIC\` or \`BIOMETRIC\_INCONCLUSIVE\` means the group\
> returns to analysis. When treatment is accepted, \`newTguid\`, \`newPguid\`\
> and \`keptTguids\` may be included.

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions/treatment/group/pending":{"post":{"tags":["exceptions"],"operationId":"treatPendingGroup","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TreatExceptionPendingGroupRequest"}}},"required":true},"responses":{"202":{"description":"ACCEPTED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TreatExceptionsResponse"}}}}},"description":"Completes the treatment of a group left in `PENDING` status. The request\nmust include the group GUID (`gguid`), user (overwritten by the security\ntoken when API security is enabled), permissions, a `pendingTreatment`\nflag (`ACCEPT` or `REJECT`), comments and an optional timeout. Responds\nwith **202 Accepted** and a `data` object containing `status`. A status\nof `OK` means the pending treatment was accepted and processed; a\nstatus of `BIOGRAPHIC` or `BIOMETRIC_INCONCLUSIVE` means the group\nreturns to analysis. When treatment is accepted, `newTguid`, `newPguid`\nand `keptTguids` may be included.","parameters":[],"summary":"Resolve pending group"}}},"components":{"schemas":{"TreatExceptionPendingGroupRequest":{"type":"object","properties":{"gguid":{"type":"string"},"pendingTreatment":{"type":"string","enum":["ACCEPT","REJECT"]},"user":{"type":"string"},"comments":{"type":"string"},"timeout":{"type":"integer","format":"int32"},"permissions":{"type":"array","items":{"type":"string"}}}},"TreatExceptionsResponse":{"type":"object","properties":{"status":{"description":"Status of the treat operation.","type":"string","enum":["OK","ENQUEUED","ERROR"]},"treatTguid":{"description":"TGUID of treat operation.","type":"string"},"failReason":{"description":"If the treatment call failed, this field will contain a message describing the nature of the failure.","type":"string"}}}}}}
```

## Treat biometric

> Treats an uncertain biometric candidate that has been locked by the user.\
> The request must include user (overwritten by the security token when API\
> security is enabled), permissions, \`enrollTguid\`, \`exceptionPguid\` (the\
> matched person), a \`decision\` (\`HIT\`, \`NO\_HIT\` or \`UNCERTAIN\_EXPERT\`),\
> \`index\` and a \`timeout\`. Returns \*\*202 Accepted\*\* with a \`data.status\`\
> reflecting the outcome: \`ON\`, \`ENQUEUED\` or \`ERROR\` when all biometric\
> treatments have been processed and the exception is treated as\
> APPROVED; \`NOT\_FINAL\` when further biometrics remain; \`BIOGRAPHIC\`,\
> \`BIOMETRIC\_MISMATCH\` or \`BIOMETRIC\_INCONCLUSIVE\` when the treatments\
> result in a biographic, mismatch or inconclusive target.

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions/treatment/biometric":{"post":{"tags":["exceptions"],"operationId":"treatBiometric","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TreatExceptionBiometricRequest"}}},"required":true},"responses":{"202":{"description":"ACCEPTED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TreatExceptionsResponse"}}}}},"description":"Treats an uncertain biometric candidate that has been locked by the user.\nThe request must include user (overwritten by the security token when API\nsecurity is enabled), permissions, `enrollTguid`, `exceptionPguid` (the\nmatched person), a `decision` (`HIT`, `NO_HIT` or `UNCERTAIN_EXPERT`),\n`index` and a `timeout`. Returns **202 Accepted** with a `data.status`\nreflecting the outcome: `ON`, `ENQUEUED` or `ERROR` when all biometric\ntreatments have been processed and the exception is treated as\nAPPROVED; `NOT_FINAL` when further biometrics remain; `BIOGRAPHIC`,\n`BIOMETRIC_MISMATCH` or `BIOMETRIC_INCONCLUSIVE` when the treatments\nresult in a biographic, mismatch or inconclusive target.","parameters":[],"summary":"Treat biometric"}}},"components":{"schemas":{"TreatExceptionBiometricRequest":{"type":"object","properties":{"enrollTguid":{"type":"string"},"exceptionPguid":{"type":"string"},"index":{"type":"integer","format":"int32"},"decision":{"type":"string","enum":["HIT","NO_HIT","UNCERTAIN","UNCERTAIN_EXPERT","MISMATCH","ERROR"]},"user":{"type":"string"},"timeout":{"type":"integer","format":"int32"},"permissions":{"type":"array","items":{"type":"string"}}}},"TreatExceptionsResponse":{"type":"object","properties":{"status":{"description":"Status of the treat operation.","type":"string","enum":["OK","ENQUEUED","ERROR"]},"treatTguid":{"description":"TGUID of treat operation.","type":"string"},"failReason":{"description":"If the treatment call failed, this field will contain a message describing the nature of the failure.","type":"string"}}}}}}
```

## Get biometric treatment result

> Retrieves the treatment result for a biometric candidate identified by\
> transaction GUID (\`tguid\`), person GUID (\`pguid\`) and biometric index.\
> Returns \*\*202 Accepted\*\* with the same \`data\` structure as the\
> biometric treatment response, enabling clients to poll for the final\
> status.

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions/treatment/biometric/{tguid}/{pguid}/biometric/{index}":{"get":{"tags":["exceptions"],"operationId":"getTreatBiometricResult","parameters":[{"name":"tguid","in":"path","required":true,"schema":{"type":"string"}},{"name":"pguid","in":"path","required":true,"schema":{"type":"string"}},{"name":"index","in":"path","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"202":{"description":"ACCEPTED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TreatExceptionsResponse"}}}}},"description":"Retrieves the treatment result for a biometric candidate identified by\ntransaction GUID (`tguid`), person GUID (`pguid`) and biometric index.\nReturns **202 Accepted** with the same `data` structure as the\nbiometric treatment response, enabling clients to poll for the final\nstatus.","summary":"Get biometric treatment result"}}},"components":{"schemas":{"TreatExceptionsResponse":{"type":"object","properties":{"status":{"description":"Status of the treat operation.","type":"string","enum":["OK","ENQUEUED","ERROR"]},"treatTguid":{"description":"TGUID of treat operation.","type":"string"},"failReason":{"description":"If the treatment call failed, this field will contain a message describing the nature of the failure.","type":"string"}}}}}}
```

## Get aggregated biometric treatment result

> Retrieves the treatment result for a biometric candidate identified by\
> aggregated GUID (\`aguid\`) and biometric index. This endpoint is used\
> when dealing with aggregated transaction identifiers. Returns\
> \*\*202 Accepted\*\* with the same \`data\` structure as the biometric\
> treatment response.

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions/treatment/biometric/{aguid}/biometric/{index}":{"get":{"tags":["exceptions"],"operationId":"getTreatBiometricResult_1","parameters":[{"name":"aguid","in":"path","required":true,"schema":{"type":"string"}},{"name":"index","in":"path","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"202":{"description":"ACCEPTED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TreatExceptionsResponse"}}}}},"description":"Retrieves the treatment result for a biometric candidate identified by\naggregated GUID (`aguid`) and biometric index. This endpoint is used\nwhen dealing with aggregated transaction identifiers. Returns\n**202 Accepted** with the same `data` structure as the biometric\ntreatment response.","summary":"Get aggregated biometric treatment result"}}},"components":{"schemas":{"TreatExceptionsResponse":{"type":"object","properties":{"status":{"description":"Status of the treat operation.","type":"string","enum":["OK","ENQUEUED","ERROR"]},"treatTguid":{"description":"TGUID of treat operation.","type":"string"},"failReason":{"description":"If the treatment call failed, this field will contain a message describing the nature of the failure.","type":"string"}}}}}}
```

## Reprocess a list of transaction exceptions

> Re-executes the processing of transaction exceptions listed in the request, re-applying extraction/identification steps to correct failures.

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions/reprocess":{"put":{"tags":["exceptions"],"operationId":"reprocess","summary":"Reprocess a list of transaction exceptions","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReprocessListRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TreatExceptionsResponse"}}}}},"description":"Re-executes the processing of transaction exceptions listed in the request, re-applying extraction/identification steps to correct failures.","parameters":[]}}},"components":{"schemas":{"ReprocessListRequest":{"type":"object","properties":{"tguids":{"type":"array","items":{"type":"string"}},"pageSize":{"type":"integer","format":"int32"},"user":{"type":"string"},"comments":{"type":"string"},"justAnalyse":{"type":"boolean"}}},"TreatExceptionsResponse":{"type":"object","properties":{"status":{"description":"Status of the treat operation.","type":"string","enum":["OK","ENQUEUED","ERROR"]},"treatTguid":{"description":"TGUID of treat operation.","type":"string"},"failReason":{"description":"If the treatment call failed, this field will contain a message describing the nature of the failure.","type":"string"}}}}}}
```

## Get exception reprocessing

> Provides the progress and result of reprocessing a specific exception identified by the GUID.

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions/reprocess/{guid}":{"get":{"tags":["exceptions"],"operationId":"getReprocess","parameters":[{"name":"guid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReprocessExceptions"}}}}},"description":"Provides the progress and result of reprocessing a specific exception identified by the GUID.","summary":"Get exception reprocessing"}}},"components":{"schemas":{"ReprocessExceptions":{"type":"object","properties":{"guid":{"type":"string"},"exceptions":{"type":"array","items":{"$ref":"#/components/schemas/ReprocessException"}},"status":{"type":"string","enum":["ENQUEUED","COUNTING","LISTING","PROCESSING","PROCESSED"]},"index":{"type":"integer","format":"int32"},"processed":{"type":"integer","format":"int64"},"total":{"type":"integer","format":"int64"},"httpResponse":{"$ref":"#/components/schemas/HttpResponse"}}},"ReprocessException":{"type":"object","properties":{"index":{"type":"integer","format":"int32"},"aguid":{"type":"string"},"entrantTguid":{"type":"string"},"entrantPguid":{"type":"string"},"entrantReextracted":{"type":"boolean"},"referenceTguid":{"type":"string"},"referencePguid":{"type":"string"},"referenceReextracted":{"type":"boolean"},"type":{"type":"string","enum":["ENROLL","UPDATE","VERIFY","IDENTIFY"]},"oldStatus":{"type":"string","enum":["ANALYSIS","DIFFERENT_FINGERS","SAME_FINGERS","INCORRECT_ENROLL","RECOLLECT","MERGE_TRANSACTIONS","APPROVE","REJECT","ERROR","REFUSED"]},"newStatus":{"type":"string","enum":["ANALYSIS","DIFFERENT_FINGERS","SAME_FINGERS","INCORRECT_ENROLL","RECOLLECT","MERGE_TRANSACTIONS","APPROVE","REJECT","ERROR","REFUSED"]},"message":{"type":"string"},"httpResponse":{"$ref":"#/components/schemas/HttpResponse"}}},"HttpResponse":{"type":"object","properties":{"httpCode":{"type":"integer","format":"int32"},"body":{"type":"string"}}}}}}
```

## Reprocess transaction in exception

> Manually reprocesses a transaction in exception, provided in the body, returning the result of this re-execution.

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions/reprocess/one":{"put":{"tags":["exceptions"],"operationId":"reprocess_1","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReprocessRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReprocessExceptions"}}}}},"description":"Manually reprocesses a transaction in exception, provided in the body, returning the result of this re-execution.","summary":"Reprocess transaction in exception","parameters":[]}}},"components":{"schemas":{"ReprocessRequest":{"type":"object","properties":{"tguid":{"type":"string"},"user":{"type":"string"},"comments":{"type":"string"},"justAnalyse":{"type":"boolean"}}},"ReprocessExceptions":{"type":"object","properties":{"guid":{"type":"string"},"exceptions":{"type":"array","items":{"$ref":"#/components/schemas/ReprocessException"}},"status":{"type":"string","enum":["ENQUEUED","COUNTING","LISTING","PROCESSING","PROCESSED"]},"index":{"type":"integer","format":"int32"},"processed":{"type":"integer","format":"int64"},"total":{"type":"integer","format":"int64"},"httpResponse":{"$ref":"#/components/schemas/HttpResponse"}}},"ReprocessException":{"type":"object","properties":{"index":{"type":"integer","format":"int32"},"aguid":{"type":"string"},"entrantTguid":{"type":"string"},"entrantPguid":{"type":"string"},"entrantReextracted":{"type":"boolean"},"referenceTguid":{"type":"string"},"referencePguid":{"type":"string"},"referenceReextracted":{"type":"boolean"},"type":{"type":"string","enum":["ENROLL","UPDATE","VERIFY","IDENTIFY"]},"oldStatus":{"type":"string","enum":["ANALYSIS","DIFFERENT_FINGERS","SAME_FINGERS","INCORRECT_ENROLL","RECOLLECT","MERGE_TRANSACTIONS","APPROVE","REJECT","ERROR","REFUSED"]},"newStatus":{"type":"string","enum":["ANALYSIS","DIFFERENT_FINGERS","SAME_FINGERS","INCORRECT_ENROLL","RECOLLECT","MERGE_TRANSACTIONS","APPROVE","REJECT","ERROR","REFUSED"]},"message":{"type":"string"},"httpResponse":{"$ref":"#/components/schemas/HttpResponse"}}},"HttpResponse":{"type":"object","properties":{"httpCode":{"type":"integer","format":"int32"},"body":{"type":"string"}}}}}}
```

## Get next exception group

> Selects and locks the next available exception group for analysis and\
> treatment. The request includes a user (overwritten by the security token\
> when API security is on), a list of organization permissions, an optional\
> \`order\` (ASC or DESC) controlling the sort by priority, pending status and\
> timestamp, and an \`origin\` (ENTRANT or BOTH) to filter by organization\
> origin. Responds with \*\*200 OK\*\* when a group is found, returning \`data\`\
> with group details and \`remaining\` for the count of groups pending\
> analysis or pending treatment. Returns \*\*204 No Content\*\* when no group is\
> available.

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions/nextGroup":{"post":{"tags":["exceptions"],"operationId":"getNextExceptionGroup","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetNextGroupRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetExceptionGroupResponse"}}}}},"description":"Selects and locks the next available exception group for analysis and\ntreatment. The request includes a user (overwritten by the security token\nwhen API security is on), a list of organization permissions, an optional\n`order` (ASC or DESC) controlling the sort by priority, pending status and\ntimestamp, and an `origin` (ENTRANT or BOTH) to filter by organization\norigin. Responds with **200 OK** when a group is found, returning `data`\nwith group details and `remaining` for the count of groups pending\nanalysis or pending treatment. Returns **204 No Content** when no group is\navailable.","parameters":[],"summary":"Get next exception group"}}},"components":{"schemas":{"GetNextGroupRequest":{"type":"object","properties":{"user":{"type":"string"},"order":{"type":"string","enum":["ASC","DESC"]},"permissions":{"type":"array","items":{"type":"string"}},"origin":{"type":"string","enum":["ENTRANT","BOTH"]},"pending":{"type":"boolean"}}},"GetExceptionGroupResponse":{"type":"object","properties":{"remaining":{"type":"integer","format":"int64"},"treatable":{"type":"boolean"},"httpResponse":{"$ref":"#/components/schemas/HttpResponse"},"data":{"$ref":"#/components/schemas/ExceptionGroup"}}},"HttpResponse":{"type":"object","properties":{"httpCode":{"type":"integer","format":"int32"},"body":{"type":"string"}}},"ExceptionGroup":{"type":"object","properties":{"gguid":{"type":"string"},"tguid":{"type":"string"},"target":{"type":"string","enum":["BIOGRAPHIC","BIOMETRIC","BIOMETRIC_INCONCLUSIVE","BIOMETRIC_MISMATCH"]},"decision":{"type":"string","enum":["APPROVE","REJECT","KEEP"]},"status":{"type":"string","enum":["ANALYSIS","PENDING","READY","PROCESSING","DONE","REFUSED","ERROR"]},"priority":{"type":"boolean"},"organizations":{"type":"array","items":{"$ref":"#/components/schemas/Organization"}},"created":{"type":"string","format":"date-time"},"updated":{"type":"string","format":"date-time"},"user":{"type":"string"},"comments":{"type":"string"},"message":{"type":"string"},"parameters":{"$ref":"#/components/schemas/GroupDecisionParameters"},"lightsOutCriteria":{"$ref":"#/components/schemas/LightsOutCriteria"},"lockedUser":{"type":"string"},"lockedTimestamp":{"type":"string","format":"date-time"},"lockedTimeout":{"type":"string","format":"date-time"},"exceptions":{"type":"array","items":{"$ref":"#/components/schemas/Exception"}},"newTguid":{"type":"string"},"refusedStatus":{"type":"string","enum":["CREATED","REMOVED","READY_TO_RESEND","SENDING","SENT","ERROR"]},"refusedNewTguid":{"type":"string"},"refusedGroups":{"type":"array","items":{"$ref":"#/components/schemas/ExceptionGroup"}},"holdingGroups":{"type":"array","items":{"$ref":"#/components/schemas/ExceptionGroup"}}}},"Organization":{"type":"object","properties":{"parent":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"}}},"GroupDecisionParameters":{"type":"object","properties":{"keys":{"type":"array","items":{"$ref":"#/components/schemas/Key"}},"biographics":{"type":"array","items":{"$ref":"#/components/schemas/Biographic"}},"labels":{"uniqueItems":true,"type":"array","items":{"type":"string"}},"keepTransactions":{"type":"array","items":{"type":"string"}},"removeTransactions":{"type":"array","items":{"type":"string"}}}},"Key":{"type":"object","properties":{"id":{"description":"Name of entity identifier.","type":"string"},"value":{"description":"Value of entity identifier.","type":"string"}}},"Biographic":{"type":"object","properties":{"id":{"description":"ID of the biographic data being stored.\n\nBiobase Server biographics have their IDs prepended with `bs-`. For example, `bs-name` and `bs-surname`.\n","type":"string"},"value":{"description":"Value of the biographic data.","type":"string"}}},"LightsOutCriteria":{"type":"object","properties":{"nonConflitantKeys":{"type":"array","items":{"$ref":"#/components/schemas/Key"}},"weakKeys":{"type":"array","items":{"type":"string"}},"matchedBiographics":{"type":"array","items":{"type":"string"}}}},"Exception":{"type":"object","properties":{"enrollPguid":{"description":"Global unique ID of the person.","type":"string"},"enrollTguid":{"description":"Global unique ID of the transaction.","type":"string"},"transactionTimestamp":{"description":"Timestamp of the transaction that generated the Exception.","type":"integer","format":"int64"},"match":{"$ref":"#/components/schemas/Match"},"assignedUser":{"description":"Username of user tasked with treating the exception.","type":"string"},"exceptionAnalysis":{"$ref":"#/components/schemas/ExceptionAnalysis"},"transactionType":{"description":"Type of the transaction that generated the exception.","type":"string","enum":["ENROLL","UPDATE"]}}},"Match":{"type":"object","properties":{"matchedPersonPguid":{"description":"PGUID of the person the candidate matched against.","type":"string"},"matchedPersonTguid":{"description":"TGUID of the person the candidate matched against.","type":"string"},"biometricMatches":{"description":"Information about the match.","type":"array","items":{"$ref":"#/components/schemas/BiometricMatch"}}}},"BiometricMatch":{"type":"object","properties":{"score":{"description":"Score of the match.","type":"integer","format":"int32"},"queryIndex":{"description":"Index of the biometric data that was sent and caused a match.","type":"integer","format":"int32"},"referenceIndex":{"description":"Index of the biometric data, from the already enrolled person, which matched.","type":"integer","format":"int32"},"minutia":{"description":"Array of minutia matches. Returned only for latent searches.","type":"array","items":{"$ref":"#/components/schemas/Minutiae"}}}},"Minutiae":{"type":"object","properties":{"query":{"description":"Index of Minutiae, from the provided biometric data, which was involved in the match.","type":"integer","format":"int32"},"reference":{"description":"Index of Minutiae, from biometric data already in the database, which was involved in the match.","type":"integer","format":"int32"}}},"ExceptionAnalysis":{"type":"object","properties":{"status":{"description":"Status of the exception.","type":"string","enum":["ANALYSIS","DIFFERENT_FINGERS","SAME_FINGERS","INCORRECT_ENROLL","RECOLLECT","MERGE_TRANSACTIONS","APPROVE","REJECT","ERROR","REFUSED"]},"exceptionTimestamp":{"description":"Timestamp of the exception. This is the timestamp that should be used during exception listing/filtering.","type":"integer","format":"int64"},"user":{"description":"User that performed the analysis of the exception. Used only if LDAP is not active.","type":"string"},"comments":{"description":"Comments made by the user.","type":"string"}}}}}}
```

## Get next biometric

> Selects and locks the next uncertain biometric candidate requiring a\
> manual decision. The request includes a user (overwritten by the\
> security token when API security is enabled), a list of permissions,\
> an \`order\` (ASC or DESC), an optional \`modality\` (FINGERPRINT or\
> FACE) and an \`origin\` (ENTRANT or BOTH). If no biometric is available,\
> responds with \*\*204 No Content\*\*. Otherwise returns \*\*200 OK\*\* with\
> \`remaining\` for the number of remaining biometrics and \`data\` containing\
> the selected biometric candidate: \`enrollPguid\`, \`enrollTguid\`,\
> \`transactionTimestamp\`, match details (\`matchedPersonPguid\`,\
> \`matchedPersonTguid\`, \`biometricMatches\` with \`score\`, \`queryIndex\`,\
> \`referenceIndex\`, \`minutia\` and \`decision\`), \`exceptionAnalysis\`\
> status (\`ANALYSIS\`), \`transactionType\`, \`priority\` and \`target\`.

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions/nextBiometric":{"post":{"tags":["exceptions"],"operationId":"getNextExceptionBiometric","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetNextBiometricRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetExceptionsResponse"}}}},"204":{"description":"NO CONTENT","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Selects and locks the next uncertain biometric candidate requiring a\nmanual decision. The request includes a user (overwritten by the\nsecurity token when API security is enabled), a list of permissions,\nan `order` (ASC or DESC), an optional `modality` (FINGERPRINT or\nFACE) and an `origin` (ENTRANT or BOTH). If no biometric is available,\nresponds with **204 No Content**. Otherwise returns **200 OK** with\n`remaining` for the number of remaining biometrics and `data` containing\nthe selected biometric candidate: `enrollPguid`, `enrollTguid`,\n`transactionTimestamp`, match details (`matchedPersonPguid`,\n`matchedPersonTguid`, `biometricMatches` with `score`, `queryIndex`,\n`referenceIndex`, `minutia` and `decision`), `exceptionAnalysis`\nstatus (`ANALYSIS`), `transactionType`, `priority` and `target`.","parameters":[],"summary":"Get next biometric"}}},"components":{"schemas":{"GetNextBiometricRequest":{"type":"object","properties":{"user":{"type":"string"},"order":{"type":"string","enum":["ASC","DESC"]},"permissions":{"type":"array","items":{"type":"string"}},"modality":{"type":"string","enum":["FINGERPRINT","FACE"]},"origin":{"type":"string","enum":["ENTRANT","BOTH"]}}},"GetExceptionsResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Exception"}}},"Exception":{"type":"object","properties":{"enrollPguid":{"description":"Global unique ID of the person.","type":"string"},"enrollTguid":{"description":"Global unique ID of the transaction.","type":"string"},"transactionTimestamp":{"description":"Timestamp of the transaction that generated the Exception.","type":"integer","format":"int64"},"match":{"$ref":"#/components/schemas/Match"},"assignedUser":{"description":"Username of user tasked with treating the exception.","type":"string"},"exceptionAnalysis":{"$ref":"#/components/schemas/ExceptionAnalysis"},"transactionType":{"description":"Type of the transaction that generated the exception.","type":"string","enum":["ENROLL","UPDATE"]}}},"Match":{"type":"object","properties":{"matchedPersonPguid":{"description":"PGUID of the person the candidate matched against.","type":"string"},"matchedPersonTguid":{"description":"TGUID of the person the candidate matched against.","type":"string"},"biometricMatches":{"description":"Information about the match.","type":"array","items":{"$ref":"#/components/schemas/BiometricMatch"}}}},"BiometricMatch":{"type":"object","properties":{"score":{"description":"Score of the match.","type":"integer","format":"int32"},"queryIndex":{"description":"Index of the biometric data that was sent and caused a match.","type":"integer","format":"int32"},"referenceIndex":{"description":"Index of the biometric data, from the already enrolled person, which matched.","type":"integer","format":"int32"},"minutia":{"description":"Array of minutia matches. Returned only for latent searches.","type":"array","items":{"$ref":"#/components/schemas/Minutiae"}}}},"Minutiae":{"type":"object","properties":{"query":{"description":"Index of Minutiae, from the provided biometric data, which was involved in the match.","type":"integer","format":"int32"},"reference":{"description":"Index of Minutiae, from biometric data already in the database, which was involved in the match.","type":"integer","format":"int32"}}},"ExceptionAnalysis":{"type":"object","properties":{"status":{"description":"Status of the exception.","type":"string","enum":["ANALYSIS","DIFFERENT_FINGERS","SAME_FINGERS","INCORRECT_ENROLL","RECOLLECT","MERGE_TRANSACTIONS","APPROVE","REJECT","ERROR","REFUSED"]},"exceptionTimestamp":{"description":"Timestamp of the exception. This is the timestamp that should be used during exception listing/filtering.","type":"integer","format":"int64"},"user":{"description":"User that performed the analysis of the exception. Used only if LDAP is not active.","type":"string"},"comments":{"description":"Comments made by the user.","type":"string"}}}}}}
```

## Get exception log

> Retrieves detailed logs of transaction exception handling, allowing auditing by period, pguid, tguid and other parameters.

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions/log":{"get":{"tags":["exceptions"],"operationId":"listOperationLog","parameters":[{"name":"startDate","in":"query","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"endDate","in":"query","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"user","in":"query","required":false,"schema":{"type":"string"}},{"name":"operation","in":"query","required":false,"schema":{"type":"string","enum":["UNKNOWN","CONNECT","DISCONNECT","AUTHENTICATE","ENROLL","EXTERNAL_AUTHENTICATE","BATCH_ENROLL","REGISTER_SEARCH","SEARCH","DELETE","GET_RESULT","CLOSE_SESSION","FILTER","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","TREAT_EXCEPTION","TREAT_ANOMALY","CREATE_EXCEPTION","CREATE_EXCEPTION_GROUP","PRIORITY_EXCEPTION","PRIORITY_EXCEPTION_GROUP","TREAT_EXCEPTION_BIOMETRIC","TREAT_EXCEPTION_GROUP","CHANGE_REFUSED_STATUS","RESEND_REFUSED","LIGHTS_OUT"]}},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["EXCEPTION","EXCEPTION_BIOMETRIC","EXCEPTION_GROUP","TRANSACTION"]}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["ANALYSIS","READY","PROCESSING","REFUSED","DONE","PENDING","ERROR","ENQUEUED","OK","NOT_FINAL","BIOMETRIC","BIOMETRIC_INCONCLUSIVE","BIOMETRIC_MISMATCH","BIOGRAPHIC","APPROVE","REJECT","LIGHTS_OUT"]}},{"name":"decision","in":"query","required":false,"schema":{"type":"string","enum":["UNCERTAIN","UNCERTAIN_EXPERT","MISMATCH","NO_HIT","HIT","ERROR","APPROVE","REJECT","KEEP","CREATED","REMOVED","READY_TO_RESEND"]}},{"name":"index","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"pageIndex","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListOperationLogResponse"}}}}},"description":"Retrieves detailed logs of transaction exception handling, allowing auditing by period, pguid, tguid and other parameters.","summary":"Get exception log"}}},"components":{"schemas":{"ListOperationLogResponse":{"type":"object","properties":{"httpResponse":{"$ref":"#/components/schemas/HttpResponse"},"data":{"type":"array","items":{"$ref":"#/components/schemas/OperationLog"}},"pagination":{"$ref":"#/components/schemas/Pagination"}}},"HttpResponse":{"type":"object","properties":{"httpCode":{"type":"integer","format":"int32"},"body":{"type":"string"}}},"OperationLog":{"type":"object","properties":{"guid":{"type":"string"},"logType":{"type":"string","enum":["EXCEPTION","EXCEPTION_BIOMETRIC","EXCEPTION_GROUP","TRANSACTION"]},"operation":{"type":"string","enum":["UNKNOWN","CONNECT","DISCONNECT","AUTHENTICATE","ENROLL","EXTERNAL_AUTHENTICATE","BATCH_ENROLL","REGISTER_SEARCH","SEARCH","DELETE","GET_RESULT","CLOSE_SESSION","FILTER","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","TREAT_EXCEPTION","TREAT_ANOMALY","CREATE_EXCEPTION","CREATE_EXCEPTION_GROUP","PRIORITY_EXCEPTION","PRIORITY_EXCEPTION_GROUP","TREAT_EXCEPTION_BIOMETRIC","TREAT_EXCEPTION_GROUP","CHANGE_REFUSED_STATUS","RESEND_REFUSED","LIGHTS_OUT"]},"index":{"type":"integer","format":"int32"},"status":{"type":"string","enum":["ANALYSIS","READY","PROCESSING","REFUSED","DONE","PENDING","ERROR","ENQUEUED","OK","NOT_FINAL","BIOMETRIC","BIOMETRIC_INCONCLUSIVE","BIOMETRIC_MISMATCH","BIOGRAPHIC","APPROVE","REJECT","LIGHTS_OUT"]},"decision":{"type":"string","enum":["UNCERTAIN","UNCERTAIN_EXPERT","MISMATCH","NO_HIT","HIT","ERROR","APPROVE","REJECT","KEEP","CREATED","REMOVED","READY_TO_RESEND"]},"user":{"type":"string"},"timestamp":{"type":"string","format":"date-time"},"tguid":{"type":"string"},"pguid":{"type":"string"},"keptTguids":{"type":"array","items":{"type":"string"}},"message":{"type":"string"}}},"Pagination":{"type":"object","properties":{"total":{"description":"Total number of elements that matched the selection criteria.","type":"integer","format":"int64"},"count":{"description":"Number of elements in the response.","type":"integer","format":"int32"},"pageSize":{"description":"Size of the page.","type":"integer","format":"int32"},"currentPage":{"description":"Number of the current page.","type":"integer","format":"int64"},"totalPages":{"description":"Number of total pages.","type":"integer","format":"int64"}}}}}}
```

## List exception groups

> Returns a paginated list of exception groups pending analysis or treatment. Use\
> query parameters to filter by status, decision, date range, user, lockedUser,\
> priority flag, target, organization, origin (ENTRANT, REFERENCE, BOTH), and\
> pagination (pageIndex, pageSize). Groups are ordered by priority, pending\
> status, target and creation time. Each group entry includes group identifiers\
> (gguid, tguid), target, status, decision, priority flag, organizations with\
> origin, timestamps, user, comments, and decision parameters such as keys,\
> biographics, labels, kept and removed transactions.

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions/group":{"get":{"tags":["exceptions"],"operationId":"listGroups","parameters":[{"name":"statuses","in":"query","required":false,"schema":{"uniqueItems":true,"type":"array","items":{"type":"string","enum":["ANALYSIS","PENDING","READY","PROCESSING","DONE","REFUSED","ERROR"]}}},{"name":"status","in":"query","required":false,"schema":{"uniqueItems":true,"type":"array","items":{"type":"string","enum":["ANALYSIS","PENDING","READY","PROCESSING","DONE","REFUSED","ERROR"]}}},{"name":"decisions","in":"query","required":false,"schema":{"uniqueItems":true,"type":"array","items":{"type":"string","enum":["APPROVE","REJECT","KEEP"]}}},{"name":"decision","in":"query","required":false,"schema":{"uniqueItems":true,"type":"array","items":{"type":"string","enum":["APPROVE","REJECT","KEEP"]}}},{"name":"startDate","in":"query","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"endDate","in":"query","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"user","in":"query","required":false,"schema":{"type":"string"}},{"name":"lockedUser","in":"query","required":false,"schema":{"type":"string"}},{"name":"priority","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"target","in":"query","required":false,"schema":{"type":"string","enum":["BIOGRAPHIC","BIOMETRIC","BIOMETRIC_INCONCLUSIVE","BIOMETRIC_MISMATCH"]}},{"name":"organization","in":"query","required":false,"schema":{"uniqueItems":true,"type":"array","items":{"type":"string"}}},{"name":"permission","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"userOrganizations","in":"query","required":false,"schema":{"type":"boolean"}},{"name":"gguid","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"key","in":"query","required":false,"schema":{"uniqueItems":true,"type":"array","items":{"type":"string"}}},{"name":"pageIndex","in":"query","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"pageSize","in":"query","required":false,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListExceptionGroupResponse"}}}}},"description":"Returns a paginated list of exception groups pending analysis or treatment. Use\nquery parameters to filter by status, decision, date range, user, lockedUser,\npriority flag, target, organization, origin (ENTRANT, REFERENCE, BOTH), and\npagination (pageIndex, pageSize). Groups are ordered by priority, pending\nstatus, target and creation time. Each group entry includes group identifiers\n(gguid, tguid), target, status, decision, priority flag, organizations with\norigin, timestamps, user, comments, and decision parameters such as keys,\nbiographics, labels, kept and removed transactions.","summary":"List exception groups"}}},"components":{"schemas":{"ListExceptionGroupResponse":{"type":"object","properties":{"httpResponse":{"$ref":"#/components/schemas/HttpResponse"},"data":{"type":"array","items":{"$ref":"#/components/schemas/ExceptionGroup"}},"pagination":{"$ref":"#/components/schemas/Pagination"}}},"HttpResponse":{"type":"object","properties":{"httpCode":{"type":"integer","format":"int32"},"body":{"type":"string"}}},"ExceptionGroup":{"type":"object","properties":{"gguid":{"type":"string"},"tguid":{"type":"string"},"target":{"type":"string","enum":["BIOGRAPHIC","BIOMETRIC","BIOMETRIC_INCONCLUSIVE","BIOMETRIC_MISMATCH"]},"decision":{"type":"string","enum":["APPROVE","REJECT","KEEP"]},"status":{"type":"string","enum":["ANALYSIS","PENDING","READY","PROCESSING","DONE","REFUSED","ERROR"]},"priority":{"type":"boolean"},"organizations":{"type":"array","items":{"$ref":"#/components/schemas/Organization"}},"created":{"type":"string","format":"date-time"},"updated":{"type":"string","format":"date-time"},"user":{"type":"string"},"comments":{"type":"string"},"message":{"type":"string"},"parameters":{"$ref":"#/components/schemas/GroupDecisionParameters"},"lightsOutCriteria":{"$ref":"#/components/schemas/LightsOutCriteria"},"lockedUser":{"type":"string"},"lockedTimestamp":{"type":"string","format":"date-time"},"lockedTimeout":{"type":"string","format":"date-time"},"exceptions":{"type":"array","items":{"$ref":"#/components/schemas/Exception"}},"newTguid":{"type":"string"},"refusedStatus":{"type":"string","enum":["CREATED","REMOVED","READY_TO_RESEND","SENDING","SENT","ERROR"]},"refusedNewTguid":{"type":"string"},"refusedGroups":{"type":"array","items":{"$ref":"#/components/schemas/ExceptionGroup"}},"holdingGroups":{"type":"array","items":{"$ref":"#/components/schemas/ExceptionGroup"}}}},"Organization":{"type":"object","properties":{"parent":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"}}},"GroupDecisionParameters":{"type":"object","properties":{"keys":{"type":"array","items":{"$ref":"#/components/schemas/Key"}},"biographics":{"type":"array","items":{"$ref":"#/components/schemas/Biographic"}},"labels":{"uniqueItems":true,"type":"array","items":{"type":"string"}},"keepTransactions":{"type":"array","items":{"type":"string"}},"removeTransactions":{"type":"array","items":{"type":"string"}}}},"Key":{"type":"object","properties":{"id":{"description":"Name of entity identifier.","type":"string"},"value":{"description":"Value of entity identifier.","type":"string"}}},"Biographic":{"type":"object","properties":{"id":{"description":"ID of the biographic data being stored.\n\nBiobase Server biographics have their IDs prepended with `bs-`. For example, `bs-name` and `bs-surname`.\n","type":"string"},"value":{"description":"Value of the biographic data.","type":"string"}}},"LightsOutCriteria":{"type":"object","properties":{"nonConflitantKeys":{"type":"array","items":{"$ref":"#/components/schemas/Key"}},"weakKeys":{"type":"array","items":{"type":"string"}},"matchedBiographics":{"type":"array","items":{"type":"string"}}}},"Exception":{"type":"object","properties":{"enrollPguid":{"description":"Global unique ID of the person.","type":"string"},"enrollTguid":{"description":"Global unique ID of the transaction.","type":"string"},"transactionTimestamp":{"description":"Timestamp of the transaction that generated the Exception.","type":"integer","format":"int64"},"match":{"$ref":"#/components/schemas/Match"},"assignedUser":{"description":"Username of user tasked with treating the exception.","type":"string"},"exceptionAnalysis":{"$ref":"#/components/schemas/ExceptionAnalysis"},"transactionType":{"description":"Type of the transaction that generated the exception.","type":"string","enum":["ENROLL","UPDATE"]}}},"Match":{"type":"object","properties":{"matchedPersonPguid":{"description":"PGUID of the person the candidate matched against.","type":"string"},"matchedPersonTguid":{"description":"TGUID of the person the candidate matched against.","type":"string"},"biometricMatches":{"description":"Information about the match.","type":"array","items":{"$ref":"#/components/schemas/BiometricMatch"}}}},"BiometricMatch":{"type":"object","properties":{"score":{"description":"Score of the match.","type":"integer","format":"int32"},"queryIndex":{"description":"Index of the biometric data that was sent and caused a match.","type":"integer","format":"int32"},"referenceIndex":{"description":"Index of the biometric data, from the already enrolled person, which matched.","type":"integer","format":"int32"},"minutia":{"description":"Array of minutia matches. Returned only for latent searches.","type":"array","items":{"$ref":"#/components/schemas/Minutiae"}}}},"Minutiae":{"type":"object","properties":{"query":{"description":"Index of Minutiae, from the provided biometric data, which was involved in the match.","type":"integer","format":"int32"},"reference":{"description":"Index of Minutiae, from biometric data already in the database, which was involved in the match.","type":"integer","format":"int32"}}},"ExceptionAnalysis":{"type":"object","properties":{"status":{"description":"Status of the exception.","type":"string","enum":["ANALYSIS","DIFFERENT_FINGERS","SAME_FINGERS","INCORRECT_ENROLL","RECOLLECT","MERGE_TRANSACTIONS","APPROVE","REJECT","ERROR","REFUSED"]},"exceptionTimestamp":{"description":"Timestamp of the exception. This is the timestamp that should be used during exception listing/filtering.","type":"integer","format":"int64"},"user":{"description":"User that performed the analysis of the exception. Used only if LDAP is not active.","type":"string"},"comments":{"description":"Comments made by the user.","type":"string"}}},"Pagination":{"type":"object","properties":{"total":{"description":"Total number of elements that matched the selection criteria.","type":"integer","format":"int64"},"count":{"description":"Number of elements in the response.","type":"integer","format":"int32"},"pageSize":{"description":"Size of the page.","type":"integer","format":"int32"},"currentPage":{"description":"Number of the current page.","type":"integer","format":"int64"},"totalPages":{"description":"Number of total pages.","type":"integer","format":"int64"}}}}}}
```

## Get exception group

> Retrieves details of an exception group by its GUID (gguid). The response\
> includes the group metadata—gguid, tguid, target, status, decision, priority\
> flag, organizations with origin, created and updated timestamps, user and\
> comments—and the associated exceptions within the group. Each exception entry\
> contains the enrollee identifiers, match details (score and index values),\
> analysis status, transaction type, priority and target.

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions/group/{gguid}":{"get":{"tags":["exceptions"],"operationId":"getGroup","parameters":[{"name":"gguid","in":"path","required":true,"schema":{"type":"string"}},{"name":"permission","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetExceptionGroupResponse"}}}}},"description":"Retrieves details of an exception group by its GUID (gguid). The response\nincludes the group metadata—gguid, tguid, target, status, decision, priority\nflag, organizations with origin, created and updated timestamps, user and\ncomments—and the associated exceptions within the group. Each exception entry\ncontains the enrollee identifiers, match details (score and index values),\nanalysis status, transaction type, priority and target.","summary":"Get exception group"}}},"components":{"schemas":{"GetExceptionGroupResponse":{"type":"object","properties":{"remaining":{"type":"integer","format":"int64"},"treatable":{"type":"boolean"},"httpResponse":{"$ref":"#/components/schemas/HttpResponse"},"data":{"$ref":"#/components/schemas/ExceptionGroup"}}},"HttpResponse":{"type":"object","properties":{"httpCode":{"type":"integer","format":"int32"},"body":{"type":"string"}}},"ExceptionGroup":{"type":"object","properties":{"gguid":{"type":"string"},"tguid":{"type":"string"},"target":{"type":"string","enum":["BIOGRAPHIC","BIOMETRIC","BIOMETRIC_INCONCLUSIVE","BIOMETRIC_MISMATCH"]},"decision":{"type":"string","enum":["APPROVE","REJECT","KEEP"]},"status":{"type":"string","enum":["ANALYSIS","PENDING","READY","PROCESSING","DONE","REFUSED","ERROR"]},"priority":{"type":"boolean"},"organizations":{"type":"array","items":{"$ref":"#/components/schemas/Organization"}},"created":{"type":"string","format":"date-time"},"updated":{"type":"string","format":"date-time"},"user":{"type":"string"},"comments":{"type":"string"},"message":{"type":"string"},"parameters":{"$ref":"#/components/schemas/GroupDecisionParameters"},"lightsOutCriteria":{"$ref":"#/components/schemas/LightsOutCriteria"},"lockedUser":{"type":"string"},"lockedTimestamp":{"type":"string","format":"date-time"},"lockedTimeout":{"type":"string","format":"date-time"},"exceptions":{"type":"array","items":{"$ref":"#/components/schemas/Exception"}},"newTguid":{"type":"string"},"refusedStatus":{"type":"string","enum":["CREATED","REMOVED","READY_TO_RESEND","SENDING","SENT","ERROR"]},"refusedNewTguid":{"type":"string"},"refusedGroups":{"type":"array","items":{"$ref":"#/components/schemas/ExceptionGroup"}},"holdingGroups":{"type":"array","items":{"$ref":"#/components/schemas/ExceptionGroup"}}}},"Organization":{"type":"object","properties":{"parent":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"}}},"GroupDecisionParameters":{"type":"object","properties":{"keys":{"type":"array","items":{"$ref":"#/components/schemas/Key"}},"biographics":{"type":"array","items":{"$ref":"#/components/schemas/Biographic"}},"labels":{"uniqueItems":true,"type":"array","items":{"type":"string"}},"keepTransactions":{"type":"array","items":{"type":"string"}},"removeTransactions":{"type":"array","items":{"type":"string"}}}},"Key":{"type":"object","properties":{"id":{"description":"Name of entity identifier.","type":"string"},"value":{"description":"Value of entity identifier.","type":"string"}}},"Biographic":{"type":"object","properties":{"id":{"description":"ID of the biographic data being stored.\n\nBiobase Server biographics have their IDs prepended with `bs-`. For example, `bs-name` and `bs-surname`.\n","type":"string"},"value":{"description":"Value of the biographic data.","type":"string"}}},"LightsOutCriteria":{"type":"object","properties":{"nonConflitantKeys":{"type":"array","items":{"$ref":"#/components/schemas/Key"}},"weakKeys":{"type":"array","items":{"type":"string"}},"matchedBiographics":{"type":"array","items":{"type":"string"}}}},"Exception":{"type":"object","properties":{"enrollPguid":{"description":"Global unique ID of the person.","type":"string"},"enrollTguid":{"description":"Global unique ID of the transaction.","type":"string"},"transactionTimestamp":{"description":"Timestamp of the transaction that generated the Exception.","type":"integer","format":"int64"},"match":{"$ref":"#/components/schemas/Match"},"assignedUser":{"description":"Username of user tasked with treating the exception.","type":"string"},"exceptionAnalysis":{"$ref":"#/components/schemas/ExceptionAnalysis"},"transactionType":{"description":"Type of the transaction that generated the exception.","type":"string","enum":["ENROLL","UPDATE"]}}},"Match":{"type":"object","properties":{"matchedPersonPguid":{"description":"PGUID of the person the candidate matched against.","type":"string"},"matchedPersonTguid":{"description":"TGUID of the person the candidate matched against.","type":"string"},"biometricMatches":{"description":"Information about the match.","type":"array","items":{"$ref":"#/components/schemas/BiometricMatch"}}}},"BiometricMatch":{"type":"object","properties":{"score":{"description":"Score of the match.","type":"integer","format":"int32"},"queryIndex":{"description":"Index of the biometric data that was sent and caused a match.","type":"integer","format":"int32"},"referenceIndex":{"description":"Index of the biometric data, from the already enrolled person, which matched.","type":"integer","format":"int32"},"minutia":{"description":"Array of minutia matches. Returned only for latent searches.","type":"array","items":{"$ref":"#/components/schemas/Minutiae"}}}},"Minutiae":{"type":"object","properties":{"query":{"description":"Index of Minutiae, from the provided biometric data, which was involved in the match.","type":"integer","format":"int32"},"reference":{"description":"Index of Minutiae, from biometric data already in the database, which was involved in the match.","type":"integer","format":"int32"}}},"ExceptionAnalysis":{"type":"object","properties":{"status":{"description":"Status of the exception.","type":"string","enum":["ANALYSIS","DIFFERENT_FINGERS","SAME_FINGERS","INCORRECT_ENROLL","RECOLLECT","MERGE_TRANSACTIONS","APPROVE","REJECT","ERROR","REFUSED"]},"exceptionTimestamp":{"description":"Timestamp of the exception. This is the timestamp that should be used during exception listing/filtering.","type":"integer","format":"int64"},"user":{"description":"User that performed the analysis of the exception. Used only if LDAP is not active.","type":"string"},"comments":{"description":"Comments made by the user.","type":"string"}}}}}}
```

## Lock exception group

> Locks an unlocked exception group so that the current user can treat it.\
> When API security is enabled, the user is derived from the token; otherwise\
> a user must be provided. Returns \*\*204 No Content\*\* upon success.

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions/group/{gguid}/user":{"put":{"tags":["exceptions"],"operationId":"lockGroup","parameters":[{"name":"gguid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"NO CONTENT","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Locks an unlocked exception group so that the current user can treat it.\nWhen API security is enabled, the user is derived from the token; otherwise\na user must be provided. Returns **204 No Content** upon success.","summary":"Lock exception group"}}}}
```

## Unlock exception group

> Unlocks a locked exception group for the current user (derived from the\
> token) or for a provided user when API security is disabled. The group\
> must be locked by that user. Returns \*\*204 No Content\*\*.

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions/group/{gguid}/user":{"delete":{"tags":["exceptions"],"operationId":"unlockGroup","parameters":[{"name":"gguid","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"NO CONTENT","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Unlocks a locked exception group for the current user (derived from the\ntoken) or for a provided user when API security is disabled. The group\nmust be locked by that user. Returns **204 No Content**.","summary":"Unlock exception group"}}}}
```

## Lock exception group for user

> Locks an unlocked exception group for the specified user. This operation is\
> used when API security is disabled and authentication through tokens is\
> unavailable. Returns \*\*204 No Content\*\*.

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions/group/{gguid}/user/{user}":{"put":{"tags":["exceptions"],"operationId":"lockGroup_1","parameters":[{"name":"gguid","in":"path","required":true,"schema":{"type":"string"}},{"name":"user","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"NO CONTENT","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Locks an unlocked exception group for the specified user. This operation is\nused when API security is disabled and authentication through tokens is\nunavailable. Returns **204 No Content**.","summary":"Lock exception group for user"}}}}
```

## Unlock exception group for user

> Unlocks a previously locked exception group for a specified user. The group\
> must be locked by the same user. Returns \*\*204 No Content\*\*.

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions/group/{gguid}/user/{user}":{"delete":{"tags":["exceptions"],"operationId":"unlockGroup_1","parameters":[{"name":"gguid","in":"path","required":true,"schema":{"type":"string"}},{"name":"user","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"NO CONTENT","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Unlocks a previously locked exception group for a specified user. The group\nmust be locked by the same user. Returns **204 No Content**.","summary":"Unlock exception group for user"}}}}
```

## Update refused status for group

> Updates the refused status of an exception group. The status may be one of\
> \`CREATED\`, \`REMOVED\`, \`READY\_TO\_RESEND\`, \`SENDING\`, \`SENT\` or \`ERROR\`.\
> This endpoint sets the \`refused\_status\` field for the group and returns\
> \*\*204 No Content\*\*.

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions/group/{gguid}/refused/{status}":{"put":{"tags":["exceptions"],"operationId":"changeGroupRefusedStatus","parameters":[{"name":"gguid","in":"path","required":true,"schema":{"type":"string"}},{"name":"status","in":"path","required":true,"schema":{"type":"string","enum":["RESEND","REMOVE"]}},{"name":"permission","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"204":{"description":"NO CONTENT","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Updates the refused status of an exception group. The status may be one of\n`CREATED`, `REMOVED`, `READY_TO_RESEND`, `SENDING`, `SENT` or `ERROR`.\nThis endpoint sets the `refused_status` field for the group and returns\n**204 No Content**.","summary":"Update refused status for group"}}}}
```

## Set priority flag for group

> Sets or clears the priority flag on an exception group. When priority is\
> \`true\`, the group and its contained exceptions are prioritized; when\
> \`false\`, the priority is removed. Returns \*\*204 No Content\*\*.

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions/group/{gguid}/priority/{priority}":{"put":{"tags":["exceptions"],"operationId":"priorityExceptionGroup","parameters":[{"name":"gguid","in":"path","required":true,"schema":{"type":"string"}},{"name":"priority","in":"path","required":true,"schema":{"type":"boolean"}}],"responses":{"204":{"description":"NO CONTENT","content":{"application/json":{"schema":{"type":"object"}}}}},"description":"Sets or clears the priority flag on an exception group. When priority is\n`true`, the group and its contained exceptions are prioritized; when\n`false`, the priority is removed. Returns **204 No Content**.","summary":"Set priority flag for group"}}}}
```

## Get exception group by transaction

> Retrieves the exception group associated with the specified transaction GUID\
> (tguid). The returned structure is the same as retrieving a group by gguid.

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions/group/tguid/{tguid}":{"get":{"tags":["exceptions"],"operationId":"getGroupByTguid","parameters":[{"name":"tguid","in":"path","required":true,"schema":{"type":"string"}},{"name":"permission","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetExceptionGroupResponse"}}}}},"description":"Retrieves the exception group associated with the specified transaction GUID\n(tguid). The returned structure is the same as retrieving a group by gguid.","summary":"Get exception group by transaction"}}},"components":{"schemas":{"GetExceptionGroupResponse":{"type":"object","properties":{"remaining":{"type":"integer","format":"int64"},"treatable":{"type":"boolean"},"httpResponse":{"$ref":"#/components/schemas/HttpResponse"},"data":{"$ref":"#/components/schemas/ExceptionGroup"}}},"HttpResponse":{"type":"object","properties":{"httpCode":{"type":"integer","format":"int32"},"body":{"type":"string"}}},"ExceptionGroup":{"type":"object","properties":{"gguid":{"type":"string"},"tguid":{"type":"string"},"target":{"type":"string","enum":["BIOGRAPHIC","BIOMETRIC","BIOMETRIC_INCONCLUSIVE","BIOMETRIC_MISMATCH"]},"decision":{"type":"string","enum":["APPROVE","REJECT","KEEP"]},"status":{"type":"string","enum":["ANALYSIS","PENDING","READY","PROCESSING","DONE","REFUSED","ERROR"]},"priority":{"type":"boolean"},"organizations":{"type":"array","items":{"$ref":"#/components/schemas/Organization"}},"created":{"type":"string","format":"date-time"},"updated":{"type":"string","format":"date-time"},"user":{"type":"string"},"comments":{"type":"string"},"message":{"type":"string"},"parameters":{"$ref":"#/components/schemas/GroupDecisionParameters"},"lightsOutCriteria":{"$ref":"#/components/schemas/LightsOutCriteria"},"lockedUser":{"type":"string"},"lockedTimestamp":{"type":"string","format":"date-time"},"lockedTimeout":{"type":"string","format":"date-time"},"exceptions":{"type":"array","items":{"$ref":"#/components/schemas/Exception"}},"newTguid":{"type":"string"},"refusedStatus":{"type":"string","enum":["CREATED","REMOVED","READY_TO_RESEND","SENDING","SENT","ERROR"]},"refusedNewTguid":{"type":"string"},"refusedGroups":{"type":"array","items":{"$ref":"#/components/schemas/ExceptionGroup"}},"holdingGroups":{"type":"array","items":{"$ref":"#/components/schemas/ExceptionGroup"}}}},"Organization":{"type":"object","properties":{"parent":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"}}},"GroupDecisionParameters":{"type":"object","properties":{"keys":{"type":"array","items":{"$ref":"#/components/schemas/Key"}},"biographics":{"type":"array","items":{"$ref":"#/components/schemas/Biographic"}},"labels":{"uniqueItems":true,"type":"array","items":{"type":"string"}},"keepTransactions":{"type":"array","items":{"type":"string"}},"removeTransactions":{"type":"array","items":{"type":"string"}}}},"Key":{"type":"object","properties":{"id":{"description":"Name of entity identifier.","type":"string"},"value":{"description":"Value of entity identifier.","type":"string"}}},"Biographic":{"type":"object","properties":{"id":{"description":"ID of the biographic data being stored.\n\nBiobase Server biographics have their IDs prepended with `bs-`. For example, `bs-name` and `bs-surname`.\n","type":"string"},"value":{"description":"Value of the biographic data.","type":"string"}}},"LightsOutCriteria":{"type":"object","properties":{"nonConflitantKeys":{"type":"array","items":{"$ref":"#/components/schemas/Key"}},"weakKeys":{"type":"array","items":{"type":"string"}},"matchedBiographics":{"type":"array","items":{"type":"string"}}}},"Exception":{"type":"object","properties":{"enrollPguid":{"description":"Global unique ID of the person.","type":"string"},"enrollTguid":{"description":"Global unique ID of the transaction.","type":"string"},"transactionTimestamp":{"description":"Timestamp of the transaction that generated the Exception.","type":"integer","format":"int64"},"match":{"$ref":"#/components/schemas/Match"},"assignedUser":{"description":"Username of user tasked with treating the exception.","type":"string"},"exceptionAnalysis":{"$ref":"#/components/schemas/ExceptionAnalysis"},"transactionType":{"description":"Type of the transaction that generated the exception.","type":"string","enum":["ENROLL","UPDATE"]}}},"Match":{"type":"object","properties":{"matchedPersonPguid":{"description":"PGUID of the person the candidate matched against.","type":"string"},"matchedPersonTguid":{"description":"TGUID of the person the candidate matched against.","type":"string"},"biometricMatches":{"description":"Information about the match.","type":"array","items":{"$ref":"#/components/schemas/BiometricMatch"}}}},"BiometricMatch":{"type":"object","properties":{"score":{"description":"Score of the match.","type":"integer","format":"int32"},"queryIndex":{"description":"Index of the biometric data that was sent and caused a match.","type":"integer","format":"int32"},"referenceIndex":{"description":"Index of the biometric data, from the already enrolled person, which matched.","type":"integer","format":"int32"},"minutia":{"description":"Array of minutia matches. Returned only for latent searches.","type":"array","items":{"$ref":"#/components/schemas/Minutiae"}}}},"Minutiae":{"type":"object","properties":{"query":{"description":"Index of Minutiae, from the provided biometric data, which was involved in the match.","type":"integer","format":"int32"},"reference":{"description":"Index of Minutiae, from biometric data already in the database, which was involved in the match.","type":"integer","format":"int32"}}},"ExceptionAnalysis":{"type":"object","properties":{"status":{"description":"Status of the exception.","type":"string","enum":["ANALYSIS","DIFFERENT_FINGERS","SAME_FINGERS","INCORRECT_ENROLL","RECOLLECT","MERGE_TRANSACTIONS","APPROVE","REJECT","ERROR","REFUSED"]},"exceptionTimestamp":{"description":"Timestamp of the exception. This is the timestamp that should be used during exception listing/filtering.","type":"integer","format":"int64"},"user":{"description":"User that performed the analysis of the exception. Used only if LDAP is not active.","type":"string"},"comments":{"description":"Comments made by the user.","type":"string"}}}}}}
```

## Count exception groups

> Counts the number of exception groups remaining for analysis or treatment\
> and the number of group treatments performed by the user on the current\
> day. The request body includes user (overwritten by the security token\
> when API security is enabled), a list of permissions and an optional\
> \`origin\` (ENTRANT or BOTH). The response returns \`remaining\` and\
> \`doneByTheDay\` maps keyed by status.

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions/countGroups":{"post":{"tags":["exceptions"],"operationId":"countExceptionGroup","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountExceptionGroupRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountExceptionGroupResponse"}}}}},"description":"Counts the number of exception groups remaining for analysis or treatment\nand the number of group treatments performed by the user on the current\nday. The request body includes user (overwritten by the security token\nwhen API security is enabled), a list of permissions and an optional\n`origin` (ENTRANT or BOTH). The response returns `remaining` and\n`doneByTheDay` maps keyed by status.","parameters":[],"summary":"Count exception groups"}}},"components":{"schemas":{"CountExceptionGroupRequest":{"type":"object","properties":{"user":{"type":"string"},"permissions":{"type":"array","items":{"type":"string"}},"origin":{"type":"string","enum":["ENTRANT","BOTH"]}}},"CountExceptionGroupResponse":{"type":"object","properties":{"remaining":{"type":"object","additionalProperties":{"type":"integer","format":"int64"}},"doneByTheDay":{"type":"object","additionalProperties":{"type":"integer","format":"int64"}},"httpResponse":{"$ref":"#/components/schemas/HttpResponse"}}},"HttpResponse":{"type":"object","properties":{"httpCode":{"type":"integer","format":"int32"},"body":{"type":"string"}}}}}}
```

## Count biometrics and decisions

> Counts the number of remaining uncertain biometrics requiring treatment\
> and the number of decisions made by the user on the current day. The\
> request includes user (overwritten by the security token when API\
> security is enabled), a list of permissions and an optional \`origin\`\
> (ENTRANT or BOTH). The response returns \`remaining\` and \`doneByTheDay\`\
> maps keyed by modality (FINGERPRINT and FACE).

```json
{"openapi":"3.0.1","info":{"title":"GBDS API","version":"5.1.16"},"servers":[{"url":"http://<ip>:8085/gbds/v2"}],"paths":{"/exceptions/countBiometric":{"post":{"tags":["exceptions"],"operationId":"countExceptionBiometric","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountExceptionBiometricRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CountExceptionBiometricResponse"}}}}},"description":"Counts the number of remaining uncertain biometrics requiring treatment\nand the number of decisions made by the user on the current day. The\nrequest includes user (overwritten by the security token when API\nsecurity is enabled), a list of permissions and an optional `origin`\n(ENTRANT or BOTH). The response returns `remaining` and `doneByTheDay`\nmaps keyed by modality (FINGERPRINT and FACE).","parameters":[],"summary":"Count biometrics and decisions"}}},"components":{"schemas":{"CountExceptionBiometricRequest":{"type":"object","properties":{"user":{"type":"string"},"permissions":{"type":"array","items":{"type":"string"}}}},"CountExceptionBiometricResponse":{"type":"object","properties":{"remaining":{"type":"object","additionalProperties":{"type":"integer","format":"int64"}},"doneByTheDay":{"type":"object","additionalProperties":{"type":"integer","format":"int64"}},"httpResponse":{"$ref":"#/components/schemas/HttpResponse"}}},"HttpResponse":{"type":"object","properties":{"httpCode":{"type":"integer","format":"int32"},"body":{"type":"string"}}}}}}
```


---

# 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/apis/gbds-5/exceptions.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.
