> 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 for 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

* Obsolete 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.
* Programming examples in Java and .NET.

## \[6.18.0]

### Added

* Endpoints `/extract` and `/extract/template` in the Java and .NET programming examples.
* `GetNoLiveDetails()` in `SelphIDFacialLivenessResult`.
* `GetTokenTimeStamp()` in `SelphIDFacialExtractionResult`, `SelphIDFacialAuthenticationResult`, `SelphIDFacialLivenessResult` and `SelphIDDocumentResult`.
* `SetLivenessDepth()` in `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` in `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.

### Fixed

* Issue in `SelphIDIdentifier::RemoveWithTemplateID()` which 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 problem of calculating the biometric pattern 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 support, 1:1 and 1:N.
  * `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 duplicate template identifiers.

### Fixed

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

## \[6.14.2]

### Added

* Support for licensing by MAC address.

### Fixed

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

## \[6.14.1]

### Fixed

* Issue in the Java binding, which caused a segmentation fault in multithreaded environments with heavy loads.
* The creation of an empty logs folder is avoided in `selphid-eval-performance` and other tools.
* `GetValidTimeStamp()` rejects tokens with future dates.

### Improved

* The documentation for the Java API service example has been renewed.
* The configuration for 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 from 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 galleries. They are marked as invalid, keeping the gallery size and the position of the rest of the patterns.

### Improved

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

## \[6.11.1]

### Added

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

### Fixed

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

## \[6.11.0]

### Improved

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

### Fixed

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

### Added

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

## \[6.10.2]

### Fixed

* Memory issue in the Java programming example.
* Index out-of-bounds 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.

### Fixed

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

## \[6.10.0]

### Added

* Support for a highly available 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 extraction engine, with improvements in accuracy, occlusion detection, and performance.
* New version of the liveness check engine, with improvements in the closed-eyes detector, mouth occlusions, and performance.

### Changed

* The ranges of the threshold constants 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.
* The facial TemplateRaw reduces pattern extraction failures.

### Fixed

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

## \[6.8.1]

### Fixed

* 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 to be resolved.

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

### Fixed

* Minor issues in license management.

## \[6.7.0]

### Update

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

### Fixed

* Issue in the license with `logging:false`.
* Issue in `SelphIDIdentifier::EnrollWithFacialTemplate()` with invalid templates.
* Performance issue in the 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 (Injection Attack Detection) for the liveness check engine. It detects Bands to edges and Scaled nearest neighbor.
* Some improvements in the base64 library.
* Added `SelphIDFacialExtractionResult::Set/GetValidTimeStamp()`.
* Added `SelphIDDocumentResult::Set/GetValidTimeStamp()`.
* New property `sdkDuration` in the responses of the service endpoints.
* New property `validTimeStamp` in the responses of the service endpoints.
* `longDetail` in `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()` in `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 to the facial engine with multithreaded support.

## \[6.4.2]

### Added

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

### Update

* Improvement to the liveness check engine with multithreaded support.

## \[6.4.1]

### Fixed

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

## \[6.4.0]

### Added

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

### Fixed

* Vulnerabilities in the logs.

### Removed

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

### Changed

* Liveness check engine updated.
* Updated facial extractor engine.

## \[6.3.0]

### Added

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

### Changed

* Liveness check engine updated.
* Updated facial extractor engine.

## \[6.2.0]

### Added

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

### Changed

* Liveness check engine updated.
* Updated facial extractor engine.
* Updated 1:n engine.
* The envvar is retrieved `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 node-locked license activation.

### Changed

* Improvement of facial templateRaw extraction
* 1:n performance improvement.

## \[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` it is no longer used.
