Azure Cosmos DB Java SDK for SQL API: Release notes and resources

The SQL API Java SDK supports synchronous operations. For asynchronous support, use the SQL API Async Java SDK.

SDK Download Maven
API documentation Java API reference documentation
Contribute to SDK GitHub
Get started Get started with the Java SDK
Web app tutorial Web application development with Azure Cosmos DB
Minimum supported runtime Java Development Kit (JDK) 7+

Release notes


  • Fixed bug in PartitionKey for Hash V2.


  • Added support for composite indexes.
  • Fixed bug in global endpoint manager to force refresh.
  • Fixed bug for upserts with pre-conditions in direct mode.


  • Fixed bug in gateway address cache.


  • Multi-region write support added for direct mode.
  • Added support for handling IOExceptions thrown as ServiceUnavailable exceptions, from a proxy.
  • Fixed a bug in endpoint discovery retry policy.
  • Fixed a bug to ensure null pointer exceptions are not thrown in BaseDatabaseAccountConfigurationProvider.
  • Fixed a bug to ensure QueryIterator does not return nulls.
  • Fixed a bug to ensure large PartitionKey is allowed


  • Multi-region write support added for gateway mode.


  • Fixed a bug in Read partition Key ranges for a query.


  • Fixed a bug in setting continuation token header size in DirectHttps mode.


  • Added streaming fail over support.
  • Added support for custom metadata.
  • Improved session handling logic.
  • Fixed a bug in partition key range cache.
  • Fixed a NPE bug in direct mode.


  • Added support for Unique Index.
  • Added support for limiting continuation token size in feed-options.
  • Fixed a bug in Json Serialization (timestamp).
  • Fixed a bug in Json Serialization (enum).
  • Dependency on com.fasterxml.jackson.core:jackson-databind upgraded to 2.9.5.


  • Improved Connection Pooling for Direct Mode.
  • Improved Prefetch improvement for non-orderby cross partition query.
  • Improved UUID generation.
  • Improved Session consistency logic.
  • Added support for multipolygon.
  • Added support for Partition Key Range Statistics for Collection.
  • Fixed a bug in Multi-region support.


  • Improved Json Serialization performance.
  • This SDK version requires the latest version of Azure Cosmos DB Emulator available for download from


  • Internal changes for Microsoft friends libraries.


  • Fixed an issue in reading single partition key ranges.
  • Fixed an issue in ResourceID parsing that affects database with short names.
  • Fixed an issue cause by partition key encoding.


  • Critical bug fixes to request processing during partition splits.
  • Fixed an issue with the Strong and BoundedStaleness consistency levels.


  • Added support for a new consistency level called ConsistentPrefix.
  • Fixed a bug in reading collection in session mode.


  • Enabled support for partitioned collection with as low as 2,500 RU/sec and scale in increments of 100 RU/sec.
  • Fixed a bug in the native assembly which can cause NullRef exception in some queries.


  • Fixed a bug in the query engine configuration that may cause exceptions for queries in Gateway mode.
  • Fixed a few bugs in the session container that may cause an "Owner resource not found" exception for requests immediately after collection creation.


  • Added support for aggregation queries (COUNT, MIN, MAX, SUM, and AVG). See Aggregation support.
  • Added support for change feed.
  • Added support for collection quota information through RequestOptions.setPopulateQuotaInfo.
  • Added support for stored procedure script logging through RequestOptions.setScriptLoggingEnabled.
  • Fixed a bug where query in DirectHttps mode may stop responding when encountering throttle failures.
  • Fixed a bug in session consistency mode.
  • Fixed a bug which may cause NullReferenceException in HttpContext when request rate is high.
  • Improved performance of DirectHttps mode.


  • Added simple client instance-based proxy support with ConnectionPolicy.setProxy() API.
  • Added DocumentClient.close() API to properly shutdown DocumentClient instance.
  • Improved query performance in direct connectivity mode by deriving the query plan from the native assembly instead of the Gateway.
  • Set FAIL_ON_UNKNOWN_PROPERTIES = false so users don't need to define JsonIgnoreProperties in their POJO.
  • Refactored logging to use SLF4J.
  • Fixed a few other bugs in consistency reader.


  • Fixed a bug in the connection management to prevent connection leaks in direct connectivity mode.
  • Fixed a bug in the TOP query where it may throw NullReference exception.
  • Improved performance by reducing the number of network call for the internal caches.
  • Added status code, ActivityID and Request URI in DocumentClientException for better troubleshooting.


  • Fixed an issue in the connection management for stability.


  • Added support for BoundedStaleness consistency level.
  • Added support for direct connectivity for CRUD operations for partitioned collections.
  • Fixed a bug in querying a database with SQL.
  • Fixed a bug in the session cache where session token may be set incorrectly.


  • Added support for cross partition parallel queries.
  • Added support for TOP/ORDER BY queries for partitioned collections.
  • Added support for strong consistency.
  • Added support for name based requests when using direct connectivity.
  • Fixed to make ActivityId stay consistent across all request retries.
  • Fixed a bug related to the session cache when recreating a collection with the same name.
  • Added Polygon and LineString DataTypes while specifying collection indexing policy for geo-fencing spatial queries.
  • Fixed issues with Java Doc for Java 1.8.


  • Fixed a bug in PartitionKeyDefinitionMap to cache single partition collections and not make extra fetch partition key requests.
  • Fixed a bug to not retry when an incorrect partition key value is provided.


  • Added the support for multi-region database accounts.
  • Added support for automatic retry on throttled requests with options to customize the max retry attempts and max retry wait time. See RetryOptions and ConnectionPolicy.getRetryOptions().
  • Deprecated IPartitionResolver based custom partitioning code. Please use partitioned collections for higher storage and throughput.


  • Added retry policy support for rate limiting.


  • Added time to live (TTL) support for documents.



  • Fixed a bug in HashPartitionResolver to generate hash values in little-endian to be consistent with other SDKs.


  • Add Hash & Range partition resolvers to assist with sharding applications across multiple partitions.


  • Implement Upsert. New upsertXXX methods added to support Upsert feature.
  • Implement ID Based Routing. No public API changes, all changes internal.


  • Release skipped to bring version number in alignment with other SDKs


  • Supports GeoSpatial Index
  • Validates ID property for all resources. Ids for resources cannot contain ?, /, #, , characters or end with a space.
  • Adds new header "index transformation progress" to ResourceResponse.


  • Implements V2 indexing policy


  • GA SDK

Release and retirement dates

Microsoft will provide notification at least 12 months in advance of retiring an SDK in order to smooth the transition to a newer/supported version.

New features and functionality and optimizations are only added to the current SDK, as such it is recommend that you always upgrade to the latest SDK version as early as possible.

Any request to Cosmos DB using a retired SDK will be rejected by the service.


All versions 1.x of the SQL SDK for Java will be retired on May 30, 2020.


All versions of the SQL SDK for Java prior to version 1.0.0 were retired on February 29, 2016.

Version Release Date Retirement Date
2.1.3 Mar 13, 2018 ---
2.1.2 Mar 09, 2018 ---
2.1.1 Dec 13, 2018 ---
2.1.0 Nov 20, 2018 ---
2.0.0 Sept 21, 2018 ---
1.16.4 Sept 10, 2018 May 30, 2020
1.16.3 Sept 09, 2018 May 30, 2020
1.16.2 June 29, 2018 May 30, 2020
1.16.1 May 16, 2018 May 30, 2020
1.16.0 March 15, 2018 May 30, 2020
1.15.0 Nov 14, 2017 May 30, 2020
1.14.0 Oct 28, 2017 May 30, 2020
1.13.0 August 25, 2017 May 30, 2020
1.12.0 July 11, 2017 May 30, 2020
1.11.0 May 10, 2017 May 30, 2020
1.10.0 March 11, 2017 May 30, 2020
1.9.6 February 21, 2017 May 30, 2020
1.9.5 January 31, 2017 May 30, 2020
1.9.4 November 24, 2016 May 30, 2020
1.9.3 October 30, 2016 May 30, 2020
1.9.2 October 28, 2016 May 30, 2020
1.9.1 October 26, 2016 May 30, 2020
1.9.0 October 03, 2016 May 30, 2020
1.8.1 June 30, 2016 May 30, 2020
1.8.0 June 14, 2016 May 30, 2020
1.7.1 April 30, 2016 May 30, 2020
1.7.0 April 27, 2016 May 30, 2020
1.6.0 March 29, 2016 May 30, 2020
1.5.1 December 31, 2015 May 30, 2020
1.5.0 December 04, 2015 May 30, 2020
1.4.0 October 05, 2015 May 30, 2020
1.3.0 October 05, 2015 May 30, 2020
1.2.0 August 05, 2015 May 30, 2020
1.1.0 July 09, 2015 May 30, 2020
1.0.1 May 12, 2015 May 30, 2020
1.0.0 April 07, 2015 May 30, 2020
0.9.5-prelease Mar 09, 2015 February 29, 2016
0.9.4-prelease February 17, 2015 February 29, 2016
0.9.3-prelease January 13, 2015 February 29, 2016
0.9.2-prelease December 19, 2014 February 29, 2016
0.9.1-prelease December 19, 2014 February 29, 2016
0.9.0-prelease December 10, 2014 February 29, 2016


1. How will customers be notified of the retiring SDK?

Microsoft will provide 12 month advance notification to the end of support of the retiring SDK in order to facilitate a smooth transition to a supported SDK. Further, customers will be notified through various communication channels – Azure Management Portal, Developer Center, blog post, and direct communication to assigned service administrators.

2. Can customers author applications using a "to-be" retired Azure Cosmos DB SDK during the 12 month period?

Yes, customers will have full access to author, deploy and modify applications using the "to-be" retired Azure Cosmos DB SDK during the 12 month grace period. During the 12 month grace period, customers are advised to migrate to a newer supported version of Azure Cosmos DB SDK as appropriate.

3. Can customers author and modify applications using a retired Azure Cosmos DB SDK after the 12 month notification period?

After the 12 month notification period, the SDK will be retired. Any access to Azure Cosmos DB by an applications using a retired SDK will not be permitted by the Azure Cosmos DB platform. Further, Microsoft will not provide customer support on the retired SDK.

4. What happens to Customer’s running applications that are using unsupported Azure Cosmos DB SDK version?

Any attempts made to connect to the Azure Cosmos DB service with a retired SDK version will be rejected.

5. Will new features and functionality be applied to all non-retired SDKs?

New features and functionality will only be added to new versions. If you are using an old, non-retired, version of the SDK your requests to Azure Cosmos DB will still function as previous but you will not have access to any new capabilities.

6. What should I do if I cannot update my application before a cut-off date?

We recommend that you upgrade to the latest SDK as early as possible. Once an SDK has been tagged for retirement you will have 12 months to update your application. If, for whatever reason, you cannot complete your application update within this timeframe then please contact the Cosmos DB Team and request their assistance before the cutoff date.

See also

To learn more about Cosmos DB, see Microsoft Azure Cosmos DB service page.