Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
1 change: 1 addition & 0 deletions .cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@
"unrecognised",
"nocreds",
"nodir",
"noextension",
"detok",
"ngrok",
"obac",
Expand Down
46 changes: 15 additions & 31 deletions flowvault/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -562,34 +562,20 @@ Sample response:
{
"summary": { "totalTokens": 2, "totalTokenized": 1, "totalPartial": 0, "totalFailed": 1 },
"records": [
{
"index": 0,
"value": "4111111111111111",
"tokens": [
{ "tokenGroupName": "card_number_cg", "token": "5479-4229-4622-1393", "httpCode": 200, "error": null, "requestId": null }
]
},
{
"index": 1,
"value": "john.doe@example.com",
"tokens": [
{ "tokenGroupName": "email_cg", "token": null, "httpCode": 400, "error": "Token group email_cg not found.", "requestId": "a1b2c3d4-..." }
]
}
{ "index": 0, "value": "4111111111111111", "tokenGroupName": "card_number_cg", "token": "5479-4229-4622-1393", "httpCode": 200, "error": null, "requestId": null },
{ "index": 1, "value": "john.doe@example.com", "tokenGroupName": "email_cg", "token": null, "httpCode": 400, "error": "Token group email_cg not found.", "requestId": "a1b2c3d4-..." }
]
}
```

Tokenize reports at **two** levels: one entry per input value in `records`, and inside each of those, one entry per requested token group in `tokens`. Because a single value can map to several token groups, the summary distinguishes fully tokenized values (`totalTokenized`), partially tokenized values where some groups succeeded and others failed (`totalPartial`), and fully failed values (`totalFailed`). The three always add up to `totalTokens`, which counts input values, not tokens produced.
`records` is flat: one entry per (value, token group) outcome, matching the API's own response shape. Because a single value can map to several token groups, several entries can share the same `index` — that's how the SDK tells you which input value an entry belongs to. The summary classifies by index rather than by entry: fully tokenized values (`totalTokenized`), partially tokenized values where some groups succeeded and others failed (`totalPartial`), and fully failed values (`totalFailed`). The three always add up to `totalTokens`, which counts input values, not entries.

```java
for (BulkTokenizeResponseRecord record : tokenizeResponse.getRecords()) {
for (TokenizeResponseToken token : record.getTokens()) {
if (token.getError() == null) {
System.out.println(record.getValue() + " -> " + token.getTokenGroupName() + " = " + token.getToken());
} else {
System.out.println(record.getValue() + " -> " + token.getTokenGroupName() + " failed: " + token.getError());
}
if (record.getError() == null) {
System.out.println(record.getValue() + " -> " + record.getTokenGroupName() + " = " + record.getToken());
} else {
System.out.println(record.getValue() + " -> " + record.getTokenGroupName() + " failed: " + record.getError());
}
}
```
Expand Down Expand Up @@ -805,7 +791,7 @@ Every bulk response exposes `getSummary()` and `getRecords()`. The records list
| `getError()` | failures only | Error message for this item. `null` means this item succeeded. |
| `getRequestId()` | failures only | The `x-request-id` of the batch this item was in — quote it in support escalations. Items from the same batch share one id. |

The success payload sits alongside those fields on the same object: `getSkyflowId()`/`getTokens()`/`getData()` for insert (`getFields()` is deprecated — it returns the same data in its original, pre-typed `Map<String, Object>` shape, not `getTokens()`'s `Token` objects), `getValue()`/`getTokenGroupName()`/`getMetadata()` for detokenize, `getTokens()` for tokenize, `getToken()` for delete.
The success payload sits alongside those fields on the same object: `getSkyflowId()`/`getTokens()`/`getData()` for insert (`getFields()` is deprecated — it returns the same data in its original, pre-typed `Map<String, Object>` shape, not `getTokens()`'s `Token` objects), `getValue()`/`getTokenGroupName()`/`getMetadata()` for detokenize, `getValue()`/`getTokenGroupName()`/`getToken()` for tokenize, `getToken()` for delete.

Summaries per operation:

Expand Down Expand Up @@ -835,18 +821,16 @@ for (BulkInsertResponseRecord record : response.getRecords()) {
}
```

For tokenize, the check is one level deeper, because a single value can partially succeed:
Tokenize reports one entry per (value, token group) outcome, so a single value can partially succeed — several entries share its `index`:

```java
for (BulkTokenizeResponseRecord record : tokenizeResponse.getRecords()) {
for (TokenizeResponseToken token : record.getTokens()) {
if (token.getError() == null) {
System.out.println(record.getIndex() + "/" + token.getTokenGroupName()
+ " -> " + token.getToken());
} else {
System.err.println(record.getIndex() + "/" + token.getTokenGroupName()
+ " failed [" + token.getHttpCode() + "] " + token.getError());
}
if (record.getError() == null) {
System.out.println(record.getIndex() + "/" + record.getTokenGroupName()
+ " -> " + record.getToken());
} else {
System.err.println(record.getIndex() + "/" + record.getTokenGroupName()
+ " failed [" + record.getHttpCode() + "] " + record.getError());
}
}
```
Expand Down
Binary file modified flowvault/api-report/skyflow-flowvault-java.baseline.jar
Binary file not shown.
1 change: 1 addition & 0 deletions flowvault/pom.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- trigger: re-run internal-release workflow (previous push had paths-ignore/[AUTOMATED]-substring false-skips) -->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import com.skyflow.vault.data.BulkTokenizeRequestRecord;
import com.skyflow.vault.data.BulkTokenizeResponse;
import com.skyflow.vault.data.BulkTokenizeResponseRecord;
import com.skyflow.vault.data.TokenizeResponseToken;

import java.util.ArrayList;
import java.util.List;
Expand Down Expand Up @@ -83,15 +82,13 @@ public static void main(String[] args) {
// Each value reports one entry per token group, so a value can partially succeed.
// requestId identifies the API call an error came from and is set on failures only.
for (BulkTokenizeResponseRecord record : response.getRecords()) {
for (TokenizeResponseToken token : record.getTokens()) {
if (token.getError() == null) {
System.out.printf("[%d] group '%s' -> %s%n",
record.getIndex(), token.getTokenGroupName(), token.getToken());
} else {
System.out.printf("[%d] group '%s' failed (%d): %s [requestId=%s]%n",
record.getIndex(), token.getTokenGroupName(),
token.getHttpCode(), token.getError(), token.getRequestId());
}
if (record.getError() == null) {
System.out.printf("[%d] group '%s' -> %s%n",
record.getIndex(), record.getTokenGroupName(), record.getToken());
} else {
System.out.printf("[%d] group '%s' failed (%d): %s [requestId=%s]%n",
record.getIndex(), record.getTokenGroupName(),
record.getHttpCode(), record.getError(), record.getRequestId());
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import com.skyflow.vault.data.BulkTokenizeRequestRecord;
import com.skyflow.vault.data.BulkTokenizeResponse;
import com.skyflow.vault.data.BulkTokenizeResponseRecord;
import com.skyflow.vault.data.TokenizeResponseToken;

import java.util.ArrayList;
import java.util.List;
Expand Down Expand Up @@ -87,15 +86,13 @@ public static void main(String[] args) {
// partially succeed: some groups return a token while others return an error. requestId
// identifies the API call an error came from and is set on failures only.
for (BulkTokenizeResponseRecord record : tokenizeResponse.getRecords()) {
for (TokenizeResponseToken token : record.getTokens()) {
if (token.getError() == null) {
System.out.printf("[%d] group '%s' -> %s%n",
record.getIndex(), token.getTokenGroupName(), token.getToken());
} else {
System.out.printf("[%d] group '%s' failed (%d): %s [requestId=%s]%n",
record.getIndex(), token.getTokenGroupName(),
token.getHttpCode(), token.getError(), token.getRequestId());
}
if (record.getError() == null) {
System.out.printf("[%d] group '%s' -> %s%n",
record.getIndex(), record.getTokenGroupName(), record.getToken());
} else {
System.out.printf("[%d] group '%s' failed (%d): %s [requestId=%s]%n",
record.getIndex(), record.getTokenGroupName(),
record.getHttpCode(), record.getError(), record.getRequestId());
}
}

Expand Down

This file was deleted.

Loading
Loading