Skip to content

Commit 1df75f9

Browse files
SK-2646: Schemaless vault apis(delete and tokenize) support in v3 sdk. (#292)
* SK-2646: update fern generated code * SK-2646: add support for delete and tokenize schemaless api support in java v3 sdk
1 parent ae1a35b commit 1df75f9

76 files changed

Lines changed: 4436 additions & 1056 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

common/src/main/java/com/skyflow/errors/ErrorMessage.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,12 @@ public enum ErrorMessage {
9292
EmptyTokenInDetokenizeData("%s0 Validation error. Invalid data tokens. Specify a valid data token."),
9393
TokensSizeExceedError("%s0 Maximum number of tokens exceeded. The limit is 10000."),
9494

95+
// Delete Tokens
96+
DeleteTokensRequestNull("%s0 Validation error. DeleteTokensRequest object is null. Specify a valid DeleteTokensRequest object."),
97+
EmptyDeleteTokensData("%s0 Validation error. Tokens list is empty. Specify at least one token to delete."),
98+
EmptyTokenInDeleteTokensData("%s0 Validation error. Invalid token in delete tokens request. Specify a valid token."),
99+
DeleteTokensSizeExceedError("%s0 Maximum number of tokens exceeded. The limit is 10000."),
100+
95101
// Get
96102
IdsKeyError("%s0 Validation error. 'ids' key is missing from the payload. Specify an 'ids' key."),
97103
EmptyIds("%s0 Validation error. 'ids' can't be empty. Specify at least one id."),
@@ -128,6 +134,13 @@ public enum ErrorMessage {
128134
// Tokenize
129135
ColumnValuesKeyErrorTokenize("%s0 Validation error. 'columnValues' key is missing from the payload. Specify a 'columnValues' key."),
130136
EmptyColumnGroupInColumnValue("%s0 Validation error. Invalid column group in column value. Specify a valid column group."),
137+
TokenizeRequestNull("%s0 Validation error. TokenizeRequest object is null. Specify a valid TokenizeRequest object."),
138+
EmptyTokenizeData("%s0 Validation error. Tokenize data is empty. Specify at least one tokenize record."),
139+
TokenizeRecordNull("%s0 Validation error. TokenizeRecord in the list is null. Specify a valid TokenizeRecord object."),
140+
EmptyValueInTokenizeRecord("%s0 Validation error. Value in TokenizeRecord is null or empty. Specify a valid value."),
141+
EmptyTokenGroupNamesInTokenizeRecord("%s0 Validation error. TokenGroupNames in TokenizeRecord is null or empty. Specify at least one token group name."),
142+
EmptyTokenGroupNameInTokenizeRecord("%s0 Validation error. Token group name in TokenizeRecord is null or empty. Specify a valid token group name."),
143+
TokenizeDataSizeExceedError("%s0 Maximum number of tokenize records exceeded. The limit is 10000."),
131144

132145
// Connection
133146
InvalidRequestHeaders("%s0 Validation error. Request headers aren't valid. Specify valid request headers."),

common/src/main/java/com/skyflow/logs/ErrorLogs.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,18 @@ public enum ErrorLogs {
113113
COLUMN_VALUES_IS_REQUIRED_TOKENIZE("Invalid %s1 request. ColumnValues are required."),
114114
EMPTY_OR_NULL_COLUMN_GROUP_IN_COLUMN_VALUES("Invalid %s1 request. Column group can not be null or empty in column values at index %s2."),
115115
TOKENIZE_REQUEST_REJECTED("Tokenize request resulted in failure."),
116+
TOKENIZE_REQUEST_NULL("Invalid %s1 request. Tokenize request can not be null."),
117+
EMPTY_TOKENIZE_DATA("Invalid %s1 request. Tokenize data can not be empty."),
118+
TOKENIZE_RECORD_NULL("Invalid %s1 request. TokenizeRecord in list can not be null."),
119+
EMPTY_VALUE_IN_TOKENIZE_RECORD("Invalid %s1 request. Value in TokenizeRecord can not be null or empty."),
120+
EMPTY_TOKEN_GROUP_NAMES_IN_TOKENIZE_RECORD("Invalid %s1 request. TokenGroupNames in TokenizeRecord can not be null or empty."),
121+
EMPTY_TOKEN_GROUP_NAME_IN_TOKENIZE_RECORD("Invalid %s1 request. Token group name in TokenizeRecord can not be null or empty at index %s2."),
122+
TOKENIZE_DATA_SIZE_EXCEED("Maximum number of tokenize records exceeded. The limit is 10000."),
116123
DELETE_REQUEST_REJECTED("Delete request resulted in failure."),
124+
DELETE_TOKENS_REQUEST_NULL("Invalid %s1 request. DeleteTokens request can not be null."),
125+
EMPTY_DELETE_TOKENS_DATA("Invalid %s1 request. Delete tokens data can not be empty."),
126+
EMPTY_OR_NULL_TOKEN_IN_DELETE_TOKENS_DATA("Invalid %s1 request. Token can not be null or empty in delete tokens data at index %s2."),
127+
DELETE_TOKENS_SIZE_EXCEED("Maximum number of tokens exceeded. The limit is 10000."),
117128

118129
// invoke connection interface
119130
INVOKE_CONNECTION_INVALID_CONNECTION_URL("Invalid %s1 request. Connection URL is not a valid URL."),

common/src/main/java/com/skyflow/logs/InfoLogs.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,12 @@ public enum InfoLogs {
5858
DELETE_REQUEST_RESOLVED("Delete request resolved."),
5959
DELETE_SUCCESS("Data deleted."),
6060

61+
// Delete Tokens interface
62+
DELETE_TOKENS_TRIGGERED("DeleteTokens method triggered."),
63+
VALIDATE_DELETE_TOKENS_REQUEST("Validating delete tokens request."),
64+
DELETE_TOKENS_REQUEST_RESOLVED("DeleteTokens request resolved."),
65+
DELETE_TOKENS_SUCCESS("Tokens deleted."),
66+
6167
// Query interface
6268
QUERY_TRIGGERED("Query method triggered."),
6369
VALIDATING_QUERY_REQUEST("Validating query request."),

v3/src/main/java/com/skyflow/VaultClient.java

Lines changed: 53 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
import com.skyflow.errors.SkyflowException;
99
import com.skyflow.generated.rest.ApiClient;
1010
import com.skyflow.generated.rest.ApiClientBuilder;
11-
import com.skyflow.generated.rest.resources.recordservice.RecordserviceClient;
12-
import com.skyflow.generated.rest.resources.recordservice.requests.InsertRequest;
13-
import com.skyflow.generated.rest.types.EnumUpdateType;
14-
import com.skyflow.generated.rest.types.InsertRecordData;
15-
import com.skyflow.generated.rest.types.Upsert;
11+
import com.skyflow.generated.rest.resources.flowservice.FlowserviceClient;
12+
import com.skyflow.generated.rest.resources.flowservice.requests.V1InsertRequest;
13+
import com.skyflow.generated.rest.types.FlowEnumUpdateType;
14+
import com.skyflow.generated.rest.types.V1InsertRecordData;
15+
import com.skyflow.generated.rest.types.V1Upsert;
1616
import com.skyflow.logs.InfoLogs;
1717
import com.skyflow.serviceaccount.util.Token;
1818
import com.skyflow.utils.Constants;
@@ -21,6 +21,9 @@
2121
import com.skyflow.utils.validations.Validations;
2222
import com.skyflow.vault.data.DetokenizeRequest;
2323
import com.skyflow.vault.data.InsertRecord;
24+
import com.skyflow.vault.data.DeleteTokensRequest;
25+
import com.skyflow.vault.data.TokenizeRequest;
26+
import com.skyflow.vault.data.TokenizeRecord;
2427
import io.github.cdimascio.dotenv.Dotenv;
2528
import io.github.cdimascio.dotenv.DotenvException;
2629
import okhttp3.OkHttpClient;
@@ -48,8 +51,8 @@ protected VaultClient(VaultConfig vaultConfig, Credentials credentials) throws S
4851
updateVaultURL();
4952
}
5053

51-
protected RecordserviceClient getRecordsApi() {
52-
return this.apiClient.recordservice();
54+
protected FlowserviceClient getRecordsApi() {
55+
return this.apiClient.flowservice();
5356
}
5457

5558
protected VaultConfig getVaultConfig() {
@@ -141,34 +144,34 @@ protected void updateExecutorInHTTP() {
141144
apiClientBuilder.httpClient(httpClient);
142145
}
143146

144-
protected InsertRequest getBulkInsertRequestBody(com.skyflow.vault.data.InsertRequest request, VaultConfig config) {
147+
protected V1InsertRequest getBulkInsertRequestBody(com.skyflow.vault.data.InsertRequest request, VaultConfig config) {
145148
ArrayList<InsertRecord> records = request.getRecords();
146-
List<InsertRecordData> insertRecordDataList = new ArrayList<>();
149+
List<V1InsertRecordData> insertRecordDataList = new ArrayList<>();
147150
for (InsertRecord record : records) {
148-
InsertRecordData.Builder data = InsertRecordData.builder();
151+
V1InsertRecordData.Builder data = V1InsertRecordData.builder();
149152
data.data(record.getData());
150153
if (record.getTable() != null && !record.getTable().isEmpty()) {
151154
data.tableName(record.getTable());
152155
}
153156
if (record.getUpsert() != null && !record.getUpsert().isEmpty()) {
154157
if (record.getUpsertType() != null) {
155-
EnumUpdateType updateType = null;
158+
FlowEnumUpdateType updateType = null;
156159
if (record.getUpsertType() == UpsertType.REPLACE) {
157-
updateType = EnumUpdateType.REPLACE;
160+
updateType = FlowEnumUpdateType.REPLACE;
158161
} else if (record.getUpsertType() == UpsertType.UPDATE) {
159-
updateType = EnumUpdateType.UPDATE;
162+
updateType = FlowEnumUpdateType.UPDATE;
160163
}
161-
Upsert upsert = Upsert.builder().uniqueColumns(record.getUpsert()).updateType(updateType).build();
164+
V1Upsert upsert = V1Upsert.builder().uniqueColumns(record.getUpsert()).updateType(updateType).build();
162165
data.upsert(upsert);
163166
} else {
164-
Upsert upsert = Upsert.builder().uniqueColumns(record.getUpsert()).build();
167+
V1Upsert upsert = V1Upsert.builder().uniqueColumns(record.getUpsert()).build();
165168
data.upsert(upsert);
166169
}
167170
}
168171
insertRecordDataList.add(data.build());
169172
}
170173

171-
InsertRequest.Builder builder = InsertRequest.builder()
174+
V1InsertRequest.Builder builder = V1InsertRequest.builder()
172175
.vaultId(config.getVaultId())
173176
.records(insertRecordDataList);
174177

@@ -178,34 +181,34 @@ protected InsertRequest getBulkInsertRequestBody(com.skyflow.vault.data.InsertRe
178181

179182
if (request.getUpsert() != null && !request.getUpsert().isEmpty()) {
180183
if (request.getUpsertType() != null) {
181-
EnumUpdateType updateType = null;
184+
FlowEnumUpdateType updateType = null;
182185
if (request.getUpsertType() == UpsertType.REPLACE) {
183-
updateType = EnumUpdateType.REPLACE;
186+
updateType = FlowEnumUpdateType.REPLACE;
184187
} else if (request.getUpsertType() == UpsertType.UPDATE) {
185-
updateType = EnumUpdateType.UPDATE;
188+
updateType = FlowEnumUpdateType.UPDATE;
186189
}
187-
Upsert upsert = Upsert.builder().uniqueColumns(request.getUpsert()).updateType(updateType).build();
190+
V1Upsert upsert = V1Upsert.builder().uniqueColumns(request.getUpsert()).updateType(updateType).build();
188191
builder.upsert(upsert);
189192
} else {
190-
Upsert upsert = Upsert.builder().uniqueColumns(request.getUpsert()).build();
193+
V1Upsert upsert = V1Upsert.builder().uniqueColumns(request.getUpsert()).build();
191194
builder.upsert(upsert);
192195
}
193196
}
194197
return builder.build();
195198

196199
}
197200

198-
protected com.skyflow.generated.rest.resources.recordservice.requests.DetokenizeRequest getDetokenizeRequestBody(DetokenizeRequest request) {
201+
protected com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDetokenizeRequest getDetokenizeRequestBody(DetokenizeRequest request) {
199202
List<String> tokens = request.getTokens();
200-
com.skyflow.generated.rest.resources.recordservice.requests.DetokenizeRequest.Builder builder =
201-
com.skyflow.generated.rest.resources.recordservice.requests.DetokenizeRequest.builder()
203+
com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDetokenizeRequest.Builder builder =
204+
com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDetokenizeRequest.builder()
202205
.vaultId(this.vaultConfig.getVaultId())
203206
.tokens(tokens);
204207
if (request.getTokenGroupRedactions() != null) {
205-
List<com.skyflow.generated.rest.types.TokenGroupRedactions> tokenGroupRedactionsList = new ArrayList<>();
208+
List<com.skyflow.generated.rest.types.V1TokenGroupRedactions> tokenGroupRedactionsList = new ArrayList<>();
206209
for (com.skyflow.vault.data.TokenGroupRedactions tokenGroupRedactions : request.getTokenGroupRedactions()) {
207-
com.skyflow.generated.rest.types.TokenGroupRedactions redactions =
208-
com.skyflow.generated.rest.types.TokenGroupRedactions.builder()
210+
com.skyflow.generated.rest.types.V1TokenGroupRedactions redactions =
211+
com.skyflow.generated.rest.types.V1TokenGroupRedactions.builder()
209212
.tokenGroupName(tokenGroupRedactions.getTokenGroupName())
210213
.redaction(tokenGroupRedactions.getRedaction())
211214
.build();
@@ -216,4 +219,27 @@ protected com.skyflow.generated.rest.resources.recordservice.requests.Detokenize
216219
}
217220
return builder.build();
218221
}
222+
223+
protected com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDeleteTokenRequest getDeleteTokensRequestBody(DeleteTokensRequest request) {
224+
return com.skyflow.generated.rest.resources.flowservice.requests.V1FlowDeleteTokenRequest.builder()
225+
.vaultId(this.vaultConfig.getVaultId())
226+
.tokens(request.getTokens())
227+
.build();
228+
}
229+
230+
protected com.skyflow.generated.rest.resources.flowservice.requests.V1FlowTokenizeRequest getTokenizeRequestBody(TokenizeRequest request) {
231+
List<com.skyflow.generated.rest.types.V1FlowTokenizeRequestObject> dataList = new ArrayList<>();
232+
for (TokenizeRecord record : request.getData()) {
233+
com.skyflow.generated.rest.types.V1FlowTokenizeRequestObject obj =
234+
com.skyflow.generated.rest.types.V1FlowTokenizeRequestObject.builder()
235+
.value(record.getValue())
236+
.tokenGroupNames(record.getTokenGroupNames())
237+
.build();
238+
dataList.add(obj);
239+
}
240+
return com.skyflow.generated.rest.resources.flowservice.requests.V1FlowTokenizeRequest.builder()
241+
.vaultId(this.vaultConfig.getVaultId())
242+
.data(dataList)
243+
.build();
244+
}
219245
}

v3/src/main/java/com/skyflow/generated/rest/ApiClient.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,29 +5,29 @@
55

66
import com.skyflow.generated.rest.core.ClientOptions;
77
import com.skyflow.generated.rest.core.Suppliers;
8+
import com.skyflow.generated.rest.resources.flowservice.FlowserviceClient;
89
import com.skyflow.generated.rest.resources.records.RecordsClient;
9-
import com.skyflow.generated.rest.resources.recordservice.RecordserviceClient;
1010
import java.util.function.Supplier;
1111

1212
public class ApiClient {
1313
protected final ClientOptions clientOptions;
1414

1515
protected final Supplier<RecordsClient> recordsClient;
1616

17-
protected final Supplier<RecordserviceClient> recordserviceClient;
17+
protected final Supplier<FlowserviceClient> flowserviceClient;
1818

1919
public ApiClient(ClientOptions clientOptions) {
2020
this.clientOptions = clientOptions;
2121
this.recordsClient = Suppliers.memoize(() -> new RecordsClient(clientOptions));
22-
this.recordserviceClient = Suppliers.memoize(() -> new RecordserviceClient(clientOptions));
22+
this.flowserviceClient = Suppliers.memoize(() -> new FlowserviceClient(clientOptions));
2323
}
2424

2525
public RecordsClient records() {
2626
return this.recordsClient.get();
2727
}
2828

29-
public RecordserviceClient recordservice() {
30-
return this.recordserviceClient.get();
29+
public FlowserviceClient flowservice() {
30+
return this.flowserviceClient.get();
3131
}
3232

3333
public static ApiClientBuilder builder() {

v3/src/main/java/com/skyflow/generated/rest/AsyncApiClient.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,29 +5,29 @@
55

66
import com.skyflow.generated.rest.core.ClientOptions;
77
import com.skyflow.generated.rest.core.Suppliers;
8+
import com.skyflow.generated.rest.resources.flowservice.AsyncFlowserviceClient;
89
import com.skyflow.generated.rest.resources.records.AsyncRecordsClient;
9-
import com.skyflow.generated.rest.resources.recordservice.AsyncRecordserviceClient;
1010
import java.util.function.Supplier;
1111

1212
public class AsyncApiClient {
1313
protected final ClientOptions clientOptions;
1414

1515
protected final Supplier<AsyncRecordsClient> recordsClient;
1616

17-
protected final Supplier<AsyncRecordserviceClient> recordserviceClient;
17+
protected final Supplier<AsyncFlowserviceClient> flowserviceClient;
1818

1919
public AsyncApiClient(ClientOptions clientOptions) {
2020
this.clientOptions = clientOptions;
2121
this.recordsClient = Suppliers.memoize(() -> new AsyncRecordsClient(clientOptions));
22-
this.recordserviceClient = Suppliers.memoize(() -> new AsyncRecordserviceClient(clientOptions));
22+
this.flowserviceClient = Suppliers.memoize(() -> new AsyncFlowserviceClient(clientOptions));
2323
}
2424

2525
public AsyncRecordsClient records() {
2626
return this.recordsClient.get();
2727
}
2828

29-
public AsyncRecordserviceClient recordservice() {
30-
return this.recordserviceClient.get();
29+
public AsyncFlowserviceClient flowservice() {
30+
return this.flowserviceClient.get();
3131
}
3232

3333
public static AsyncApiClientBuilder builder() {

v3/src/main/java/com/skyflow/generated/rest/core/ClientOptions.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ private ClientOptions(
3434
{
3535
put("X-Fern-Language", "JAVA");
3636
put("X-Fern-SDK-Name", "com.skyflow.fern:api-sdk");
37-
put("X-Fern-SDK-Version", "0.0.352");
37+
put("X-Fern-SDK-Version", "0.0.98");
3838
}
3939
});
4040
this.headerSuppliers = headerSuppliers;

0 commit comments

Comments
 (0)