From 470b0831dc3ad88b5ea51bd82c128b660b0807d7 Mon Sep 17 00:00:00 2001
From: lsocha
Date: Fri, 17 Oct 2025 13:36:51 +0200
Subject: [PATCH 1/4] cherry pick release commit
---
CHANGELOG.md | 7 +++
README.md | 62 +++++++++----------
build.gradle | 2 +-
.../java/com/box/sdk/BoxAPIConnection.java | 2 +-
4 files changed, 40 insertions(+), 33 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f9f6a94cc..c979e146b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,13 @@
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+### [4.16.4](https://github.com/box/box-java-sdk/compare/v4.16.3...v4.16.4) (2025-10-03)
+
+
+### Bug Fixes:
+
+* Bump Bouncy Castle to fix `CVE-2025-8916` ([#1454](https://github.com/box/box-java-sdk/issues/1454)) ([a3605f4](https://github.com/box/box-java-sdk/commit/a3605f47b4c5ee6b053f0940f9a06cba0a5c2584))
+
### [4.16.3](https://github.com/box/box-java-sdk/compare/v4.16.2...v4.16.3) (2025-07-23)
diff --git a/README.md b/README.md
index e0c0ba246..4209c8705 100644
--- a/README.md
+++ b/README.md
@@ -21,7 +21,7 @@ The Box Java SDK for interacting with the
[Box Content API](https://developers.box.com/docs/).
## Latest Release
-Latest release can be found [here](https://github.com/box/box-java-sdk/tree/v4.16.3).
+Latest release can be found [here](https://github.com/box/box-java-sdk/tree/v4.16.4).
## Upgrades
You can read about how to migrate to the 4 version [here](doc/upgrades/3.x.x%20to%204.x.x.md).
@@ -64,10 +64,10 @@ If you are developing application for Android visit our [Android guide](doc/andr
Maven: `com.eclipsesource.minimal-json:minimal-json:0.9.5`
2. [jose4j v0.9.4](https://bitbucket.org/b_c/jose4j/wiki/Home)
Maven: `org.bitbucket.b_c:jose4j:0.9.4`
-3. [bouncycastle bcprov-jdk18on v1.78.1](https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk18on/1.78.1)
- Maven: `org.bouncycastle:bcprov-jdk18on:1.78.1`
-4. [bouncycastle bcpkix-jdk18on v1.78.1](https://mvnrepository.com/artifact/org.bouncycastle/bcpkix-jdk18on/1.78.1)
- Maven: `org.bouncycastle:bcpkix-jdk18on:1.78.1`
+3. [bouncycastle bcprov-jdk18on v1.82](https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk18on/1.82)
+ Maven: `org.bouncycastle:bcprov-jdk18on:1.82`
+4. [bouncycastle bcpkix-jdk18on v1.82](https://mvnrepository.com/artifact/org.bouncycastle/bcpkix-jdk18on/1.82)
+ Maven: `org.bouncycastle:bcpkix-jdk18on:1.82`
5. [Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 7](http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html)
If you don't install this, you'll get an exception about key length or exception about parsing PKCS private key for Box Developer Edition. This is not a Box thing, this is a U.S. Government requirement concerning strong encryption.
The listed jar is for Oracle JRE. There might be other similar JARs for different JRE versions like the one below for IBM JDK
@@ -243,31 +243,31 @@ You can find guides and tutorials in the `doc` directory.
* [BUILD ON BOX PLATFORM](https://developer.box.com/guides/getting-started/)
* [Javadocs](http://box.github.io/box-java-sdk/javadoc/com/box/sdk/package-summary.html)
-* [Overview](https://github.com/box/box-java-sdk/blob/v4.16.3/doc/overview.md)
-* [Configuration](https://github.com/box/box-java-sdk/blob/v4.16.3/doc/configuration.md)
-* [Logging](https://github.com/box/box-java-sdk/blob/v4.16.3/doc/logging.md)
-* [Authentication](https://github.com/box/box-java-sdk/blob/v4.16.3/doc/authentication.md)
-* [Files](https://github.com/box/box-java-sdk/blob/v4.16.3/doc/files.md)
-* [Folders](https://github.com/box/box-java-sdk/blob/v4.16.3/doc/folders.md)
-* [Comments](https://github.com/box/box-java-sdk/blob/v4.16.3/doc/comments.md)
-* [Collaborations](https://github.com/box/box-java-sdk/blob/v4.16.3/doc/collaborations.md)
-* [Collaboration Allowlists](https://github.com/box/box-java-sdk/blob/v4.16.3/doc/collaboration_allowlists.md)
-* [Events](https://github.com/box/box-java-sdk/blob/v4.16.3/doc/events.md)
-* [Search](https://github.com/box/box-java-sdk/blob/v4.16.3/doc/search.md)
-* [Users](https://github.com/box/box-java-sdk/blob/v4.16.3/doc/users.md)
-* [Groups](https://github.com/box/box-java-sdk/blob/v4.16.3/doc/groups.md)
-* [Tasks](https://github.com/box/box-java-sdk/blob/v4.16.3/doc/tasks.md)
-* [Trash](https://github.com/box/box-java-sdk/blob/v4.16.3/doc/trash.md)
-* [Collections](https://github.com/box/box-java-sdk/blob/v4.16.3/doc/collections.md)
-* [Devices](https://github.com/box/box-java-sdk/blob/v4.16.3/doc/devices.md)
-* [Retention Policies](https://github.com/box/box-java-sdk/blob/v4.16.3/doc/retention_policies.md)
-* [Legal Holds Policy](https://github.com/box/box-java-sdk/blob/v4.16.3/doc/legal_holds.md)
-* [Watermarking](https://github.com/box/box-java-sdk/blob/v4.16.3/doc/watermarking.md)
-* [Webhooks](https://github.com/box/box-java-sdk/blob/v4.16.3/doc/webhooks.md)
-* [Web Links](https://github.com/box/box-java-sdk/blob/v4.16.3/doc/weblinks.md)
-* [Metadata Templates](https://github.com/box/box-java-sdk/blob/v4.16.3/doc/metadata_template.md)
-* [Classifications](https://github.com/box/box-java-sdk/blob/v4.16.3/doc/classifications.md)
-* [Recent Items](https://github.com/box/box-java-sdk/blob/v4.16.3/doc/recent_items.md)
+* [Overview](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/overview.md)
+* [Configuration](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/configuration.md)
+* [Logging](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/logging.md)
+* [Authentication](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/authentication.md)
+* [Files](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/files.md)
+* [Folders](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/folders.md)
+* [Comments](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/comments.md)
+* [Collaborations](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/collaborations.md)
+* [Collaboration Allowlists](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/collaboration_allowlists.md)
+* [Events](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/events.md)
+* [Search](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/search.md)
+* [Users](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/users.md)
+* [Groups](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/groups.md)
+* [Tasks](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/tasks.md)
+* [Trash](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/trash.md)
+* [Collections](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/collections.md)
+* [Devices](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/devices.md)
+* [Retention Policies](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/retention_policies.md)
+* [Legal Holds Policy](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/legal_holds.md)
+* [Watermarking](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/watermarking.md)
+* [Webhooks](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/webhooks.md)
+* [Web Links](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/weblinks.md)
+* [Metadata Templates](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/metadata_template.md)
+* [Classifications](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/classifications.md)
+* [Recent Items](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/recent_items.md)
Javadocs are generated when `gradle javadoc` is run and can be found in
@@ -276,7 +276,7 @@ Javadocs are generated when `gradle javadoc` is run and can be found in
## FIPS 140-2 Compliance
To generate a Json Web Signature used for retrieving tokens in the JWT authentication method, the Box Java SDK decrypts an encrypted private key.
-For this purpose, Box Java SDK uses libraries (`org.bouncycastle:bcpkix-jdk18on:1.77` and `org.bouncycastle:bcprov-jdk18on:1.77`)
+For this purpose, Box Java SDK uses libraries (`org.bouncycastle:bcpkix-jdk18on:1.82` and `org.bouncycastle:bcprov-jdk18on:1.82`)
that are NOT compatible with FIPS 140-2 validated cryptographic library (`org.bouncycastle:bc-fips`).
There are two ways of ensuring that decryption operation is FIPS-compiant.
diff --git a/build.gradle b/build.gradle
index e66a2672a..960ca5039 100644
--- a/build.gradle
+++ b/build.gradle
@@ -15,7 +15,7 @@ sourceCompatibility = 1.8
group = "com.box"
archivesBaseName = "box-java-sdk"
-version = "4.16.3"
+version = "4.16.4"
java {
withJavadocJar()
diff --git a/src/main/java/com/box/sdk/BoxAPIConnection.java b/src/main/java/com/box/sdk/BoxAPIConnection.java
index 239e9a96c..74fb07f57 100644
--- a/src/main/java/com/box/sdk/BoxAPIConnection.java
+++ b/src/main/java/com/box/sdk/BoxAPIConnection.java
@@ -91,7 +91,7 @@ public class BoxAPIConnection {
private static final String BOX_NOTIFICATIONS_HEADER = "Box-Notifications";
private static final String JAVA_VERSION = System.getProperty("java.version");
- private static final String SDK_VERSION = "4.16.3";
+ private static final String SDK_VERSION = "4.16.4";
/**
* The amount of buffer time, in milliseconds, to use when determining if an access token should
From b64f358f1162a81615ffb148194337ee5a323b22 Mon Sep 17 00:00:00 2001
From: lsocha
Date: Fri, 17 Oct 2025 16:52:02 +0200
Subject: [PATCH 2/4] readme
---
.github/ISSUE_TEMPLATE/bug.md | 6 +-
.github/ISSUE_TEMPLATE/config.yml | 6 +-
.github/ISSUE_TEMPLATE/question.md | 6 +-
README.md | 414 +++++++++++++++--------------
docs/{sdk => }/android.md | 0
5 files changed, 217 insertions(+), 215 deletions(-)
rename docs/{sdk => }/android.md (100%)
diff --git a/.github/ISSUE_TEMPLATE/bug.md b/.github/ISSUE_TEMPLATE/bug.md
index f20f05aa7..bf839531f 100644
--- a/.github/ISSUE_TEMPLATE/bug.md
+++ b/.github/ISSUE_TEMPLATE/bug.md
@@ -42,7 +42,7 @@ assignees: mwwoda, mhagmajer, antusus, arjankowski, lukaszsocha2, bartlomiejlesz
Java SDK:
Java:
-[sdk-docs]: ./doc
-[api-docs]: https://developer.box.com/docs
-[dev-forums]: https://community.box.com/t5/Platform-and-Development-Forum/bd-p/DeveloperForum
+[sdk-docs]: ./docs
+[api-docs]: https://developer.box.com/guides
+[dev-forums]: https://community.box.com/box-platform-5
[github-repo]: https://github.com/box/box-java-sdk/search?type=Issues
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
index 2d8263c13..191f75f8b 100644
--- a/.github/ISSUE_TEMPLATE/config.yml
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -1,13 +1,13 @@
blank_issues_enabled: false
contact_links:
- name: SDK documentation
- url: https://github.com/box/box-java-sdk/tree/main/doc
+ url: https://github.com/box/box-java-sdk/tree/combined-sdk/docs
about: Before creating an issue, I have checked that the SDK documentation doesn't solve my issue.
- name: API documentation
- url: https://developer.box.com/docs
+ url: https://developer.box.com/guides/
about: Before creating an issue, I have checked that the API documentation doesn't solve my issue.
- name: Box Developer Forums
- url: https://community.box.com/t5/Platform-and-Development-Forum/bd-p/DeveloperForum
+ url: https://community.box.com/box-platform-5
about: Before creating an issue, I have searched the Box Developer Forums and my issue isn't already reported there.
- name: Issues in this repo
url: https://github.com/box/box-java-sdk/search?type=Issues
diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md
index e209f2818..9f7e198f5 100644
--- a/.github/ISSUE_TEMPLATE/question.md
+++ b/.github/ISSUE_TEMPLATE/question.md
@@ -42,7 +42,7 @@ assignees: mwwoda, mhagmajer, antusus, arjankowski, lukaszsocha2, bartlomiejlesz
Java SDK:
Java:
-[sdk-docs]: ./doc
-[api-docs]: https://developer.box.com/docs
-[dev-forums]: https://community.box.com/t5/Platform-and-Development-Forum/bd-p/DeveloperForum
+[sdk-docs]: ./docs
+[api-docs]: https://developer.box.com/guides/
+[dev-forums]: https://community.box.com/box-platform-5
[github-repo]: https://github.com/box/box-java-sdk/search?type=Issues
diff --git a/README.md b/README.md
index 4209c8705..b180abfec 100644
--- a/README.md
+++ b/README.md
@@ -2,13 +2,6 @@
-# Migration to v10
-
-The [sdk-gen](https://github.com/box/box-java-sdk/tree/sdk-gen) branch contains the generated code for the `v10` version of the Box Java SDK. This is intended primarily for developers migrating from [Box Java SDK Gen](https://github.com/box/box-java-sdk-gen) to the v10 version.
-As part of our upcoming major release, we will be introducing a combined SDK that consolidates the previously separate generated SDK into one unified SDK package for improved usability and maintenance.
-
-You can find the migration guide [here](https://github.com/box/box-java-sdk/blob/sdk-gen/migration-guides/from-box-java-sdk-gen-v0-to-box-java-sdk-v10.md) for transitioning from Box Java SDK Gen to Box Java SDK v10. If you have any questions, please create an issue in the repository or reach out to [Box Developer Support](https://developer.box.com/support/).
-
# Box Java SDK
[](http://opensource.box.com/badges)
@@ -17,261 +10,275 @@ You can find the migration guide [here](https://github.com/box/box-java-sdk/blob
[](https://github.com/box/box-java-sdk/actions/workflows/build-main.yml)
[](https://coveralls.io/github/box/box-java-sdk?branch=main)
-The Box Java SDK for interacting with the
-[Box Content API](https://developers.box.com/docs/).
+
+
-## Latest Release
-Latest release can be found [here](https://github.com/box/box-java-sdk/tree/v4.16.4).
+- [Supported versions](#supported-versions)
+ - [Version v4](#version-v4)
+ - [Version v10](#version-v10)
+ - [Which Version Should I Use?](#which-version-should-i-use)
+- [Installing](#installing)
+- [Getting Started](#getting-started)
+ - [With box_sdk_gen package (recommended)](#with-box_sdk_gen-package-recommended)
+ - [With boxsdk package (deprecated)](#with-boxsdk-package-deprecated)
+- [Authentication](#authentication)
+- [Using both box_sdk_gen and boxsdk packages simultaneously](#using-both-box_sdk_gen-and-boxsdk-packages-simultaneously)
+- [Documentation](#documentation)
+- [Migration guides](#migration-guides)
+- [Versioning](#versioning)
+ - [Version schedule](#version-schedule)
+- [Contributing](#contributing)
+- [FIPS 140-2 Compliance](#fips-140-2-compliance)
+- [Questions, Bugs, and Feature Requests?](#questions-bugs-and-feature-requests)
+- [Copyright and License](#copyright-and-license)
-## Upgrades
-You can read about how to migrate to the 4 version [here](doc/upgrades/3.x.x%20to%204.x.x.md).
+
-## Versions
-We use a modified version of [Semantic Versioning](https://semver.org/) for all changes. See [version strategy](VERSIONS.md) for details which is effective from 30 July 2022.
+# Supported versions
-### Supported Version
+To enhance developer experience, provide full Box API coverage, and rapid updates we have introduced the new generated codebase through the `com.box.sdkgen` package.
+The `com.box.sdkgen` package is available in two major supported versions: v5 and v10.
-Only the current MAJOR version of SDK is supported. New features, functionality, bug fixes, and security updates will only be added to the current MAJOR version.
+## Version v5
-A current release is on the leading edge of our SDK development, and is intended for customers who are in active development and want the latest and greatest features. Instead of stating a release date for a new feature, we set a fixed minor or patch release cadence of maximum 2-3 months (while we may release more often). At the same time, there is no schedule for major or breaking release. Instead, we will communicate one quarter in advance the upcoming breaking change to allow customers to plan for the upgrade. We always recommend that all users run the latest available minor release for whatever major version is in use. We highly recommend upgrading to the latest SDK major release at the earliest convenient time and before the EOL date.
+In v5 of the Box Java SDK, we are introducing a version that consolidates both the manually written package (`com.box.sdk`)
+and the new generated package (`com.box.sdkgen`). This allows developers to use both packages simultaneously within a single project.
-### Version schedule
+Version v5 of the Box Java SDK will be supported until 2027. During this period,
+the `com.box.sdk` package will be marked as deprecated and will receive only bug fixes and security patches.
+All new features and support for new Box APIs will be provided exclusively in the `com.box.sdkgen` package.
-| Version | Supported Environments | State | First Release | EOL/Terminated |
-|---------|---------------------------------------------------------|-----------|---------------|----------------|
-| 4 | Java 8 and up | Supported | 17 Jan 2023 | TBD |
-| 3 | Java 8 and up | EOL | 17 Jan 2022 | 17 Jan 2023 |
-| 2 | | EOL | 07 Jan 2016 | 17 Jan 2022 |
-| 1 | | EOL | 15 Apr 2015 | 07 Jan 2016 |
+The codebase for v5 of the Box Java SDK is currently available on the [combined-sdk](https://github.com/box/box-java-sdk/tree/combined-sdk) branch.
+Migration guide which would help with migration from `com.box.sdk` to `com.box.sdkgen` can be found [here](./migration-guides/from-com.box.sdk-to-com.box.sdkgen.md).
+Version v5 is intended for:
+- Existing developers of the Box Java SDK v4 who want to access new API features while keeping their current codebase largely unchanged.
+- Existing developers who are in the process of migrating to `com.box.sdkgen`, but do not want to move all their code to the new package immediately.
+## Version v10
-## Getting Started
-Getting Started Docs: https://developer.box.com/guides/tooling/sdks/java/
-API Reference: https://developer.box.com/reference/
+Starting with v10, the SDK is built entirely on the generated `com.box.sdkgen` package, which fully and exclusively replaces the old `com.box.sdk` package.
+The codebase for v10 of the Box Java SDK is currently available on the [sdk-gen](https://github.com/box/box-java-sdk/tree/sdk-gen) branch.
-## JVM
+Version v10 is intended for:
+- New users of the Box Java SDK.
+- Developers already working with the generated Box Java SDK previously available under the [Box Java SDK Gen repository](https://github.com/box/box-java-sdk-gen).
-The SDK can be obtained by adding it as a [maven dependency](http://opensource.box.com/box-java-sdk/),
-cloning the source into your project, or by downloading one of the precompiled JARs from the
-[releases page on GitHub](https://github.com/box/box-java-sdk/releases).
+## Which Version Should I Use?
-If you are developing application for Android visit our [Android guide](doc/android.md)
+| Scenario | Recommended Version | Example gradle dependency |
+|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------|-------------------------------|
+| Creating a new application | Use [v10](https://github.com/box/box-java-sdk/tree/sdk-gen) | `com.box:box-java-sdk:10.0.0` |
+| App using [box-java-sdk-gen](https://central.sonatype.com/artifact/com.box/box-java-sdk-gen) artifact | Migrate to [v10](https://github.com/box/box-java-sdk/tree/sdk-gen) | `com.box:box-java-sdk:10.0.0` |
+| App using both [box-java-sdk-gen](https://central.sonatype.com/artifact/com.box/box-java-sdk-gen) and [box-java-sdk](https://central.sonatype.com/artifact/com.box/box-java-sdk) artifacts | Upgrade to [v5](https://github.com/box/box-java-sdk/tree/combined-sdk) | `com.box:box-java-sdk:5.0.0` |
+| App using v4 of [box-java-sdk](https://central.sonatype.com/artifact/com.box/box-java-sdk) artifact | Upgrade to [v5](https://github.com/box/box-java-sdk/tree/combined-sdk) | `com.box:box-java-sdk:5.0.0` |
-**IF YOU USE THE JAR, you'll also need to include several dependencies:**
+For full guidance on SDK versioning, see the [Box SDK Versioning Guide](https://developer.box.com/guides/tooling/sdks/sdk-versioning/).
-1. [minimal-json v0.9.5](https://github.com/ralfstx/minimal-json)
- Maven: `com.eclipsesource.minimal-json:minimal-json:0.9.5`
-2. [jose4j v0.9.4](https://bitbucket.org/b_c/jose4j/wiki/Home)
- Maven: `org.bitbucket.b_c:jose4j:0.9.4`
-3. [bouncycastle bcprov-jdk18on v1.82](https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk18on/1.82)
- Maven: `org.bouncycastle:bcprov-jdk18on:1.82`
-4. [bouncycastle bcpkix-jdk18on v1.82](https://mvnrepository.com/artifact/org.bouncycastle/bcpkix-jdk18on/1.82)
- Maven: `org.bouncycastle:bcpkix-jdk18on:1.82`
-5. [Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 7](http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html)
- If you don't install this, you'll get an exception about key length or exception about parsing PKCS private key for Box Developer Edition. This is not a Box thing, this is a U.S. Government requirement concerning strong encryption.
- The listed jar is for Oracle JRE. There might be other similar JARs for different JRE versions like the one below for IBM JDK
- [Java Cryptography Extension for IBM JDK](https://www14.software.ibm.com/webapp/iwm/web/preLogin.do?source=jcesdk)
-6. [okhttp v4.12.0](https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp/4.12.0)
- Maven: `com.squareup.okhttp3:okhttp:4.12.0`
-7. [okio-jvm v3.2.0](https://mvnrepository.com/artifact/com.squareup.okio/okio-jvm/3.2.0)
- Maven: `com.squareup.okio:okio-jvm:3.2.0`
-8. [kotlin-stdlib v1.6.20](https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-stdlib/1.6.20)
- Maven: `org.jetbrains.kotlin:kotlin-stdlib:1.6.20`
-9. [kotlin-stdlib-common v1.6.20](https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-stdlib-common/1.6.20)
- Maven: `org.jetbrains.kotlin:kotlin-stdlib-common:1.6.20`
+# Installing
-An app has to be authorized by the admin of the enterprise before these tests. It's always good to begin with the
-[Getting Started Section](https://developer.box.com/docs/setting-up-a-jwt-app) at Box's developer website.
+The SDK is available on [Maven Central Repository](https://central.sonatype.com/artifact/com.box/box-java-sdk).
-## Android
-If you are developing application for Android visit our [Android guide](doc/android.md).
-
-## Box Java SDK and other frameworks
-Box Java SDK utilizes the OkHttp client as its underlying component. This client is widely adopted by various
-frameworks, which can occasionally result in issues. We recommend considering library upgrades or excluding
-OkHttp from those frameworks or the software development kit (SDK) to determine if that resolves the problems.
-Typically, it is advisable to search for any reports or instances where others encountered similar
-issues when using the specific framework alongside an external OkHttp client.
+```xml
+
+ com.box
+ box-java-sdk
+ VERSION
+
+```
-## Quick Test
+To include the SDK in your project using Gradle, add the following dependency to your `build.gradle` file:
-**Following things work only if the app has been configured and authorized as mentioned [here](https://developer.box.com/docs/setting-up-a-jwt-app)**
+```gradle
+implementation 'com.box:box-java-sdk:VERSION'
+```
-Here is a simple example of how to authenticate with the API using a developer
-token and then print the ID and name of each item in your root folder.
+To include in your project the v5 version of Box Java SDK that consolidates both the manual package (`com.box.sdk`)
+and the new generated package (`com.box.sdkgen`), replace `VERSION` with `5.0.0` or later version of v5 major.
-```java
-BoxAPIConnection api = new BoxAPIConnection("developer-token");
-BoxFolder rootFolder = BoxFolder.getRootFolder(api);
-for (BoxItem.Info itemInfo : rootFolder) {
- System.out.format("[%s] %s\n", itemInfo.getID(), itemInfo.getName());
-}
-```
+The Box Java SDK is compatible with Java 8 and up.
-For more details on how to get started, check out the [overview guide](doc/overview.md).
-It has a short explanation of how the SDK works and how you can get started using it.
+# Getting Started
-### Sample Projects
+To get started with the SDK, get a Developer Token from the Configuration page of your app in the [Box Developer Console](https://app.box.com/developers/console).
+Developer Tokens are short-lived and expire after 60 minutes, which is good for testing but not for production use.
+To learn about other authentication methods, see the [Authentication](#authentication) section below.
-Three sample projects can be found in `src/example`.
+The examples below demonstrate how to authenticate with Developer Token and print names of all items inside a root folder.
-#### Main
+## With com.box.sdkgen package (recommended)
-This project will output your name and a list of the files and folders in your root directory.
+The SDK provides an `BoxDeveloperTokenAuth` class, which allows you to authenticate using your Developer Token.
+Use instance of `BoxDeveloperTokenAuth` to initialize `BoxClient` object.
+Using `BoxClient` object you can access managers, which allow you to perform some operations on your Box account.
-To run the project, first provide a developer token in
-`src/example/java/com/box/sdk/example/Main.java`. You can obtain a developer
-token from your application's [developer console](https://app.box.com/developers/services).
```java
-public final class Main {
- private static final String DEVELOPER_TOKEN = "";
-
- // ...
-}
+import com.box.sdkgen.client.BoxClient;
+import com.box.sdkgen.box.developertokenauth.BoxDeveloperTokenAuth;
+
+BoxDeveloperTokenAuth auth = new BoxDeveloperTokenAuth("DEVELOPER_TOKEN");
+BoxClient client = new BoxClient(auth);
+client.folders.getFolderItems("0").getEntries().forEach(item -> {
+ System.out.println(item.toString());
+});
```
-Then just invoke `gradle runExample` to run the Main example!
-
-### Other projects
-
-Below projects need app configurations stored in JSON format in `config.json` file at location `src/example/config/`.
+## With com.box.sdk package (deprecated)
-This configuration file can be downloaded from your application's `Configuration` tab in the
-[developer console](https://app.box.com/developers/console)
-
-#### CreateAppUser
+```java
+import com.box.sdk.BoxAPIConnection;
+import com.box.sdk.BoxFolder;
+import com.box.sdk.BoxItem;
-This project will output the user id of enterprise admin and will create a new App User for the enterprise.
+BoxAPIConnection api = new BoxAPIConnection("DEVELOPER_TOKEN");
+BoxFolder rootFolder = BoxFolder.getRootFolder(api);
+for (BoxItem.Info itemInfo : rootFolder) {
+ System.out.format("[%s] %s\n", itemInfo.getID(), itemInfo.getName());
+}
+```
-To run the project, first provide the name of the app user in `src/example/java/com/box/sdk/example/CreateAppUser.java`.
+# Authentication
-```java
-public final class CreateAppUser {
+Both the `com.box.sdkgen` and `com.box.sdk` packages support multiple authentication methods, including
+Developer Token, OAuth 2.0, Client Credentials Grant, and JSON Web Token (JWT).
- private static final String APP_USER_NAME = "";
- private static final String EXTERNAL_APP_USER_ID = "";
+You can find detailed instructions and example code for each authentication method in the following documentation:
+- [Authentication for the `com.box.sdkgen` package](./docs/sdkgen/Authentication.md)
+- [Authentication for the `com.box.sdk` package](./docs/sdk/authentication.md)
- // ...
-}
-```
+# Using both com.box.sdkgen and com.box.sdk packages simultaneously
-Then just invoke `gradle runCreateAppUser` to run the CreateAppUser example!
+With v5 of the Box Java SDK, you can use both the `com.box.sdkgen` and `com.box.sdk` packages in the same project.
+This allows you to gradually migrate your codebase to the new generated package while still using the manual package for existing functionality.
-Note: The JCE bundled with oracle JRE supports keys upto 128 bit length only. To use larger cryptographic keys, install [JCE Unlimited Strength Jurisdiction Policy Files](http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html).
+``` java
+import com.box.sdk.BoxConfig;
+import com.box.sdk.BoxDeveloperEditionAPIConnection;
-#### AccessAsAppUser
+import com.box.sdk.BoxFolder;
+import com.box.sdkgen.box.jwtauth.BoxJWTAuth;
+import com.box.sdkgen.box.jwtauth.JWTConfig;
+import com.box.sdkgen.client.BoxClient;
+import com.box.sdkgen.managers.folders.UpdateFolderByIdRequestBody;
+import com.box.sdkgen.schemas.folder.Folder;
-This project will retrieve the information of the given App User and will list the files/folders under root folder.
+import java.io.FileReader;
+import java.io.Reader;
-To run the project, first provide the Id of the app user in `src/example/java/com/box/sdk/example/CreateAppUser.java`.
+public class Main {
+ public static void main(String[] args) throws Exception {
-```java
-public final class AccessAsAppUser {
+ Reader reader = new FileReader("src/example/config/config.json");
+ BoxConfig boxConfig = BoxConfig.readFrom(reader);
+ BoxDeveloperEditionAPIConnection api = BoxDeveloperEditionAPIConnection.getAppEnterpriseConnection(boxConfig);
- private static final String USER_ID = "";
+ JWTConfig config = JWTConfig.fromConfigFile("src/example/config/config.json");
+ BoxJWTAuth auth = new BoxJWTAuth(config);
+ BoxClient client = new BoxClient(auth);
- // ...
+ BoxFolder rootFolder = new BoxFolder(api, "0");
+ BoxFolder.Info subfolder = rootFolder.createFolder("My Subfolder");
+ Folder updatedFolder = client.getFolders().updateFolderById(
+ subfolder.getID(),
+ new UpdateFolderByIdRequestBody.Builder().name("My Updated Subfolder").build()
+ );
+ System.out.println("Created folder with ID " + subfolder.getID() + " has been updated to " + updatedFolder.getName());
+ }
}
```
-Then just invoke `gradle runAccessAsAppUser` to run the AccessAsAppUser example!
-
-Note: The JCE bundled with oracle JRE supports keys upto 128 bit length only. To use larger cryptographic keys, install [JCE Unlimited Strength Jurisdiction Policy Files](http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html).
+# Documentation
-#### BoxDeveloperEditionAPIConnectionAsEnterpriseUser
+Full documentation of the available functionality, along with example code can be found:
+- for the `com.box.sdkgen` package, is available [here](./docs/sdk).
+- for the `com.box.sdk` package can be found [here](./docs/sdkgen/README.md).
-This example shows how to get tokens for an enterprise user, say admin of the enterprise and do actions on behalf of admin.
+You can also see the [API Reference](https://developer.box.com/reference/) for additional information.
-To run the project, follow below steps
+# Migration guides
-1. Turn on `Enterprise` in `Application Access` section in Developer Console for the app
+Migration guides which help you to migrate to supported major SDK versions can be found [here](./migration-guides).
-2. Turn on `Generate User Access Tokens` in `Advanced Features` section in Developer Console for the app
+# Versioning
-3. Provide the Id of the admin user (or any enterprise user) in `src/example/java/com/box/sdk/example/BoxDeveloperEditionAPIConnectionAsEnterpriseUser.java`.
+We use a modified version of [Semantic Versioning](https://semver.org/) for all changes. See [version strategy](VERSIONS.md) for details which is effective from 30 July 2022.
-```java
-public final class BoxDeveloperEditionAPIConnectionAsEnterpriseUser {
+A current release is on the leading edge of our SDK development, and is intended for customers who are in active development and want the latest and greatest features.
+Instead of stating a release date for a new feature, we set a fixed minor or patch release cadence of maximum 2-3 months (while we may release more often).
+At the same time, there is no schedule for major or breaking release. Instead, we will communicate one quarter in advance the upcoming breaking change to allow customers to plan for the upgrade.
- private static final String USER_ID = "";
- // ...
- Reader reader = new FileReader("src/example/config/config.json");
- BoxConfig boxConfig = BoxConfig.readFrom(reader);
- IAccessTokenCache accessTokenCache = new InMemoryLRUAccessTokenCache(10);
+We always recommend that all users run the latest available minor release for whatever major version is in use.
+We highly recommend upgrading to the latest SDK major release at the earliest convenient time and before the EOL date.
- BoxDeveloperEditionAPIConnection api = new BoxDeveloperEditionAPIConnection(
- USER_ID,
- DeveloperEditionEntityType.USER,
- boxConfig,
- accessTokenCache
- );
-}
-```
+## Version schedule
-## Compatibility
+### Version schedule
-The Box Java SDK is compatible with Java 8 and up.
+| Version | Supported Environments | State | First Release | EOL/Terminated |
+|---------|---------------------------------------------------------|-----------|---------------|----------------|
+| 10 | Java 8 and up | Supported | 17 Sep 2025 | TBD |
+| 5 | Java 8 and up | Supported | 23 Oct 2025 | 2027 |
+| 4 | Java 8 and up | Supported | 17 Jan 2023 | 23 Oct 2025 |
+| 3 | Java 8 and up | EOL | 17 Jan 2022 | 17 Jan 2023 |
+| 2 | | EOL | 07 Jan 2016 | 17 Jan 2022 |
+| 1 | | EOL | 15 Apr 2015 | 07 Jan 2016 |
-## Compression Support
-The SDK supports both gzip and zstd compression for API requests. Compression is handled automatically based on server capabilities.
+# Contributing
-## Building
+See [CONTRIBUTING.md](./CONTRIBUTING.md).
-The SDK uses Gradle for its build system. SDK comes with Gradle wrapper. Running `./gradlew build` from the root
-of the repository will compile, lint, and test the SDK.
+# 3rd Party Libraries & Licenses
-```bash
-$ ./gradlew build
-```
+The Java SDK uses third-party libraries that are required for usage. Their licenses are listed below:
-The SDK also includes integration tests which make real API calls, and therefore
-are run separately from unit tests. Integration tests should be run against a
-test account since they create and delete data. To run the integration tests,
-remove the `.template` extension from
-`src/test/config/config.properties.template` and fill in your test account's
-information. Then run:
-
-```bash
-$ ./gradlew integrationTest
-```
+1. [minimal-json v0.9.5](https://github.com/ralfstx/minimal-json)
+ Maven: `com.eclipsesource.minimal-json:minimal-json:0.9.5`
+ Licence: [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0)
+2. [jose4j v0.9.4](https://bitbucket.org/b_c/jose4j/wiki/Home)
+ Maven: `org.bitbucket.b_c:jose4j:0.9.4`
+ Licence: [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0)
+3. [bouncycastle bcprov-jdk18on v1.82](https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk18on/1.82)
+ Maven: `org.bouncycastle:bcprov-jdk18on:1.82`
+ Licence: [MIT](https://opensource.org/licenses/MIT)
+4. [bouncycastle bcpkix-jdk18on v1.82](https://mvnrepository.com/artifact/org.bouncycastle/bcpkix-jdk18on/1.82)
+ Maven: `org.bouncycastle:bcpkix-jdk18on:1.82`
+ Licence: [MIT](https://opensource.org/licenses/MIT)
+5. [Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 7](http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html)
+ If you don't install this, you'll get an exception about key length or exception about parsing PKCS private key for Box Developer Edition. This is not a Box thing, this is a U.S. Government requirement concerning strong encryption.
+ The listed jar is for Oracle JRE. There might be other similar JARs for different JRE versions like the one below for IBM JDK
+ [Java Cryptography Extension for IBM JDK](https://www14.software.ibm.com/webapp/iwm/web/preLogin.do?source=jcesdk)
+ Licence: [Oracle Binary Code Licence](http://www.oracle.com/technetwork/licenses/index.html)
+6. [okhttp v4.12.0](https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp/4.12.0)
+ Maven: `com.squareup.okhttp3:okhttp:4.12.0`
+ Licence: [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0)
+7. [okio-jvm v3.2.0](https://mvnrepository.com/artifact/com.squareup.okio/okio-jvm/3.2.0)
+ Maven: `com.squareup.okio:okio-jvm:3.2.0`
+ Licence: [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0)
+8. [kotlin-stdlib v1.6.20](https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-stdlib/1.6.20)
+ Maven: `org.jetbrains.kotlin:kotlin-stdlib:1.6.20`
+ Licence: [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0)
+9. [kotlin-stdlib-common v1.6.20](https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-stdlib-common/1.6.20)
+ Maven: `org.jetbrains.kotlin:kotlin-stdlib-common:1.6.20`
+ Licence: [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0)
+10. [jackson-annotations v2.17.2](https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations/2.17.2)
+ Maven: `com.fasterxml.jackson.core:jackson-annotations:2.17.2`
+ Licence: [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0)
+11. [jackson-core v2.17.2](https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core/2.17.2)
+ Maven: `com.fasterxml.jackson.core:jackson-core:2.17.2`
+ Licence: [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0)
+12. [jackson-databind v2.17.2](https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind/2.17.2)
+ Maven: `com.fasterxml.jackson.core:jackson-databind:2.17.2`
+ Licence: [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0)
+13. [okio v3.5.0](https://mvnrepository.com/artifact/com.squareup.okio/okio/3.5.0)
+ Maven: `com.squareup.okio:okio:3.5.0`
+ Licence: [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0)
+14. [jose4j v0.9.6](https://mvnrepository.com/artifact/org.bitbucket.b_c/jose4j/0.9.6)
+ Maven: `org.bitbucket.b_c:jose4j:0.9.6`
+ Licence: [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0)
-## Documentation
-
-You can find guides and tutorials in the `doc` directory.
-
-* [BUILD ON BOX PLATFORM](https://developer.box.com/guides/getting-started/)
-* [Javadocs](http://box.github.io/box-java-sdk/javadoc/com/box/sdk/package-summary.html)
-* [Overview](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/overview.md)
-* [Configuration](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/configuration.md)
-* [Logging](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/logging.md)
-* [Authentication](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/authentication.md)
-* [Files](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/files.md)
-* [Folders](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/folders.md)
-* [Comments](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/comments.md)
-* [Collaborations](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/collaborations.md)
-* [Collaboration Allowlists](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/collaboration_allowlists.md)
-* [Events](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/events.md)
-* [Search](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/search.md)
-* [Users](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/users.md)
-* [Groups](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/groups.md)
-* [Tasks](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/tasks.md)
-* [Trash](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/trash.md)
-* [Collections](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/collections.md)
-* [Devices](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/devices.md)
-* [Retention Policies](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/retention_policies.md)
-* [Legal Holds Policy](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/legal_holds.md)
-* [Watermarking](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/watermarking.md)
-* [Webhooks](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/webhooks.md)
-* [Web Links](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/weblinks.md)
-* [Metadata Templates](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/metadata_template.md)
-* [Classifications](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/classifications.md)
-* [Recent Items](https://github.com/box/box-java-sdk/blob/v4.16.4/doc/recent_items.md)
-
-
-Javadocs are generated when `gradle javadoc` is run and can be found in
-`build/doc/javadoc`.
+## Android
+If you are developing application for Android visit our [Android guide](./docs/android.md).
## FIPS 140-2 Compliance
@@ -292,7 +299,7 @@ Below is an example of setting up a `BoxDeveloperEditionAPIConnection` with a co
```java
Reader reader = new FileReader(JWT_CONFIG_PATH);
BoxConfig boxConfig = BoxConfig.readFrom(reader);
-boxConfig.setPrivateKeyDecryptor(customDecryptor)
+boxConfig.setPrivateKeyDecryptor(customDecryptor);
BoxDeveloperEditionAPIConnection api = BoxDeveloperEditionAPIConnection.getAppEnterpriseConnection(boxConfig);
```
@@ -349,16 +356,11 @@ Maven example:
```
-### Bouncycastle BadPaddingException for JWT auth
+# Questions, Bugs, and Feature Requests?
-As of October 2023, RSA keypairs generated on the Developer Console (refer to the [Generate a keypair guide](https://developer.box.com/guides/authentication/jwt/jwt-setup/#generate-a-keypair-recommended))
-are no longer compatible with Bouncy Castle version 1.57, which was utilized in the Box Java SDK up to v4.6.1.
-Attempting to use a JWT configuration downloaded from the Developer Console results in a
-`javax.crypto.BadPaddingException: pad block corrupted` error.
-Prossible solutions:
-1. Upgrade to the v4.7.0 of Box Java SDK, which uses newer version of the Bouncy Castle library. (recommended)
-2. Manually generate a keypair using OpenSSL version 1.0.x and add the Public Key to the Developer Console.
- The [manually add keypair guide](https://developer.box.com/guides/authentication/jwt/jwt-setup/#manually-add-keypair) provides assistance in this process.
+Need to contact us directly? [Browse the issues tickets](https://github.com/box/box-java-sdk/issues)! Or, if that
+doesn't work, [file a new one](https://github.com/box/box-java-sdk/issues/new), and we will get
+back to you. If you have general questions about the Box API, you can post to the [Box Developer Forum](https://community.box.com/box-platform-5).
## Copyright and License
diff --git a/docs/sdk/android.md b/docs/android.md
similarity index 100%
rename from docs/sdk/android.md
rename to docs/android.md
From ac6a9eb6abbca8b2a2ba6e1f331f9ef9f5f052a8 Mon Sep 17 00:00:00 2001
From: lsocha
Date: Fri, 17 Oct 2025 16:58:30 +0200
Subject: [PATCH 3/4] updaTE TOC
---
README.md | 21 ++++++++++++---------
1 file changed, 12 insertions(+), 9 deletions(-)
diff --git a/README.md b/README.md
index b180abfec..d4b3abc8f 100644
--- a/README.md
+++ b/README.md
@@ -14,23 +14,26 @@
- [Supported versions](#supported-versions)
- - [Version v4](#version-v4)
- - [Version v10](#version-v10)
- - [Which Version Should I Use?](#which-version-should-i-use)
+ - [Version v5](#version-v5)
+ - [Version v10](#version-v10)
+ - [Which Version Should I Use?](#which-version-should-i-use)
- [Installing](#installing)
- [Getting Started](#getting-started)
- - [With box_sdk_gen package (recommended)](#with-box_sdk_gen-package-recommended)
- - [With boxsdk package (deprecated)](#with-boxsdk-package-deprecated)
+ - [With com.box.sdkgen package (recommended)](#with-comboxsdkgen-package-recommended)
+ - [With com.box.sdk package (deprecated)](#with-comboxsdk-package-deprecated)
- [Authentication](#authentication)
-- [Using both box_sdk_gen and boxsdk packages simultaneously](#using-both-box_sdk_gen-and-boxsdk-packages-simultaneously)
+- [Using both com.box.sdkgen and com.box.sdk packages simultaneously](#using-both-comboxsdkgen-and-comboxsdk-packages-simultaneously)
- [Documentation](#documentation)
- [Migration guides](#migration-guides)
- [Versioning](#versioning)
- - [Version schedule](#version-schedule)
+ - [Version schedule](#version-schedule)
+ - [Version schedule](#version-schedule-1)
- [Contributing](#contributing)
-- [FIPS 140-2 Compliance](#fips-140-2-compliance)
+- [3rd Party Libraries & Licenses](#3rd-party-libraries--licenses)
+ - [Android](#android)
+ - [FIPS 140-2 Compliance](#fips-140-2-compliance)
- [Questions, Bugs, and Feature Requests?](#questions-bugs-and-feature-requests)
-- [Copyright and License](#copyright-and-license)
+ - [Copyright and License](#copyright-and-license)
From 37d131ce29d29ca8be5ae7e1b6f79a7e9d4e2912 Mon Sep 17 00:00:00 2001
From: lsocha
Date: Mon, 20 Oct 2025 12:24:58 +0200
Subject: [PATCH 4/4] fixes
---
.github/ISSUE_TEMPLATE/config.yml | 2 +-
.github/ISSUE_TEMPLATE/question.md | 2 +-
README.md | 18 ++++++++++++++----
3 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
index 191f75f8b..3e13a21cb 100644
--- a/.github/ISSUE_TEMPLATE/config.yml
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -4,7 +4,7 @@ contact_links:
url: https://github.com/box/box-java-sdk/tree/combined-sdk/docs
about: Before creating an issue, I have checked that the SDK documentation doesn't solve my issue.
- name: API documentation
- url: https://developer.box.com/guides/
+ url: https://developer.box.com/guides
about: Before creating an issue, I have checked that the API documentation doesn't solve my issue.
- name: Box Developer Forums
url: https://community.box.com/box-platform-5
diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md
index 9f7e198f5..643962326 100644
--- a/.github/ISSUE_TEMPLATE/question.md
+++ b/.github/ISSUE_TEMPLATE/question.md
@@ -43,6 +43,6 @@ Java SDK:
Java:
[sdk-docs]: ./docs
-[api-docs]: https://developer.box.com/guides/
+[api-docs]: https://developer.box.com/guides
[dev-forums]: https://community.box.com/box-platform-5
[github-repo]: https://github.com/box/box-java-sdk/search?type=Issues
diff --git a/README.md b/README.md
index d4b3abc8f..7509ffd89 100644
--- a/README.md
+++ b/README.md
@@ -292,13 +292,16 @@ that are NOT compatible with FIPS 140-2 validated cryptographic library (`org.bo
There are two ways of ensuring that decryption operation is FIPS-compiant.
1. You can provide a custom implementation of the `IPrivateKeyDecryptor` interface,
-which performs the decryption operation using FIPS-certified library of your choice. The interface requires the
-implementation of just one method:
+which performs the decryption operation using FIPS-certified library of your choice.
+`IPrivateKeyDecryptor` interface is availiable both in `com.box.sdk` and `com.box.sdkgen` packages.
+The interface requires the implementation of just one method:
```java
PrivateKey decryptPrivateKey(String encryptedPrivateKey, String passphrase);
```
-After implementing the custom decryptor, you need to set your custom decryptor class in the Box Config.
-Below is an example of setting up a `BoxDeveloperEditionAPIConnection` with a config file and the custom decryptor.
+After implementing the custom decryptor, you need to set your custom decryptor class:
+
+- For `com.box.sdk` package, you can set the custom decryptor in the `BoxConfig` object
+before creating the `BoxDeveloperEditionAPIConnection`.
```java
Reader reader = new FileReader(JWT_CONFIG_PATH);
BoxConfig boxConfig = BoxConfig.readFrom(reader);
@@ -306,6 +309,13 @@ boxConfig.setPrivateKeyDecryptor(customDecryptor);
BoxDeveloperEditionAPIConnection api = BoxDeveloperEditionAPIConnection.getAppEnterpriseConnection(boxConfig);
```
+- For `com.box.sdkgen` package, you can set the custom decryptor in the `JWTConfig` object
+```java
+JWTConfig newConfig = JWTConfig.fromConfigFile(JWT_CONFIG_PATH, customDecryptor);
+BoxJWTAuth auth = new BoxJWTAuth(jwtConfig);
+BoxClient client = new BoxClient(auth);
+```
+
2. Alternative method is to override the Bouncy Castle libraries to the v.1.57 version,
which are compatible with the FIPS 140-2 validated cryptographic library (`org.bouncycastle:bc-fips`).