Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
8a7122b
feat(SK-2849): add v1.x deprecation warning and EOL notice
Devesh-Skyflow May 26, 2026
d45a147
SK-2837: Add V2.1 migration guide and README upgrade banner (#313)
Devesh-Skyflow May 26, 2026
68766b0
chore: update internal release workflow to trigger on v1/release/* br…
Devesh-Skyflow May 26, 2026
da05f13
chore: update internal release trigger to release/v1/* branches
Devesh-Skyflow May 26, 2026
7a0438b
chore: add workflow_dispatch and upgrade action versions
Devesh-Skyflow May 26, 2026
16ecdd4
[AUTOMATED] Private Release 2.1.0-dev-7a0438b
Devesh-Skyflow May 26, 2026
f1e11b7
chore: skip tests in v1 internal release deploy
Devesh-Skyflow May 26, 2026
1f89db6
chore: internal release manual-only trigger for v1
Devesh-Skyflow May 26, 2026
f69fe57
chore: rename internal release workflow for consistency
Devesh-Skyflow May 26, 2026
ee90e8e
chore: restore release/v1/* trigger, remove unintentional tag trigger
Devesh-Skyflow May 26, 2026
cf8f94d
Merge branch 'release/v1/26.5.0' into devesh/SK-2849-v1-deprication
Devesh-Skyflow May 26, 2026
ebacfb3
chore: remove manual trigger after merge
Devesh-Skyflow May 26, 2026
12c7bf6
chore: revert workflow changes to v1 baseline
Devesh-Skyflow May 27, 2026
db86941
fix: fix dead links in README for InsertBulk examples
Devesh-Skyflow May 27, 2026
58b0671
chore: upgrade action versions and skip tests for v1 release
Devesh-Skyflow May 27, 2026
c88f8ae
chore: merge release/26.5.6 into deprecation branch
Devesh-Skyflow May 27, 2026
c2f0e22
fix: fix sample links in README to point to v1 branch
Devesh-Skyflow May 27, 2026
98f151b
fix: fix dead link in migration guide to point to v2 README
Devesh-Skyflow May 27, 2026
4e5fc8c
fix: point migration guide link to v1 README vault-apis section
Devesh-Skyflow May 27, 2026
2045bda
fix: point migration guide link to main README initialize-the-client …
Devesh-Skyflow May 27, 2026
ee2d631
docs: add breaking changes summary table to migration guide
Devesh-Skyflow May 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/shared-build-and-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,15 +38,15 @@ jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
with:
ref: ${{ inputs.ref }}
fetch-depth: 0

- name: Set up maven or jfrog repository
uses: actions/setup-java@v1
uses: actions/setup-java@v4
with:
java-version: '1.8'
java-version: '8'
distribution: 'adopt'
server-id: ${{ inputs.server-id }}
server-username: SERVER_USERNAME
Expand Down Expand Up @@ -98,7 +98,7 @@ jobs:
json: ${{ secrets.TEST_CREDENTIALS_FILE_STRING }}

- name: Publish package
run: mvn clean deploy -P ${{ inputs.profile }}
run: mvn clean deploy -P ${{ inputs.profile }} -DskipTests
env:
SERVER_USERNAME: ${{ secrets.server-username }}
SERVER_PASSWORD: ${{ secrets.server-password }}
Expand Down
32 changes: 16 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ The [Service Account](https://github.com/skyflowapi/skyflow-java/tree/main/src/m

The `generateBearerToken(filepath)` function takes the credentials file path for token generation, alternatively, you can also send the entire credentials as string, by using `generateBearerTokenFromCreds(credentials)`

[Example](https://github.com/skyflowapi/skyflow-java/blob/main/samples/src/main/java/com/example/TokenGenerationExample.java
[Example](https://github.com/skyflowapi/skyflow-java/blob/v1/samples/src/main/java/com/example/TokenGenerationExample.java
):

```java
Expand Down Expand Up @@ -112,7 +112,7 @@ Context-Aware Authorization enables you to embed context values into a Bearer to

The service account generated with `context_id` identifier enabled can be used to generate bearer tokens with `context`, which is a `jwt` claim for a skyflow generated bearer token. The token generated from this service account will have a `context_identifier` claim and is valid for 60 minutes and can be used to make API calls to vault services as well as management API(s) based on the permissions of the service account.

[Example](https://github.com/skyflowapi/skyflow-java/blob/main/samples/src/main/java/com/example/BearerTokenWithContextGenerationExample.java):
[Example](https://github.com/skyflowapi/skyflow-java/blob/v1/samples/src/main/java/com/example/BearerTokenWithContextGenerationExample.java):

``` java
import com.skyflow.entities.ResponseToken;
Expand Down Expand Up @@ -157,13 +157,13 @@ public class BearerTokenWithContextGeneration {
Note:
- You can pass either a service account key credentials file path or a service account key credentials as string to the `setCredentials` method of the BearerTokenBuilder class.
- If you pass both a file path and string to the `setCredentials` method, the last method used takes precedence.
- To generate multiple bearer tokens using a thread, see this [example](https://github.com/skyflowapi/skyflow-java/blob/main/samples/src/main/java/com/example/BearerTokenGenerationUsingThreadsExample.java)
- To generate multiple bearer tokens using a thread, see this [example](https://github.com/skyflowapi/skyflow-java/blob/v1/samples/src/main/java/com/example/BearerTokenGenerationUsingThreadsExample.java)

## Service Account Scoped Bearer Token Generation

A service account that has multiple roles can generate bearer tokens with access restricted to a specific role by providing the appropriate `roleID`. Generated bearer tokens are valid for 60 minutes and can only perform operations with the permissions associated with the specified role.

[Example](https://github.com/skyflowapi/skyflow-java/blob/main/samples/src/main/java/com/example/ScopedTokenGenerationExample.java):
[Example](https://github.com/skyflowapi/skyflow-java/blob/v1/samples/src/main/java/com/example/ScopedTokenGenerationExample.java):

```java
import java.io.File;
Expand Down Expand Up @@ -197,7 +197,7 @@ Note:
Skyflow generates data tokens when sensitive data is inserted into the vault. These data tokens can be digitally signed with the private key of the service account credentials, which adds an additional layer of protection. Signed tokens can be detokenized by passing the signed data token and a bearer token generated from service account credentials. The service account must have appropriate permissions and context to detokenize the signed data tokens.


[Example](https://github.com/skyflowapi/skyflow-java/blob/main/samples/src/main/java/com/example/SignedTokenGenerationExample.java):
[Example](https://github.com/skyflowapi/skyflow-java/blob/v1/samples/src/main/java/com/example/SignedTokenGenerationExample.java):

``` java
import com.skyflow.errors.SkyflowException;
Expand Down Expand Up @@ -352,7 +352,7 @@ InsertOptions insertOptions = new InsertOptions(
);

```
An [example](https://github.com/skyflowapi/skyflow-java/blob/main/samples/src/main/java/com/example/InsertWithUpsertExample.java) of insert call with upsert support
An [example](https://github.com/skyflowapi/skyflow-java/blob/v1/samples/src/main/java/com/example/InsertWithUpsertExample.java) of insert call with upsert support
```java
JSONObject recordsJson = new JSONObject();
JSONArray recordsArrayJson = new JSONArray();
Expand Down Expand Up @@ -398,7 +398,7 @@ Sample insert Response
}
```

An [example](https://github.com/skyflowapi/skyflow-java/blob/main/samples/src/main/java/com/example/InsertWithContinueOnErrorExample.java) of Insert call with `continueOnError` support:
An [example](https://github.com/skyflowapi/skyflow-java/blob/v1/samples/src/main/java/com/example/InsertWithContinueOnErrorExample.java) of Insert call with `continueOnError` support:
```java
JSONObject records = new JSONObject();
JSONArray recordsArray = new JSONArray();
Expand Down Expand Up @@ -494,7 +494,7 @@ InsertBulkOptions insertOptions = new InsertBulkOptions(
upsertOptions
);
```
An [example]() of insert call with upsert support:
An [example](samples/src/main/java/com/example/InsertBulkWithUpsertExample.java) of insert call with upsert support:

```java
JSONObject recordsJson = new JSONObject();
Expand Down Expand Up @@ -541,7 +541,7 @@ Sample insert Response
}
```

An [example]() of Insert using bulk call:
An [example](samples/src/main/java/com/example/InsertBulkExample.java) of Insert using bulk call:
```java
JSONObject records = new JSONObject();
JSONArray recordsArray = new JSONArray();
Expand Down Expand Up @@ -622,7 +622,7 @@ recordsJson.put("records", recordsArrayJson);

Note: `redaction` defaults to [`RedactionType.PLAIN_TEXT`](#redaction-types).

The following [example](https://github.com/skyflowapi/skyflow-java/blob/main/samples/src/main/java/com/example/DetokenizeExample.java) code makes a detokenize call to reveal the masked value of a token:
The following [example](https://github.com/skyflowapi/skyflow-java/blob/v1/samples/src/main/java/com/example/DetokenizeExample.java) code makes a detokenize call to reveal the masked value of a token:

```java
JSONObject recordsJson = new JSONObject();
Expand Down Expand Up @@ -771,7 +771,7 @@ There are four accepted values for RedactionType:
* `DEFAULT`

### Examples
An [example](https://github.com/skyflowapi/skyflow-java/blob/main/samples/src/main/java/com/example/GetExample.java) call using Skyflow IDs with RedactionType.
An [example](https://github.com/skyflowapi/skyflow-java/blob/v1/samples/src/main/java/com/example/GetExample.java) call using Skyflow IDs with RedactionType.

```java
import com.skyflow.entities.RedactionType;
Expand Down Expand Up @@ -918,7 +918,7 @@ Sample response:
]
}
```
An [example](https://github.com/skyflowapi/skyflow-java/blob/main/samples/src/main/java/com/example/GetExample.java) call using column names and values.
An [example](https://github.com/skyflowapi/skyflow-java/blob/v1/samples/src/main/java/com/example/GetExample.java) call using column names and values.

```java
import com.skyflow.entities.RedactionType;
Expand Down Expand Up @@ -1025,7 +1025,7 @@ There are 4 accepted values in RedactionType:
- `REDACTED`
- `DEFAULT`

An [example](https://github.com/skyflowapi/skyflow-java/blob/main/samples/src/main/java/com/example/GetByIdExample.java) getById call
An [example](https://github.com/skyflowapi/skyflow-java/blob/v1/samples/src/main/java/com/example/GetByIdExample.java) getById call
```java
import com.skyflow.entities.RedactionType;

Expand Down Expand Up @@ -1118,7 +1118,7 @@ records.put("records", recordsArray);
UpdateOptions updateOptions = new UpdateOptions(true);
```

An [example](https://github.com/skyflowapi/skyflow-java/blob/main/samples/src/main/java/com/example/UpdateExample.java) of update call:
An [example](https://github.com/skyflowapi/skyflow-java/blob/v1/samples/src/main/java/com/example/UpdateExample.java) of update call:
```java
JSONObject records = new JSONObject();
JSONArray recordsArray = new JSONArray();
Expand Down Expand Up @@ -1255,7 +1255,7 @@ invokeConfig.put("requestBody", requestBodyJson);

**pathParams, queryParams, requestHeader, requestBody** are the JSON objects that will be sent through the connection integration url.

An [example](https://github.com/skyflowapi/skyflow-java/blob/main/samples/src/main/java/com/example/InvokeConnectionExample.java) of invokeConnection:
An [example](https://github.com/skyflowapi/skyflow-java/blob/v1/samples/src/main/java/com/example/InvokeConnectionExample.java) of invokeConnection:
```java
JSONObject invokeConfig = new JSONObject();
invokeConfig.put("connectionURL", "<your_connection_url>");
Expand Down Expand Up @@ -1305,7 +1305,7 @@ skyflowClient.query(queryInput);
```
See [Query your data](https://docs.skyflow.com/query-data/) and [Execute Query](https://docs.skyflow.com/record/#QueryService_ExecuteQuery) for guidelines and restrictions on supported SQL statements, operators, and keywords.

An [example](https://github.com/skyflowapi/skyflow-java/blob/main/samples/src/main/java/com/example/QueryExample.java) of query call:
An [example](https://github.com/skyflowapi/skyflow-java/blob/v1/samples/src/main/java/com/example/QueryExample.java) of query call:
```java
JSONObject queryInput = new JSONObject();
queryInput.put("query", "SELECT * FROM cards WHERE skyflow_id='3ea3861-x107-40w8-la98-106sp08ea83f'");
Expand Down
15 changes: 14 additions & 1 deletion docs/migrate_to_v2.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,19 @@ This guide covers the steps to migrate the Skyflow Java SDK from v1 to v2.

---

## Breaking Changes from V1 to V2

| Area | V1 | V2 |
|------|----|----|
| **Client initialization** | `TokenProvider` / `vaultURL` pattern | `Credentials` + `VaultConfig` passed to `Skyflow.builder()` |
| **Vault URL** | Single `vaultURL` string | Split into `vaultId` + `clusterId` |
| **Request/response types** | Raw JSON (`JSONObject`) | Typed objects (e.g. `InsertRequest` / `InsertResponse`) |
| **Error handling** | Basic error message | Restructured with `httpStatus`, `details`, and `requestId` |
| **Logging** | Global log level | Per-instance `logLevel` set via `Skyflow.builder().setLogLevel(LogLevel.INFO)` |
| **Import paths** | `com.skyflow.vault.*` | New module structure across all packages |

---

## Authentication options

In V2, multiple authentication options are available. You can now provide credentials in the following ways:
Expand Down Expand Up @@ -55,7 +68,7 @@ skyflowCredentials.setToken("<BEARER_TOKEN>");
> **Notes:**
> - Use only ONE authentication method per credentials object.
> - API Key or environment variable are recommended for production.
> - For priority order see [Quickstart — Initialize the client](../README.md#initialize-the-client).
> - For priority order see [Quickstart — Initialize the client](https://github.com/skyflowapi/skyflow-java/blob/main/README.md#initialize-the-client).

---

Expand Down
Loading