All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, markdownlint, and this project adheres to Semantic Versioning.
- Updated test data cache to use Senzing version 3.12.3
- Updated dependencies:
- Updated
senzing-commons-java
dependencies from version3.3.1
to3.3.2
- Updated
jackson-xxxx
dependencies from version2.18.0
to2.18.2
- Updated
junit-jupiter
from version5.11.2
to5.11.3
- Updated
icu4j
from version75.1
to76.1
- Updated Amazon
sqs
from version2.28.17
to2.29.26
- Updated
amqp-client
dependencies from version5.22.0
to5.23.0
- Updated
kafka-clients
dependencies from version3.8.0
to3.9.0
- Updated
maven-surefire-plugin
from version3.5.1
to3.5.2
- Updated
- Updated dependencies:
- Updated
senzing-commons-java
dependencies from version3.3.0
to3.3.1
- Updated
jetty-xxxx
dependencies from version9.4.55.v20240627
to9.4.56.v20240826
- Updated
jersey-xxxx
dependencies from version2.44
to2.45
- Updated
jackson-xxxx
dependencies from version2.17.2
to2.18.0
- Updated
commons-csv
dependencies from version1.11.0
to1.12.0
- Updated Amazon
sqs
from version2.26.27
to2.28.17
- Updated
amqp-client
dependencies from version5.21.0
to5.22.0
- Updated
slf4j-xxxxx
dependencies from version2.0.13
to2.0.16
- Updated
junit-jupiter
from version5.10.3
to5.11.2
- Updated
- Updated dependencies:
- Updated
jetty-xxxx
dependencies from version9.4.54.v20240208
to9.4.55.v20240627
- Updated
jersey-xxxx
dependencies from version2.43
to2.44
- Updated
jackson-xxxx
dependencies from version2.17.1
to2.17.2
- Updated Amazon
sqs
from version2.26.4
to2.26.27
- Updated
kafka-clients
dependencies from version3.7.0
to3.8.0
- Updated
junit-jupiter
from version5.10.2
to5.10.3
- Updated
- In
Dockerfile
, updated- FROM instruction to
senzing/senzingapi-runtime:3.10.3
senzing/base-image-debian:1.0.24
- FROM instruction to
- Updated auto test cache to Senzing version
3.10.3
- Updated dependencies:
- Updated
senzing-commons
from version3.2.0
to3.3.0
- Updated
jersey-xxxx
dependencies from version2.41
to2.43
- Updated
jackson-xxxx
dependencies from version2.16.1
to2.17.1
- Updated
commons-csv
from version1.10.0
to1.11.0
- Updated
icu4j
from version74.2
to75.1
- Updated Amazon
sqs
from version2.24.12
to2.26.4
- Updated
amqp-client
from version5.20.0
to5.21.0
- Updated
slf4j-api
andslf4j-simple
from version2.0.12
to2.0.13
- Updated
maven-surefire-plugin
from version3.2.5
to3.3.0
- Updated
maven-compiler-plugin
from version3.12.1
to3.13.0
- Updated
maven-shade-plugin
from version3.5.2
to3.6.0
- Updated
- In
Dockerfile
, updated- FROM instruction to
senzing/senzingapi-runtime:3.10.1
senzing/base-image-debian:1.0.23
- FROM instruction to
- Updated dependencies:
- Updated
senzing-commons
to version3.2.0
from version3.1.4
- Updated Jetty dependencies to version
9.4.54.v20240208
from version9.4.53.v20231009
- Updated Jackson dependencies to version
2.16.1
from version2.15.3
- Updated
junit-jupiter
to version5.10.2
from version5.10.1
- Updated
icu4j
to version74.2
from version74.1
- qUpdated
sqs
to version2.24.12
from version2.21.40
- Updated
kafka-clients
to version3.7.0
from version3.6.1
- Updated SLF4J dependencies to version
2.0.12
from version2.0.9
- Updated
org.glassfish/javax.annotation
tojakarta.annotation-api
version2.1.1
- Updated Spring dependencies to version
5.3.32
from version5.3.30
- Updated
swagger-annotations
to version2.2.20
from version2.2.18
- Updated
build-helper-manve-plugin
to version3.5.0
from version3.4.0
- Updated
maven-surefire-plugin
to version3.2.5
from version3.1.2
- Updated
maven-compiler-plugin
to version3.12.1
from version3.11.0
- Updated
maven-shade-plugin
to version3.5.2
from version3.5.1
- Updated
- Reverted sqlite-jdbc to 3.42.0.1 because the SQLite team haphazardly removed functionality that has been supported for 16 years.
- Added method to ServicesSupport for creating InternalServerErrorExceptions with a String message rather than a G2Fallible or another Exception
- Updated other dependencies to newer versions to match other Senzing projects
- In
Dockerfile
, updated FROM instruction tosenzing/senzingapi-runtime:3.8.0
- In
pom.xml
, updated:- sqlite-jdbc 3.43.0.0
- jackson-annotations 2.15.3
- amqp-client 5.19.0
- In
Dockerfile
, updated FROM instruction tosenzing/senzingapi-runtime:3.7.1
- In
Dockerfile
, update to Java 11 JDK
- Updated remaining
2.39
Jersey dependencies to version2.40
- Updated pom.xml dependencies for Jetty, Swagger, and Amazon SQS
- Minor pom.xml fixes (added encoding for filtering resources, added version for
build-helper-maven-plugin
) - Fixed RepoManagerOption parameter settings for
--config-sources
(CONFIG_SOURCES
) - Added version 3.7.0 test data cache
- Updated
sqlite-jdbc
to version3.42.0.0
- Updated Jersey dependencies to version
2.40
- Updated
icu4j
to version73.2
- Updated
sqs
to version2.20.94
- Updated
amqp-client
to version5.18.0
- Updated
kafka-clients
to version3.5.0
- In
Dockerfile
, updated FROM instruction tosenzing/senzingapi-runtime:3.6.0
- In
Dockerfile
, updated FROM instruction tosenzing/senzingapi-runtime:3.5.3
- Upgraded "Jackson" libraries to version
2.15.2
- Upgraded "icu4J" to version
73.1
- Upgraded "slf4j" to version
2.0.7
- Upgraded various maven plugin dependencies for building.
- Upgraded "Jackson" libraries to version
2.15.0
- Upgraded
junit-jupiter
to version5.9.3
- Upgraded
swagger-annotations
to version2.2.9
- Upgraded
maven-resources-plugin
to version3.3.1
- Updated REST API specification sub-repo to version 3.4.1
- Updated auto test cache to Senzing version
3.5.2
- Updated
BuildInfo
to reflect REST API spec version3.4.1
- In
Dockerfile
, updated FROM instruction tosenzing/senzingapi-runtime:3.5.2
- Fixed parsing of raw data in
SzHowMatchInfo
. - Updated
EntityDataReadServicesTest
tests for new default config which prefers relates as possible matches for name-only matches. - Updated dependency versions to newer releases.
- Updated underlying Docker images.
- Updated dependency versions to newer releases.
- Modified bulk-data API to allow JSON-lines (
application/x-jsonlines
) content when JSON (application/json
) Content-Type header is provided. - Added auto-tests to ensure a 400 HTTP error is produced if the content provided to the bulk-data API is not acceptable for the given Content-Type.
- In
Dockerfile
, fix vulnerability exposed bysoftware-properties-common
- In
Dockerfile
, updated FROM instruction tosenzing/senzingapi-tools:3.4.0
main
- Updated dependency versions to newer releases.
- Changes
senzing-commons-java
dependency to a minimum of version3.0.2
to address Issue #265 (handling whitespace between delimiters and quoted strings in bulk record CSV files) - Updated tests to include a test for surrounding whitespace in CSV's
- Updated dependency for
slf4j-api
to version2.0.3
- Updated dependency for
swagger-annotations
to version2.2.4
- In
Dockerfile
, updated FROM instruction tosenzing/senzingapi-tools:3.3.2
- Updated
G2EngineRetryHandler
to retry calls that return engine error codes that indicate auto-reconnection can cause the call to succeed. - Added additional logging to
G2EngineRetryHandler
to better log retry failures so the original and secondary failure are both logged. - Removed unused
com.senzing.server.AppLifeCycle
class - In
pom.xml
,- Updated
jackson-databind
to 2.13.4.2
- Updated
- In
Dockerfile
, updated FROM instruction tosenzing/senzingapi-tools:3.3.1
- In
pom.xml
,- Updated
slf4j-simple
to 2.0.3
- Updated
- In
Dockerfile
, removedCMD
to simplify input parameters
- In
Dockerfile
, updated FROM instruction tosenzing/senzingapi-tools:3.3.0
- Updated to REST API Specification version 3.3.0
- Added
SzDetailLevel.BARE_MINIMAL
andSzDetailLevel.NETWORK_MINIMAL
- Added tests for new
SzDetailLevel
values - Added
SzFeatureMode.ENTITY_NAME_ONLY
- Added tests for new
SzFeatureMode
- Changed default HTTP port to 8250 from 2080
- Changed default HTTPS port to 8263 from 2443
- Revert to version 3.3.2 temporarily.
- In
Dockerfile
, removedCMD
to simplify input parameters
- In
Dockerfile
, bump fromsenzing/senzingapi-runtime:3.1.1
tosenzing/senzingapi-runtime:3.2.0
- Updated dependency on
Senzing/senzing-commons-java
to a minimum version of3.0.1
to resolve issue with environment variable fallbacks for primary options which typically lack dependencies.
- Added ability to leverage
G2Engine.G2_ENTITY_INCLUDE_RECORD_FEATURE_IDS
flag when requesting entity data via REST API- Added
SzFeatureMode.ATTRIBUTED
enumerated value - Added
com.senzing.api.model.SzFeatureReference
interface - Added
com.senzing.api.model.impl.SzFeatureReferenceImpl
class - Added
featureReferences
property to theSzEntityRecord
interface - Added
featureReferences
property to theSzEntityRecordImpl
class
- Added
- Added ability to leverage
G2Engine.getVirtualEntityByRecordID()
via REST API- Added
com.senzing.api.services.HowRelatedServices
class- Added
HowRelatedServices.getVirtualEntity()
function to provide theGET /virtual-entities
operation.
- Added
- Added auto tests for
HowRelatedServiecs.getVirtualEntity()
- Added
com.senzing.api.model.SzVirtualEntityResponse
interface - Added
com.senzing.api.model.SzVirtualEntityData
interface - Added
com.senzing.api.model.impl.SzVirtualEntityResponseImpl
class. - Added
com.senzing.api.model.impl.SzVirtualEntityDataImpl
class - Added functions in
ServicesSupport
class to handle record identifiers
- Added
- Added ability to leverage
G2Engine.howEntityByEntityID()
via REST API- Added
com.senzing.api.services.HowRelatedServices
class- Added
HowRelatedServices.howEntityByRecordId()
function to provide theGET /data-sources/{dataSource}/records/{recordId}/entity/how
operation - Added
HowRelatedServices.howEntityByEntityId()
function to provide theGET /entities/{entityId}/how
operation.
- Added
- Added
com.senzing.api.model.SzHowMatchInfo
interface - Added
com.senzing.api.model.SzVirtualEntityRecord
interface - Added
com.senzing.api.model.SzVirtualEntity
interface - Added
com.senzing.api.model.SzResolutionStep
interface - Added
com.senzing.api.model.SzHowEntityResult
interface - Added
com.senzing.api.model.SzHowEntityResponse
interface - Added
com.senzing.api.model.impl.SzHowMatchInfoImpl
class - Added
com.senzing.api.model.impl.SzVirtualEntityRecordImpl
class - Added
com.senzing.api.model.impl.SzVirtualEntityImpl
class - Added
com.senzing.api.model.impl.SzResolutionStepImpl
class - Added
com.senzing.api.model.impl.SzHowEntityResultImpl
class - Added
com.senzing.api.model.impl.SzHowEntityResponseImpl
class
- Added
- Updated
com.senzing.api.services.WhyServices
to handlewhyEntities()
race conditions where the entity ID's associated with the specified record ID's change after looking up the entity ID's but before returning theWhyEntitiesResponse
.
- Added support for
SENZING_ENGINE_CONFIGURATION_JSON
environment variable for the--init-json
command-line option. - Updated handling of
DELETE /data-sources/{code}/records/{id}?withInfo=true
(EntityDataServices.deleteRecord()
) when the record no longer exists to still produce an INFO message with no affected entity ID's, but still having a data source code and record ID. - Added support for REST API Spec v3.1.0 including "detail levels"
- Added
SzDetailLevel
in support of REST API Spec v3.1.0 "detail levels" - Added
detailLevel
parameter toEntityDataServices
methods - Added
detailLevel
parameter toWhyServices
methods - Added
detailLevel
parameter toEntityGraphServices
methods - Added
detailLevel
parameter toServicesSupport.getFlags()
method
- Added
- Updated dependency versions
- Updated Jetty dependencies to version
9.4.45.v20220203
- Updated Jersey dependencies to version
2.36
- Updated ICU4j dependency to version
71.1
- Updated test-scoped Spring Framework dependency to
[5.3.22,5.9999.9999)
- Updated test-scoped Swagger Codegen dependency to
3.0.20
- Updated Jetty dependencies to version
- Deleted test cache data for version
3.0.0
- Generated test cache data for version
3.2.0
- Updated
pom.xml
andDockerfile
to reflect version3.2.0
- In
Dockerfile
, bump fromsenzing/senzingapi-runtime:3.1.0
tosenzing/senzingapi-runtime:3.1.1
- Migrated to
senzing/senzingapi-runtime
as Docker base image
- Upgrade
Dockerfile
toFROM debian:11.3-slim@sha256:06a93cbdd49a265795ef7b24fe374fee670148a7973190fb798e43b3cf7c5d0f
- Added
libodbc1
to Dockerfile
- Removed endpoints, classes and methods pertaining to Entity Types
- Removed endpoints, classes and methods pertaining to Entity Classes
- Removed
matchScore
andrefScore
fromSzBaseRelatedEntity
sinceMATCH_SCORE
andREF_SCORE
were removed from the native/raw JSON in v3.0 - Removed
refScore
fromSzMatchedRecord
sinceREF_SCORE
was removed in v3.0 - Updated
senzing-commons-java
dependency to version3.x
- Updated
g2-sdk-java
dependency to version3.x
- Updated supported API specification version to
3.0.0
- Modified
Dockerfile
to upgrade Debian base version to 11.3
- Updates to latest dependency versions to resolve/avoid security issues. Specifically resolves CVE-2020-36518 for jackson-databind.
- Added
@SuppressWarnings()
annotation to some files to eliminate specific compile-time warnings.
- Updates to
pom.xml
to prevent pulling beta3.0.0
versions ofsenzing-sdk-java
andsenzing-commons-java
via the Maven dependency range.
- Updated pom.xml to depend on
senzing-commons
release version2.x
- Updated classes that previously used
com.senzing.util.JsonUtils
to instead usecom.senzing.util.JsonUtilities
- Updated Docker image with new version of Debian
- Removed dependence on senzing-base image
- Updated
README.MD
to include latest usage message for--enable-admin
- Updated spring framework dependencies to resolve security vulnerability.
- Updated cached test data to version 2.8.5 of Senzing
- Reduced footprint of cached test data to only the latest version of Senzing. For other versions the tests will have to be run with a live Senzing SDK.
- Modified to factor out the
senzing-commons-java
dependency. - Modified to mask sensitive command-line option parameters when logging the startup parameters as JSON.
- Updated to senzing/senzing-base:1.6.3
- Updated to senzing/senzing-base:1.6.2
- Improved debug logging with standardized formatting and timestamps.
- Added more debug logging to TemporaryDataCache.
- Renamed enum constant for debug logging from DEBUG to DEBUG_LOGGING.
- Added debug option to SzApiServerOptions for programmatic configuration.
- Added
com.senzing.api.test.debug=true
system property check to run automated tests with debug logging enabled. - Modified usage message to include information on
--debug
option.
- Added --debug command-line option with SENZING_API_SERVER_DEBUG environment variable equivalent to enable API Server debug logging.
- Added debug logging of every incoming request if --debug enabled.
- Added debug logging for bulk-data related operations if --debug enabled.
- Updated build-info.properties so the Maven build timestamp is properly filtered during build and token-replaced.
- Minor bug fix for internal CommandLineUtilities class to process default
values for "base" options. This allows others to extend the Senzing API
Server code with new options but still have the default values from the
base options be populated (required for
Senzing/senzing-poc-server
).
- Minor bug fix for internal CommandLineUtilities class to recognize environment
variables for "base" options. This allows others to extends the Senzing API
Server code with new options but still have the environment variables from the
base options be recognized (required for
Senzing/senzing-poc-server
).
- Modified EntityDataServices.java to check for empty networks when getting
entities with "FULL" related entities. This guards against a
NullPointerException
in the event of data corruption. Affected endpoints:GET /entities/{entityId}?withRelated=FULL
GET /data-sources/{dataSourceCode}/records/{recordId}/entity?withRelated=FULL
- Updated cached test mock data for Senzing versions 2.0.0 through 2.8.1 to cover the version 2.8.1 release.
- Added support for HTTPS/SSL communication with optional client SSL authentication.
- Added support for GZIP compression of HTTP response content when the client sends the "Accept-Encoding: gzip" request header is sent by the client.
- Added
GET /
endpoint that mimics the functionality ofGET /heartbeat
- Added
GET /specifications/open-api
endpoint to get the Open API specification as JSON data. The optional?asRaw=true
query parameter promotes the Open API JSON from thedata
property of the response to the root of the response. - Updated Senzing REST API Specification version to 2.7.0.
- Modifications to make the BulkDataServicesReadOnlyTest less sensitive to timing issues.
- Refactored model classes, service classes and API server classes to allow for extending and customizing the API Server. NOTE: while these changes will NOT break backwards compatibility for REST API clients, Java projects that extend API Server Java classes (e.g.: customized API servers) will be affected. The semantic versioning for the API Server guarantees that minor releases maintain backwards compatibility for REST API clients. However, these changes are working towards possibly maintaining backwards compatibility for extended Java code in minor releases in a future major release.
- Updated to senzing/senzing-base:1.6.1
- Modified auto tests to accommodate forth-coming changes in Senzing v2.7.0
- Added new cached auto-test data for versions 2.0.0 through 2.7.0
- Updated Jetty dependencies for security patch
- Modified
SzApiServer
to enable Web Sockets connectivity - Modified
SzApiServer
,SzApiServerOption
andSzApiServerOptions
to enable configurability of the Jetty Web Server HTTP Thread pool via the--http-concurrency
option (and `SENZING_API_SERVER_HTTP_CONCURRENCY environment variable) - Modified
SzApiServer
to enable support for limitations on concurrent prolonged operations to prevent exhaustion of Jetty Web Server HTTP pool - Added Web Sockets and SSE tests in
BulkDataServicesTests
forPOST /bulk-data/analyze
andPOST /bulk-data/load
- Modified
ServicesUtil
to provide utility method for producing 503 responses - Modified
BulkDataServices
to limit the number of concurrent executions ofPOST /bulk-data/analyze
andPOST /bulk-data/load
as "prolonged" operations when executed over HTTP rather than Web Sockets. These operations produce a "503 Service Unavailable" response if too many concurrent HTTP executions. - Modified
BulkDataServices
to add Web Sockets support toPOST /bulk-data/analyze
andPOST /bulk-data/load
- Modified
AdminServices
to set thewebSocketsMessageMaxSize
property on theSzServerInfo
as part of theGET /server-info
implementation. - Modified
SzApiProvider
to add a means to get thewebSocketsMessageMaxSize
and to provide a means to track and limit prolonged operations. - Added
webSocketsMessageMaxSize
property toSzServerInfo
- Added HTTP concurrency and Web Sockets message size constants to
SzApiServerConstants
- Added
com.senzin.io.ChunkedEncodingInputStream
to aid in SSE auto tests. This class provides decoding of chunked transfer encoding. - Minor changes to
RecordReader
to make it more robust when auto-detecting the file format. - Modified
TemporaryDataCache
to more aggressively create file parts to make them available for reading rather than waiting for a specific number of bytes to be read from the source stream. - Added
readAsciiLine()
function toIOUtilities
- Updated REST API Specification version to 2.6.0 in
BuildInfo
class.
- Added
POST /search-entities
endpoint inEntityDataServices
along with auto tests inEntityDataReadServicesTest
- Converted command-line options to use
--command-line-option
format with-commandLineOption
synonyms to maintain backwards compatibility - Added environment variable support to command-line options so many of the options can now be specified via environment variables. This is intended to primarily help with Docker deployments.
- Added command-line option for
--url-base-path
/-urlBasePath
(along withSENZING_API_SERVER_URL_BASE_PATH
environment variable) to set the base path of the API server on startup - Updated usage string of
SzApiServer
to reflect all changes regarding command-line options - Updated/fixed the output when running with
-version
command-line option - Modified
SzVersionInfo
to includenativeApiBuildVersion
field on theGET /version
response - Modified
SzMeta
to includenativeApiBuildVersion
field - Modified
SzApiProvider
to includenativeApiBuildVersion
field
- Fixed the
pom.xml
so the replacement of${project.version}
in thebuild-info.properties
is restored - Fixed typo bug with the meta timings of
searchByAttributesV2
inEntityDataServices
class - Removed extraneous debug logging code in
EntityDataServices
that caused both a security issue and a memory leak
- Added
includeOnly
query parameter toGET /entities
endpoint. NOTE: this parameter is only recognized if the underlying native Senzing API Product is version 2.4.1 or later. - Modified
SzMeta
to include four new fields to be included in the meta section of each response:nativeApiVersion
nativeApiBuildNumber
nativeApiBuildDate
configCompatibilityVersion
- Added
ServiceUtil.getFlags()
variant that takes a base flags parameter - Added automatic engine priming on startup
- Added
-skipEnginePriming
option to skip engine priming on startup - Updated supported specification version to 2.4.0
- Updated recorded test data for Senzing API versions 2.0.0 through version 2.4.0
- Added JAXB and Javassist dependencies to fix ClassNotFoundException during
OPTIONS requests (especially for CORS support with
-allowedOrigins
option) - Added additional allowed HTTP methods for CORS support (
PUT
,DELETE
,PATCH
andOPTIONS
in addition to the already supportedGET
,POST
, andHEAD
) - Added DiagnoseRequestFilter to log the request line to
stderr
if an exception is caught in processing the request - Updated recorded test data for Senzing API versions 2.0.0 through version 2.3.0
- Added NOTICES file to account for Eclipse Distribution License v1.0 requirements
- Updated
WhyServicesTest
to properly validatewhyEntitiesV2()
responses for Senzing API version 2.3.0 - Added recorded test data for Senzing API version 2.2.6
- Added recorded test data for Senzing API version 2.3.0
- Updated Jetty to version 9.4.35.v20201120 for security patch
- Added
WhyServices.whyEntities()
method forGET /why/entities
- Modified
com.senzing.api.model.SzMatchInfo
to supportwhyEntities()
- Modified
com.senzing.api.model.SzScoredFeature
to supportwhyEntities()
- Modified
com.senzing.api.model.SzEntityData
to excluderelatedEntities
from the JSON serialization if empty or null. - Added
com.senzing.api.model.SzWhyEntitiesResponse
- Added
com.senzing.api.model.SzWhyEntitiesResult
- Added
com.senzing.api.model.SzDisclosedRelation
- Added
com.senzing.api.model.SzRelationDirection
- Added
com.senzing.api.model.SzRelatedFeatures
- Refactored some functionality from
EntityDataServices
toServicesUtil
- Added new tests for
WhyServices.whyEntities()
- Pared down the number of tests ran from
WhyServicesTest
for faster runs. - Re-ran tests for all versions of native Senzing SDK from 2.0.0 to 2.2.5 and recorded mock test data.
- Modified
com.senzing.api.server.G2EngineRetryHandler
so that it recognizes new functions incom.senzing.g2.engine.G2Engine
. - Re-ran tests for all versions of native Senzing SDK from 2.0.0 to 2.3.0 and recorded mock test data.
- Modified
com.senzing.api.services.EntityDataServices
so thatPOST /data-sources/{dataSourceCode}/records
call will be tolerant of theRECORD_ID
specified in the JSON payload for the record. - Updated EntityDataWriteServicesTest to handle testing POST with various record ID variants.
- Re-ran tests for all versions of native Senzing SDK from 2.0.0 to 2.2.1
- Added
com.senzing.api.model.SzNameScoring
to describe name scoring details - Added
com.senzing.api.model.SzSearchFeatureScore
for search feature scores - Modified
com.senzing.api.model.SzBaseRelatedEntity
to removefullNameScore
field since it has not been populated since switch to version 2.0.0 of native Senzing SDK. - Added
bestNameScore
field tocom.senzing.api.model.SzAttributeSearchResult
to replacefullNameScore
in the place where the name score was previously used with version 1.x of the native Senzing SDK (i.e.: to sort search results based on the strength of the name match). - Modified
com.senzing.api.model.SzAttributeSearchResult
to include thefeatureScores
field to provide feature scores without using "raw data" - Added
nameScoringDetails
field tocom.senzing.api.model.SzFeatureScore
class to provideSzNameScoring
name scoring details on why operations, - Updated
com.senzing.api.model.SzFeatureScore
to set itsscore
field to the most sensible score value from thenameScoringDetails
for"NAME"
features since theFULL_SCORE
field is not available for names. - Updated to latest
senzing-rest-api-specification
specification. - Updated version numbers to 2.2.0
- Re-ran tests for all versions of native Senzing SDK from 2.0.0 to 2.2.1
- No longer errors when encountering the
NOT_SCORED
value forSzScoringBucket
- No longer errors when encountering a numeric
RECORD_ID
on bulk data load
- Fixed defect preventing fields in
SzMatchInfo
from being properly populated on "why" endpoints -- now all the matching data comes back. - Added
SzMatchLevel
enum type to enumerate and describe the various match levels and added amatchLevel
field of that type toSzMatchInfo
to expose theMATCH_LEVEL_CODE
in the "why" endpoints. - Added
lastSeenTimestamp
field to exposeLAST_SEEN_DT
forSzResolvedEntity
andSzEntityRecord
. - Added periodic logging of
stats()
from theG2Engine
API with automatic suppression if the API Server is idle or not performing tasks that involve entity scoring and would therefore not affect the result fromstats()
call. - Added
-statsInterval
option to specify the time interval in milliseconds for stats logging with a 15-minute default and option to suppress if zero (0) is specified. - Added logging of performance information and database performance at startup
- Added
-skipStartupPerf
option to prevent startup performance logging - Modified tests to validate
lastSeenTimestamp
field. - Updated test data to include versions 2.0.0 through 2.1.1
- Updated ReplayNativeApiProvider to reduce file size of test data files to reduce memory usage when running auto-builds on github.
- Produced new auto-test mock data files for several versions of native API.
- Upgraded to senzing/senzing-base:1.5.2
-
Modified to build with version 2.x of Senzing product include use of new entity formatting flags.
-
Updated REST API Version to v2.0.0
-
Renamed
com.senzing.api.model.SzFeatureInclusion
tocom.senzing.api.model.SzFeatureMode
-
Added
com.senzing.api.model.SzRelationshipMode
with values ofNONE
,PARTIAL
andFULL
. -
Added new model classes to support Senzing REST API 2.0
-
Added
withInfo
andwithRaw
query parameters to following endpoints:POST /data-sources/{dataSourceCode}/records
PUT /data-sources/{dataSourceCode}/records/{recordId}
-
Added
DELETE /data-sources/{dataSourceCode}/records/{recordId}
endpoint includingwithInfo
andwithRaw
query parameters. -
Added the following endpoints to reevaluate entities or specific records including
withInfo
andwithRaw
query parameters:POST /data-sources/{dataSourceCode}/records/{recordId}/entity/reevaluate
POST /reevaluate-entities
-
In
com.senzing.io.RecordReader
anull
value in thedataSourceMap
andentityTypeMap
is now used as the general overriding data source or entity type, respectively, while the value mapped to empty-string is used to assign a data source or entity type (respectively) to a record that is missing a value for that field. -
In
com.senzing.api.model.SzResolvedEntity
the propertyattributeData
was renamed tocharacteristicData
to match the OpenAPI Specification for the Senzing REST API. NOTE: Client code that was written to look forattributeData
must be modified or will find a missing property. -
Potentially Backward-Compatibility Breaking Changes by Java class and API Endpoint:
-
com.senzing.api.services.ConfigServices
-
GET /entity-classes
-
GET /entity-classes/{entityClassCode}
-
POST /entity-types
-
POST /entity-classes/{entityClassCode}/entity-types
-
GET /entity-classes/{entityClassCode}/entity-types/{entityTypeCode}
- Removed support for any entity class other than ACTOR as it was
discovered that the underlying product does not properly support entity
resolution when using entity classes other than ACTOR and it may not for
some time. This will change if and when additional entity classes are
supported.
- MIGRATION: Ensure the value provided for all entity classes are
changed to
ACTOR
.
- MIGRATION: Ensure the value provided for all entity classes are
changed to
- Removed support for any entity class other than ACTOR as it was
discovered that the underlying product does not properly support entity
resolution when using entity classes other than ACTOR and it may not for
some time. This will change if and when additional entity classes are
supported.
-
POST /entity-classes
- Removed this operation as it was discovered that the underlying product
does not fully properly support entity resolution when using entity
classes other than ACTOR and it may not for some time. This will change
if and when additional entity classes are supported.
- MIGRATION: Remove calls to create new entity classes and instead
leverage the default entity class
ACTOR
.
- MIGRATION: Remove calls to create new entity classes and instead
leverage the default entity class
- Removed this operation as it was discovered that the underlying product
does not fully properly support entity resolution when using entity
classes other than ACTOR and it may not for some time. This will change
if and when additional entity classes are supported.
-
GET /config/current
- Renamed to
GET /configs/active
since “current” is ambiguous with regards to the “currently active config” versus the configuration managers currently configured “default config”.- MIGRATION: Use the
/configs/active
path in place of/config/current
.
- MIGRATION: Use the
- Renamed to
-
GET /config/default
- Renamed to
GET /configs/template
since “default” is ambiguous with the configuration managers “default config” setting.- MIGRATION: Use the
/configs/template
path in place of/config/default
.
- MIGRATION: Use the
- Renamed to
-
-
com.senzing.api.services.EntityDataServices
-
GET /data-sources/{dataSourceCode}/records/{recordId}
- The
data
property ofSzRecordResponse
was previously of typeSzEntityRecord
. However, the Open API specification for the Senzing REST API had always documented it as an object with a single property namedrecord
whose type wasSzEntityRecord
(an additional level of indirection). In order to conform with the specification and make it consistent withSzEntityResponse
, the server has been modified with classSzRecordResponse
now having adata
property with arecord
sub-property.- MIGRATION: Change direct references to the
data
field to instead referencedata.record
.
- MIGRATION: Change direct references to the
- The
SzEntityRecord
in the response will exclude fields that arenull
or empty arrays.- MIGRATION: Depending on the client language, check if fields are
missing,
null
orundefined
before attempting to use them.
- MIGRATION: Depending on the client language, check if fields are
missing,
- The
-
GET /entities/{entityId}
-
GET /data-sources/{dataSourceCode}/records/{recordId}/entity
- The
withRelated
parameter is no longer aboolean
value that acceptstrue
orfalse
. It now accepts an enumerated value of typecom.senzing.api.model.SzRelationshipMode
with values ofNONE
,PARTIAL
orFULL
.- MIGRATION: Use
?withRelated=FULL
in place of?withRelated=true
and use?withRelated=PARTIAL
in place of?withRelated=false
.
- MIGRATION: Use
- The
SzResolvedEntity
and the containedSzEntityRecord
instances in the response will exclude fields that arenull
or empty arrays.- MIGRATION: Depending on the client language, check if fields are
missing,
null
orundefined
before attempting to use them.
- MIGRATION: Depending on the client language, check if fields are
missing,
- The
-
GET /entities
- Removed the
attr_[PROPERTY_NAME]
parameters and replaced with the multi-valuedattr
parameter so that this parameter could better be documented in the Open API Spec and examples provided via Swagger Editor.- MIGRATION: Use
?attr=NAME_FIRST:Joe
in place of?attr_NAME_FIRST=Joe
or use theattrs
parameter with a JSON value.
- MIGRATION: Use
- The
SzAttributeSearchResult
instances and containedSzRelatedEntity
andSzEntityRecord
instances in the response will exclude fields that arenull
or empty arrays.- MIGRATION: Depending on the client language, check if fields are
missing,
null
orundefined
before attempting to use them.
- MIGRATION: Depending on the client language, check if fields are
missing,
- The
withRelationships
query parameter now defaults tofalse
instead oftrue
.- MIGRATION: Use
?withRelationships=true
if relationships are desired.
- MIGRATION: Use
- Removed the
-
POST /data-sources/{dataSourceCode}/records/
-
PUT /data-sources/{dataSourceCode}/records/{recordId}
- Modified to default
ENTITY_TYPE
toGENERIC
ifENTITY_TYPE
not found in record.- MIGRATION: Specify an entity type if
GENERIC
is not desired.
- MIGRATION: Specify an entity type if
- Modified to default
-
-
com.senzing.api.services.EntityGraphServices
GET /entity-networks
- Changed the default value for
maxDegrees
parameter from 5 to 3- MIGRATION: Use
?maxDegrees=5
if the old default is desired.
- MIGRATION: Use
- The
SzResolvedEntity
instances and the containedSzEntityRecord
instances in the response will exclude fields that arenull
or empty arrays.- MIGRATION: Depending on the client language, check if fields are
missing,
null
orundefined
before attempting to use them.
- MIGRATION: Depending on the client language, check if fields are
missing,
- Changed the default value for
GET /entity-paths
- The
SzResolvedEntity
instances and the containedSzEntityRecord
instances in the response will exclude fields that arenull
or empty arrays.- MIGRATION: Depending on the client language, check if fields are
missing,
null
orundefined
before attempting to use them.
- MIGRATION: Depending on the client language, check if fields are
missing,
- The
-
com.senzing.api.services.BulkDataServices
POST /bulk-data/load
- Replaced the
dataSource_[DATA_SOURCE_CODE]
parameters with the multi-valuedmapDataSource
parameter so that this parameter could better be documented in Open API Spec and examples provided via Swagger Editor.- MIGRATION: Use
?mapDataSource=FOO:BAR
in place of?dataSource_FOO=BAR
or use the newmapDataSources
parameter instead.
- MIGRATION: Use
- Replaced the
entityType_[ENTITY_TYPE_CODE]
parameters with the multi-valuedmapEntityType
parameter so that this parameter could better be documented in Open API Spec and examples provided via Swagger Editor.- MIGRATION: Use
?mapEntityType=FOO:BAR
in place of?entityType_FOO=BAR
or use the newmapEntityTypes
parameter instead.
- MIGRATION: Use
- Replaced the
-
-
Other Changes by Java class and API Endpoint:
com.senzing.api.services.AdminServices
-
GET /license
- Added the previously undocumented (but always-supported) the “withRaw” parameter.
-
GET /version
- Added the previously undocumented (but always-supported) the “withRaw” parameter.
-
POST /bulk-data/load
- Added the single-valued
mapDataSources
parameter which accepts URL-encoded JSON to map the original data sources to target data sources. - Added the single-valued
mapEntityTypes
parameter which accepts URL-encoded JSON to map the original entity types to target entity types.
- Added the single-valued
-
-
Removed pre-recorded mock data from integration tests for versions prior to 2.0.0 and added pre-recorded mock data for integratioon tests for v2.0.0.
- No longer errors when encountering the NOT_SCORED value for SzScoringBucket
- No longer errors when encountering a numeric RECORD_ID on bulk data load
- Works with senzing versions up to 1.15.6
- Not supported for senzing version 2.0.0 and above
- Updated EntityGraphServicesTest to account for bug fix in Senzing 1.15.2
- Updated test runs to include additional product versions
- .dockterignore was causing the
-dirty
suffix to be added to docker build versions.
- Added WHY operations
- GET /data-sources/{dataSourceCode}/records/{recordId}/entity/why
- GET /entities/{entityId}/why
- GET /why/records
- Added support for the "withFeatureStatistics" and "withDerivedFeatures"
parameters across the following endpoints:
- GET /data-sources/{dataSourceCode}/records/{recordId}/entity
- GET /data-sources/{dataSourceCode}/records/{recordId}/entity/why
- GET /entities/{entityId
- GET /entities/{entityId}/why
- GET /why/records
- GET /entity-paths
- GET /entity-networks
- Added the "featureDetails" property to entity results to support obtaining the feature ID as well as the feature statistics (if requested).
- Supports environment variables for Senzing install locations
- SENZING_G2_DIR
- SENZING_DATA_DIR
- SENZING_ETC_DIR
- Supports default to
/opt/senzing/data
as the support directory if the versioned sub-directory is not found and the base directory contains expected files. - Shortens the test time for TemporaryDataCacheTest
- Now supports and requires OpenJDK 11.0.x (Java 8 no longer supported)
- Now requires Apache Maven 3.6.1 or later
- Adds config modification functions (data sources, entity types, etc...)
- Adds
-enableAdmin
command-line option to enable adding data sources and entity types (if not provided then403 Forbidden
responses) - Adds bulk data analyze and load functions
- Adds new testing cache mechanism to replay native API calls without using the native API and even run auto tests without having it installed.
- Includes cached native API results for building with v1.13.4 through v1.13.8 as well as v1.14.1 through v1.14.7
- Update to senzing/senzing-base:1.4.0
- Added support for MS SQL in Dockerfile by upgrading to senzing/senzing-base:1.3.0
- Updated jackson-databind to version 2.9.10.1
- Changes to support RPM file layout on Linux for auto tests including support.
- Added JSON pretty-printing option to JsonUtils' toJsonText() functions
- Removed Dockerfile-package
- Fixed auto tests to skip instead of fail if Senzing native libraries are not available.
- Fixed output when command line options do not provide initialization parameters
- Updated dependency on FasterBind's Jackson library to version 2.9.10 to address security vulnerabilities.
- Added missing G2ConfigMgr.destroy() call in SzApiServer during shutdown
- Updated repository manager code used for JUnit tests to check for errors when initializing the configuration manager and when creating the standard configuration.
- Changes to Unit Tests:
- Updated unit tests to preserve repos if any tests associated with that repo failed.
- Updated location of unit test entity repos to live in the
./target/test-repos
directory during a Maven build and modified the repo directory names to be based off the associated unit test name. - Updated the module name used for Senzing initialization in auto tests to match the current auto test for post-failure diagnostic purposes.
- Added forced preservation of unit test entity repos passing the
-Dsenzing.preserve.test.repos=true
option to Maven.
- Corrected errant definition of SzVersionInfo's
configCompatabilityVersion
field as an integer to make it a string to allow for semantic versioning. This changes the response to theGET /version
endpoint. NOTE: This change may require that previously generated client stubs be regenerated to avoid trying to parse the semantic version string as an integer.
- Less repetitive/verbose output when invalid command line options are provided.
- Fixes auto tests when building with 1.11.1.x versions of native Senzing libs.
- Fixed bug where the initialization of the configuration manager
(
G2ConfigMgr.initV2()
) was not checked for success or failure. Now the API server ensures that initialization succeeded before proceeding further. - Removed warnings that could occur if building with version 1.11.x of g2.jar
- Added
--configmgr
option to handle managing configurations when initializing with JSON and leveraging the configuration from the database. This includes the ability to migrate an INI file to JSON and conditionally upload the referenced configuration file to the database and make it the default (see:--migrateIni
) - Added the ability to auto reinitialize the configuration with the latest default configuration for the repository if the default configuration changes while the API server is running. This is monitored for changes every 10 seconds and will be checked on demand if specific G2Engine functions fail.
- Added the
-configId
option to lock the API server to a specific configuration. When this option is used then the auto reinitialization does not occur since the chosen configuration is likely not be the default configuration. - Added
-readOnly
command-line option to cause thePUT
andPOST
endpoints for loading records to always return anHTTP 403 Forbidden
response. - Now a non-root, immutable container.
- RPM based installation.
- senzing/senzing-api-server:1.7.2 pinned to senzing/senzing-base:1.2.1
- Modified
SzResolvedEntity
so therelationshipData
is populated from the features and added auto tests to verify. Note: this will not be provided iffeatureMode
is set toNONE
. - Modified
SzResolvedEntity
so theotherData
is populated from the records and added auto tests to verify. Note: this will not be populated ifforceMinimal
is true since no records will be retrieved. - Internally upgraded the processing of command line arguments to reuse the same functions for the ConfigurationManager and SzApiServer classes as well as the intenral RepositoryManager class (used in auto tests).
- Fixed Junit auto tests with windows (EntityGraphServicesTest) -- worked around libpostal bug in native Senzing API (Windows version).
- Deprecated
-iniFile
option in favor of newly added-initFile
,-initEnvVar
and-initJson
options to initialize with JSON instead of an INI file.
- Modified Makefile to disable Junit tests during Docker build until failures specific to the Docker build can be diagnosed.
- Upgraded third-party dependencies to get security patches
- Added
GET /version
endpoint to get detailed version information - Added
GET /config/current
to get the raw configuration JSON that is currently being used by the API Server - Added
GET /config/default
to get a default bootstrap configuration JSON file that can be used to compare versus the current configuration. NOTE: this is NOT the same as the "default configuration" in the G2ConfigMgr API, but rather represents a brand new out-of-the-box configuration. - Added Junit Jupiter auto tests to verify all functionality and fixed entity path "including source" functions which were broken (as exposed by tests).
- Now requires g2.jar version 1.10.x or higher
- Merge pull request #52 from Senzing/issue-51.caceres.record-resolutio…
- …n-fields
- Added SzMatchedRecord which extends SzEntityRecord to resolve issue 51
- Added
SzMatchedRecord
, extendingSzEntityRecord
, to add match score information to matched records in anSzResolvedEntity
. ModifiedSzResolvedEntity
to useSzMatchedRecord
instead ofSzEntityRecord
for its record list.