All notable changes to this project are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
7.0.0 - 2026-07-13
- Breaking: migrate from Jackson 2 to Jackson 3 (
tools.jackson.core:jackson-databind3.1.2). Model annotations keep the stablecom.fasterxml.jackson.annotationpackage, so the data classes remain readable by both Jackson generations, but parsing now uses Jackson 3: theDefaultRequestHandlerconstructors accept atools.jackson.databind.ObjectMapperandJsonProcessingExceptionis replaced by the uncheckedtools.jackson.core.JacksonException.
6.1.0 - 2026-07-02
- Asynchronous API:
lookupAsync/parseAsyncmethods onIpregistryClientreturn aCompletableFutureand are backed by a virtual-thread-per-task executor by default. The executor is configurable viaIpregistryConfig#executor(a caller-provided executor is not shut down by the client). - Support for a caller-provided
CloseableHttpClientvia newIpregistryClientandDefaultRequestHandlerconstructors, allowing full control over connection pooling, proxying, TLS, and metrics. An injected client is not closed by the Ipregistry client (the caller retains ownership). - Typed error codes:
ApiException#getErrorCode()(andError#getErrorCode()) now return a strongly typedErrorCodeenum in addition to the raw stringcode, allowing callers to branch on error conditions without string matching. Unrecognized codes returnnullwhile the raw code remains available. - Automatic retries with exponential backoff for transient network errors and 5xx server responses, configurable via
IpregistryConfig(retryMaxAttempts,retryInterval,retryOnServerError,retryOnTooManyRequests). Retries on 429 Too Many Requests are disabled by default and honor theRetry-Afterheader when enabled. IpregistryClientnow implementsCloseableto release the underlying HTTP connection pool.
- Escape JSON request bodies so that user-agent and IP values containing special characters (quotes, backslashes, control characters) no longer produce malformed requests.
- Skip the remote API call in batch lookups when every requested IP is already served from the cache.
- Bypass the cache for origin (requester) IP lookups to avoid returning data associated with a different IP.
- Replace deprecated Guava
CacheBuilder#expireAfterWrite(long, TimeUnit)usage with theDurationvariant.
- Upgrade dependencies: Jackson 2.22.0, Guava 33.6.0-jre, Apache HttpClient5 5.6.2, MaxMind DB 4.1.0, JUnit 6.1.1, Mockito 5.23.0, REST-assured 6.0.0, Lombok 1.18.46, and the Gradle wrapper to 9.6.1.
6.0.0 - 2025-11-26
- BREAKING: Require Java 25+.
5.0.1 - 2025-07-22
Minor release to fix an issue in the new automated workflow.
5.0.0 - 2025-07-22
- BREAKING: Require Java 21+.
- Fixed deprecated Gradle configurations.
- Added professional, comprehensive javadoc documentation to all API model classes.
- Remove deprecated
IpregistryConfig#apiUrl. UseIpregistryConfig#baseUrlinstead.
4.0.0 - 2023-05-08
- Add new
IpregistryGeolocationDatasetclass for easy loading and query an Ipregistry Geolocation dataset offline.
- Updated required Java version to Java 11 from Java 8.
3.7.0 - 2022-06-10
- Add new
parsemethod to IpregistryClient to parse one or more user-agent values.
3.6.0 - 2022-04-15
- New
vpnfield insecurityobject.
3.5.0 - 2021-12-21
- New
relayfield insecurityobject.
- Deprecate
IpregistryConfigBuilder.apiUrlin favor ofIpregistryConfigBuilder.baseUrl.
3.4.0 - 2021-11-07
- Support for usage in native images with GraalVM.
3.3.0 - 2021-10-26
- IpInfo responses has a new
companyfield. - The enum ConnectionType includes a new value of
INACTIVE. - The class DefaultRequestHandler accepts a custom ObjectMapper.
- A single ObjectMapper instance is created and reused in DefaultRequestHandler.
- The API key is no longer passed as a query parameter but as a header when a request is sent.
3.2.1 - 2021-07-26
- Restore missing getters in Region model class.
3.2.0 - 2021-07-26
- Add setters to all model classes.
- New connection type
GOVERNMENT.
- Improve utility method to detect bots/crawlers/spiders based on user-agent value.
- Parsing of unknown connection type values fallbacks to
BUSINESS. - Upgrade dependencies.
- Merge connection type
CDNwithHOSTING.
3.1.2 - 2021-04-08
- Upgrade dependencies
3.1.1 - 2020-09-03
- Compatibility level is set to Java 8.
- Fix broken lookup when InetAddress is used as input parameter.
3.1.0 - 2020-07-05
- Upgrade dependencies.
- Increase default timeout values to 15s from 2s.
3.0.0 - 2020-04-16
- [BREAKING] Rename
DefaultCachetoInMemoryCache. - Upgrade dependencies
- Fix a
ClassCastExceptionthat was raised when a valid remote resource is used as lookup input (e.g. robots.txt).
2.3.0 - 2020-01-12
- New field
connection.routein response model. - Introduce new value
cdnfor fieldconnection.type.
- Change type Integer to Long for Autonomous System number associated with field
connection.asn.
2.2.0 - 2019-10-27
- New currency fields
name_nativeandplural_native.
- Decrease the default cache period to 10min from 24h. This is to better handle use cases that require fresh security data. Indeed, such data is updated multiple times each hour. You can still configure the cache period to a higher value: https://github.com/ipregistry/ipregistry-java#caching
2.1.1 - 2019-08-08
- Lombok warnings (equals not calling super and builder ignoring default value).
2.1.0 - 2019-08-08
- Error code FORBIDDEN_IP_ORIGIN.
- Carrier class and field.
- Connection domain field.
- Connection type field and enum.
- Security is_cloud_provider field.
- Implement equals/hashCode in all IpInfo subfield classes.
- Default cache implementation will expire entries older than 24 hours by default.
- Allow passing any int value to
expireAfterandmaximumSizeparameters of DefaultCache constructor.
2.0.0 - 2019-07-19
- Changelog file.
- Manifest file with build information on generated JAR.
- Missing file headers.
- Unknown IP type.
- Utility class
IpregistryOptions.
- Rename
EmptyCacheclass toNoCache. - Rename
IpData* classes toIpInfo*. - Rename
Ipregistryclass toIpregistryClient. - Use all lookup parameters (including options) to cache results.
- Remove docs/ folder.
- Fix NPE with origin lookup.
1.1.0 - 2019-07-03
- Increased version number for testing purposes.
1.0.0 - 2019-07-03
- First public release.