> For the complete documentation index, see [llms.txt](https://docs.facephi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.facephi.com/docs.facephi-en/sdks/backend-sdk/selphid/changelog.md).

# Changelog

## \[6.21.0]

### Added

* Support for glibc 2.27 (Ubuntu18 and compatible systems) in the Linux on-premise SDK.
* Support for TokensV2 with security validations. Accepted by:
  * SelphID-SDK `SelphIDVerifier::EvaluatePassiveLivenessWithTokenBuffer()`.
  * REST API Service `/api/v1/selphid/passive-liveness/evaluate/token`.
  * The values have been added `NoneBecauseTokenDataError` and `NoneBecauseTokenSecurity` to `FacialLivenessDiagnostic`.
    * C++/Java/.NET.
    * REST API Service.
* New prototype service of the liveness check engine `facephi-selphid-service:liveness_1st`.

## \[6.20.0]

### Added

* Improved support for Custom Events:
  * `SelphIDVerifier::EvaluatePassiveLivenessTrackingEvent()`.
  * `SelphIDVerifier::VoiceAuthenticationTrackingEvent()`.
* New Custom Events endpoints:
  * `/api/v1/selphid/custom-event/ocr/finish`
  * `/api/v1/selphid/custom-event/security/finish`
  * `/api/v1/selphid/custom-event/liveness`
  * `/api/v1/selphid/custom-event/liveness/finish`
  * `/api/v1/selphid/custom-event/voice/authentication`
  * `/api/v1/selphid/custom-event/voice/authentication/finish`

### Removed

* Deprecated legacy metadata inherited from `SelphIDFacialExtractionResult`:
  * Lips
  * GeographicOrigin
  * Emotion
  * Artwork
  * FacialHair
* Liveness check status codes in the logs. From now on, use `SelphIDNoLiveDetails::GetReasonMessage()`.
  * 0xAB01
  * 0xAB02
  * 0xAB03
  * 0xAB04
  * 0xAB05
  * 0xAB06
  * 0xAB07
  * 0xAB08

### Improved

* `selphid-license-activator` runs as a standalone application to obtain the HostID.

### Removed

* Contradictory log messages in offline licensing.

## \[6.19.0]

### Added

* Coercion detection in the liveness check engine.
* `SelphIDNoLiveDetails::GetCoercionScore()`.
* Support for JPEG 2000 images in the extraction and liveness check engines.
* New environment variables for the C++ Rest Api service:
  * `FACEPHI_SELPHID_REST_PORT`
  * `FACEPHI_SELPHID_REST_NUMBER_OF_THREADS`
  * `FACEPHI_SELPHID_REST_CONNECTION_TIMEOUT`
  * `FACEPHI_SELPHID_REST_KEEP_ALIVE_REQUEST_NUMBER`
  * `FACEPHI_SELPHID_REST_CLIENT_MAX_BODY_SIZE`
  * `FACEPHI_SELPHID_REST_LOGGER_PATH`
  * `FACEPHI_SELPHID_REST_LOGGER_FILE_PREFIX`
  * `FACEPHI_SELPHID_REST_LOGGER_LEVEL`
  * `FACEPHI_SELPHID_REST_LOGGER_ROTATION`
  * `FACEPHI_SELPHID_REST_LOGGER_MAX_FILES`

### Improved

* New facial extraction engine, without the instruction set `fma3`.
* New liveness check engine, without the instruction set `fma3`.
* Improved support for detecting `closed-eyes` and `occlusions` in the liveness check engine.

### Removed

* Versions `fphi-selphid-sdk-linux64_fma3` and `fphi-selphid-sdk-win64_fma3`, since the new biometric engines do not use the extended instruction set.
* Java and .NET programming examples.

## \[6.18.0]

### Added

* Endpoints `/extract` and `/extract/template` in the Java and .NET programming examples.
* `GetNoLiveDetails()` en `SelphIDFacialLivenessResult`.
* `GetTokenTimeStamp()` en `SelphIDFacialExtractionResult`, `SelphIDFacialAuthenticationResult`, `SelphIDFacialLivenessResult` and `SelphIDDocumentResult`.
* `SetLivenessDepth()` en `SelphIDVerifierOptions`.

## \[6.17.0]

### Added

* `SelphIDVerifierOptions::Get/SetFutureTimeAllowed()` to allow tokens with future dates not to be rejected.
* Environment variable `FACEPHI_SELPHID_FUTURE_TIME_ALLOWED` to set a global value of `FutureTimeAllowed`.
* `futureAllowedSeconds` en `options` of the C++ rest-api service.
* `SelphIDIdentifier::ListObsoleteGalleryTemplateIDs()` to list gallery items older than a time interval.
* `SelphIDIdentifier::RemoveObsoleteGalleryTemplateIDs()` to remove gallery items older than a time interval.
* Endpoint GET `/identify/obsolete/{galleryId}/{intervalSeconds}` in the C++ rest-api service.
* Endpoint DELETE `/identify/obsolete/{galleryId}/{intervalSeconds}` in the C++ rest-api service.

### Corrected

* Problem in `SelphIDIdentifier::RemoveWithTemplateID()` that left the gallery state inconsistent.

## \[6.16.0]

### Added

* New C++ rest-api services.
  * `selphid-sdk-rest-api:gpu`. With GPU support in the liveness check engine.
  * `selphid-sdk-rest-api:liveness_1st`. With the experimental liveness check engine.
* New endpoint `GET:/config` in the C++ rest-api to obtain the service and SDK configuration.

### Improved

* New facial extraction engine that solves the issue of biometric pattern calculation in cropped images.
* New error values added to `SelphIDIdentifier::EnrollWithExtractionResult()` and `SelphIDIdentifier::EnrollWithFacialTemplate()`.
  * `GALLERY_ID_NOT_EXISTS -1`.
  * `TEMPLATE_ID_ALREADY_EXISTS -2`.
  * `TEMPLATE_ID_EMPTY -3`.

### Changed

* The internal minimum IOD (interocular distance) has been reduced from `30px` to `20px`.

## \[6.15.0]

### Added

* New `SelphIDIdentifier::RemoveWithTemplateID()`.
* New endpoint `identify/removeid/{galleryId}/{templateId}`.
* New `FacialLivenessDiagnostic::NoneBecauseEyesOccluded`.
* New C++ rest-api services.
  * `selphid-sdk-rest-api:facial`. With biometric, 1:1 and 1:N support.
  * `selphid-sdk-rest-api:liveness`. With liveness check support.

### Improved

* The liveness check engine improves support for low-quality images and mouth/eye occlusions.
* 1:N galleries do not accept duplicated template identifiers.

### Corrected

* Problem extracting the biometric pattern from documents with multiple faces.
* Cropping of TemplateRaw when using tokenized images with `ExtractFacialWithRawTemplate()`.

## \[6.14.2]

### Added

* Support for MAC address licensing.

### Corrected

* `selphid-license-activator` does not show the licensing log.

## \[6.14.1]

### Corrected

* Problem in the Java binding, causing a segmentation fault in multithreaded environments with high loads.
* Avoid creating an empty logs folder in `selphid-eval-performance` and other tools.
* `GetValidTimeStamp()` rejects tokens with future dates.

### Improved

* The documentation for the Java API service example has been updated.
* The configuration of the Java API service example has been expanded.

## \[6.14.0]

### Improved

* Updated facial extraction engine, more accurate when extracting biometric patterns from low-quality images.
* Updated passive liveness check engine, more accurate in FMAD (face manipulator attack detection) cases.

### Added

* New C++ programming example in `/examples/cpp`.
* C++ API documentation in `/doc/api/cpp`.

## \[6.13.1]

### Added

* Support for EXIF orientation metadata.
* New API-Rest Endpoint `/extract/template/image` to extract the raw internal image of the template.

### Changed

* The logger uses the 24-hour time format.
* Offline licenses remove network log messages.

## \[6.13.0]

### Added

* Full log for License validation.

### Improved

* Liveness check engine updated to the latest version, improving detection accuracy.

## \[6.12.1]

### Added

* `FACEPHI_SELPHID_FACIALLIVENESS_DEPTH=full` to enable the FMAD detector (*Face Manipulation Attack Detector*) in the liveness check engine.

## \[6.12.0]

### Added

* `FACEPHI_SELPHID_GALLERY_REMOVE_METHOD=noerase` to prevent the removal of patterns in the galleries. They are marked as invalid, maintaining the gallery size and the position of the remaining patterns.

### Improved

* Updated liveness check engine.
* Improved IAD (Injection Attack Detection) prefiltering, making it more stable against images with high compression rates.

## \[6.11.1]

### Added

* Configuration variable `FACEPHI_SELPHID_FACIALLIVENESS_IAD=disable` to disable IAD (Injection Attack Detection) checks of the liveness check.

### Corrected

-`selphid-license-server` fault-tolerant in double activation cases (offline activations).

## \[6.11.0]

### Improved

* New passive liveness check engine, including detection of new spoofing cases.
* Facial pattern extractor with low-resolution images.

### Corrected

* Errata in the member `options` of the C++ Rest API service:
  * `elapsedAllowedSeconds` (before `ellapsedAllowedSeconds`).
  * `minSimilarity` (before `minSimilariry`).

### Added

* New endpoint `/tokeninfo` in the C++ rest service, to obtain the type of an image or token.

## \[6.10.2]

### Corrected

* Memory issue in the Java programming example.
* Index overflow issue in `RemoveWithGalleryIndex()`.
* Issue with the liveness check engine when extracting the ROI.

## \[6.10.1]

### Improved

* Performance improvements in the facial extractor and liveness check engine.

### Corrected

* Vulnerabilities in the floating license server.
* Problem in `options:authThreshold` of the Rest-API service.

## \[6.10.0]

### Added

* Support for high availability local license server.

### Improved

* New version of the liveness check engine, with improvements in the closed eyes detector.

## \[6.9.0]

### Improved

* New version of the facial extractor engine, with improvements in accuracy, the detection of occlusions and performance.
* New version of the liveness check engine, with improvements in the closed eyes detector, mouth occlusions and performance.

### Changed

* The threshold constant ranges are unified to `[0, 100]`.
* Environment variable `FACEPHI_SELPHID_FACIALAUTHENTICATION_THRESHOLD` in the range `[0, 100]`. Default value `65`.
* Environment variable `FACEPHI_SELPHID_FACIALLIVENESS_THRESHOLD` in the range `[0, 100]`. Default value `50`.

## \[6.8.3]

### Added

* License counter metrics.

### Improved

* Endpoint `/health` in the Java/.NET programming examples.

## \[6.8.2]

### Added

* The Rest-Api service accepts an external file `config.json` with the web server startup details.
* The Rest-Api service accepts a user path for `USAGE_PATH` and `DEBUG_PATH`.

### Improved

* `SelphIDFacialAuthenticationResult::GetSimilarity()` does not saturate at the 1.0 end.
* Facial TemplateRaw reduces pattern extraction failures.

### Corrected

* The C++ rest api service limits the number of decimal places in response JSONs to 4.

## \[6.8.1]

### Corrected

* Endpoint `/health` of the service.

## \[6.8.0]

### Update

* Liveness check engine updated to the latest version.

### Added

* New improved TemplateRaw to optimize extractions and gallery searches.
* `SelphIDFacialExtractionResult::GetUpdatedTemplateRaw()` to know whether the templateRaw has been updated.
* `FacialExtractionResult::updatedTemplateRaw` in the Rest-Api service endpoints.

## \[6.7.1]

### Added

* `queueDuration` in the service endpoints to know how long an http request remains queued waiting for resolution.

```
{
    "authStatus": "Positive",
    "queueDuration": 35,
    "sdkDuration": 694,
    "similarity": 1.0,
    "trackingMessage": "",
    "trackingStatus": -1,
    "validTimeStamp": true
}
```

### Corrected

* Minor issues in license management.

## \[6.7.0]

### Update

* Liveness check engine updated to the latest version.
* The Rest-Api service Docker moves from Ubuntu 18.04 LTS to 22.04 LTS.

### Corrected

* License issue with `logging:false`.
* Problem in `SelphIDIdentifier::EnrollWithFacialTemplate()` with invalid templates.
* Performance issue in Rest-Api service endpoints:
  * `/identify/enroll/{galleryId}/{templateId}`.
  * `/identify/enroll/template/{galleryId}/{templateId}`.

### Updated

* FacePhi Identity Platform Events.
  * `METADATA` by `FACIAL_CHARACTERISTICS`.
  * `STEP_CHANGE` to the latest version.

## \[6.6.0]

### Added

* IAD prefiltering for the liveness check engine. Detects Bands to edges and Scaled nearest neighbor.
* Some improvements in the base64 library.
* The following has been added `SelphIDFacialExtractionResult::Set/GetValidTimeStamp()`.
* The following has been added `SelphIDDocumentResult::Set/GetValidTimeStamp()`.
* New property `sdkDuration` in the service endpoint responses.
* New property `validTimeStamp` in the service endpoint responses.
* `longDetail` en `options` of the service endpoints. If it is `true`, the endpoint result will include additional information. If omitted, the default value will be `false`.
* If `options:longDetail==true`, the following will be added `extractionQuery` and `extractionTarget` (both of type `FacialExtractionResult`) to `FacialAuthenticationResult` in the service authentication endpoints.
  * `/api/v1/selphid/authenticate-facial/images`.
  * `/api/v1/selphid/authenticate-facial/image/template`.
  * `/api/v1/selphid/authenticate-facial/templates`.

## \[6.5.0]

### Added

* Diagnostic `NoneBecauseEyesClosed` of the liveness check engine.
* Diagnostic `NoneBecauseFaceOccluded` of the liveness check engine.
* Extraction result `FacialMask` of the facial engine.
* Extraction result `ImageQuality` of the facial engine.
* Extraction result `FacialPose` of the facial engine.
* New configuration parameter `FACEPHI_SELPHID_FACIALAUTHENTICATION_THRESHOLD`.
* New method `SetCustomFacialAuthenticationThreshold()` en `SelphIDVerifierOptions`.
* JSON parameter `"options":"authThreshold"` in the service endpoints.
* The endpoint `/version` of the service returns a JSON object instead of a text string.

## \[6.4.3]

### Added

* Environment variable `FACEPHI_SELPHID_FACIALEXTRACTOR_NUM_THREADS` to configure thread usage in the extractor engine.

### Update

* Improvement of the facial engine with multithread support.

## \[6.4.2]

### Added

* Environment variable `FACEPHI_SELPHID_FACIALLIVENESS_NUM_THREADS` to configure thread usage in the liveness check engine.

### Update

* Improvement of the liveness check engine with multithread support.

## \[6.4.1]

### Corrected

* Problems in the liveness check engine related to `NoneBecauseBadQuality`.

## \[6.4.0]

### Added

* .NET DLL signature.
* Rest-Api service configuration file (port, threads, Timeout, keep alive).

### Corrected

* Vulnerabilities in logs.

### Removed

* Command line options of the Rest-Api service `-threads`, `-timeout`, `-kAlive`.

### Changed

* Updated liveness check engine.
* Updated facial extractor engine.

## \[6.3.0]

### Added

* License mode `shared-offline`
* New extractor estimators `age` and `gender`
* New compilation flags in the service `-threads`, `-timeout` and `-kAlive`

### Changed

* Updated liveness check engine.
* Updated facial extractor engine.

## \[6.2.0]

### Added

* License mode `shared-online`.
* License mode `server-online`.
* License mode `on-premise`.

### Changed

* Updated liveness check engine.
* Updated facial extractor engine.
* Updated 1:n engine.
* The envvar is recovered `FACEPHI_SELPHID_FACIAL_LICPATH_KEY` and the file `license.lic`.

### Removed

* Envvar `FACEPHI_SELPHID_LICENSE_KEY` to provide the License code.

## \[6.1.0]

### Added

* Offline activation of node-locked License.

### Changed

* Improvement of facial TemplateRaw extraction
* Improvement of 1:n performance.

## \[6.0.0]

### Added

* New envvar `FACEPHI_SELPHID_LICENSE_KEY` to provide the License code.

### Changed

* Authentication engine.

### Removed

* Envvar `FACEPHI_SELPHID_FACIAL_LICPATH_KEY` because `license.lic` is no longer used.
