Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
602318e
SK-3175 detect v2 support in flowvault
skyflow-bharti Oct 6, 2026
1fa3589
SK-3175 detect v2 add tests
skyflow-bharti Oct 8, 2026
1377c1f
SK-3175 fix ci check
skyflow-bharti Oct 8, 2026
495a6dc
SK-3175 fix ci check
skyflow-bharti Oct 8, 2026
5aa7241
Merge pull request #436 from skyflowapi/SK-3175-Detect-in-flow-vault
skyflow-bharti Oct 8, 2026
932676d
[AUTOMATED] Private Release 1.2.0-dev-5aa7241b
skyflow-bharti Oct 8, 2026
6a30341
SK-3175 try internal release
skyflow-bharti Oct 14, 2026
16de996
[AUTOMATED] Private Release 1.2.0-dev-6a303413
skyflow-bharti Oct 14, 2026
9517507
SK-3175 try internal release
skyflow-bharti Oct 15, 2026
6f25cc1
[AUTOMATED] Private Release 1.2.0-dev-95175076
skyflow-bharti Oct 15, 2026
b71f6e0
SK-3175 try internal release
skyflow-bharti Oct 15, 2026
47375d9
[AUTOMATED] Private Release 1.2.0-dev-b71f6e0b
skyflow-bharti Oct 15, 2026
ee51b1d
SK-3175 try internal release
skyflow-bharti Oct 15, 2026
af38a32
[AUTOMATED] Private Release 1.2.0-dev-ee51b1dc
skyflow-bharti Oct 15, 2026
04fe977
SK-3175 add v2 detect for skyvault also
skyflow-bharti Oct 22, 2026
b1f2d60
SK-3175 fix ci check
skyflow-bharti Oct 22, 2026
92b5b16
SK-3175 updated skyvault generated code
skyflow-bharti Oct 22, 2026
91085f1
SK-3175 updated skyvault generated code
skyflow-bharti Oct 22, 2026
225f34e
Merge pull request #442 from skyflowapi/SK-3175-Detect-in-flow-vault
skyflow-bharti Oct 22, 2026
41fd307
[AUTOMATED] Private Release 1.2.0-dev-225f34ec
skyflow-bharti Oct 22, 2026
54fdaff
SK-3175 fix sdk response parsing issue
skyflow-bharti Oct 26, 2026
d5fceff
[AUTOMATED] Private Release 1.2.0-dev-54fdaffe
skyflow-bharti Oct 26, 2026
3657b62
SK-3175 fix spellcheck
skyflow-bharti Oct 26, 2026
a03e441
[AUTOMATED] Private Release 1.2.0-dev-3657b62d
skyflow-bharti Oct 26, 2026
14ede71
SK-3175 fix validation
skyflow-bharti Oct 26, 2026
8ed78e5
[AUTOMATED] Private Release 1.2.0-dev-14ede71e
skyflow-bharti Oct 26, 2026
68d5268
SK-3175 fix validation
skyflow-bharti Oct 26, 2026
7245658
[AUTOMATED] Private Release 1.2.0-dev-68d5268c
skyflow-bharti Oct 26, 2026
3ccd5af
SK-3175 update README and samples
skyflow-bharti Oct 27, 2026
6930901
[AUTOMATED] Private Release 1.2.0-dev-3ccd5af4
skyflow-bharti Oct 27, 2026
52ba1c8
SK-3175 update README
skyflow-bharti Oct 27, 2026
1d367f7
[AUTOMATED] Private Release 1.2.0-dev-52ba1c80
skyflow-bharti Oct 27, 2026
d414036
SK-3175 update autogenerated code
skyflow-bharti Oct 27, 2026
4061178
[AUTOMATED] Private Release 1.2.0-dev-d4140366
skyflow-bharti Oct 27, 2026
7bfc279
SK-3175 update autogenerated code
skyflow-bharti Oct 27, 2026
2726282
[AUTOMATED] Private Release 1.2.0-dev-7bfc279c
skyflow-bharti Oct 27, 2026
171c790
SK-3175 update enum name for data source type
skyflow-bharti Oct 30, 2026
5481413
[AUTOMATED] Private Release 1.2.0-dev-171c7908
skyflow-bharti Oct 30, 2026
74ba33f
Merge branch 'main' into flowvault-release/26.10.1
skyflow-bharti Oct 30, 2026
585337e
[AUTOMATED] Private Release 1.3.0-dev-74ba33fa
skyflow-bharti Oct 30, 2026
4cc5c0f
SK-3175 update enum name for data source type
skyflow-bharti Nov 2, 2026
d64bd0b
[AUTOMATED] Private Release 1.3.0-dev-4cc5c0fd
skyflow-bharti Nov 2, 2026
1b7228d
SK-3175 update options according to sdks
skyflow-bharti Nov 3, 2026
92a87cd
[AUTOMATED] Private Release 1.3.0-dev-1b7228dd
skyflow-bharti Nov 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ The root `pom.xml` (`packaging=pom`) aggregates this Maven reactor:
## Documentation

- [skyvault API Reference](docs/api_reference.md) — full list of request builder methods, response getters, enums, and service-account utilities
- [Detect API Reference](docs/api_reference.md#detect-api) — request, response, configuration and enum classes for Detect, shared by both SDKs
- [Migrate from v1 to v2](docs/migrate_to_v2.md)

## Reporting a Vulnerability
Expand Down
9 changes: 9 additions & 0 deletions common/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,13 @@
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>mockwebserver</artifactId>
<version>${okhttp-version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
10 changes: 5 additions & 5 deletions common/src/main/java/com/skyflow/BaseSkyflow.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import com.skyflow.config.Credentials;
import com.skyflow.enums.LogLevel;
import com.skyflow.errors.ErrorCode;
import com.skyflow.errors.ErrorMessage;
import com.skyflow.errors.BaseErrorMessage;
import com.skyflow.errors.SkyflowException;
import com.skyflow.logs.ErrorLogs;
import com.skyflow.logs.InfoLogs;
Expand Down Expand Up @@ -66,7 +66,7 @@ public LogLevel getLogLevel() {
}

protected static <T> T resolveOrThrow(Map<String, T> map, String key,
ErrorLogs errorLog, ErrorMessage errorMessage) throws SkyflowException {
ErrorLogs errorLog, BaseErrorMessage errorMessage) throws SkyflowException {
T value = key != null ? map.get(key) : map.values().stream().findFirst().orElse(null);
if (value == null) {
// The log line carries a %s1 placeholder for the id. Callers that resolve the single
Expand Down Expand Up @@ -125,7 +125,7 @@ protected final void addVaultConfigTemplate(V vaultConfig) throws SkyflowExcepti
ErrorLogs.VAULT_CONFIG_EXISTS.getLog(), vaultId
));
throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(),
ErrorMessage.VaultIdAlreadyInConfigList.getMessage());
BaseErrorMessage.VaultIdAlreadyInConfigList.getMessage());
}
onVaultConfigAdded(vaultConfigCopy);
this.vaultConfigMap.put(vaultId, vaultConfigCopy);
Expand All @@ -139,7 +139,7 @@ protected final void updateVaultConfigTemplate(V vaultConfig) throws SkyflowExce
LogUtil.printErrorLog(BaseUtils.parameterizedString(
ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST.getLog(), vaultId
));
throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.VaultIdNotInConfigList.getMessage());
throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), BaseErrorMessage.VaultIdNotInConfigList.getMessage());
}
V previousConfig = this.vaultConfigMap.get(vaultId);
V merged = mergeVaultConfig(vaultConfig, cloneVaultConfig(previousConfig));
Expand All @@ -150,7 +150,7 @@ protected final void updateVaultConfigTemplate(V vaultConfig) throws SkyflowExce
protected final void removeVaultConfigTemplate(String vaultId) throws SkyflowException {
if (!hasVaultClient(vaultId)) {
LogUtil.printErrorLog(BaseUtils.parameterizedString(ErrorLogs.VAULT_CONFIG_DOES_NOT_EXIST.getLog(), vaultId));
throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.VaultIdNotInConfigList.getMessage());
throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), BaseErrorMessage.VaultIdNotInConfigList.getMessage());
}
onVaultConfigRemoved(vaultId);
this.vaultConfigMap.remove(vaultId);
Expand Down
34 changes: 27 additions & 7 deletions common/src/main/java/com/skyflow/BaseVaultClient.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package com.skyflow;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.skyflow.config.BaseCredentials;
import com.skyflow.config.BaseVaultConfig;
import com.skyflow.errors.ErrorCode;
import com.skyflow.errors.ErrorMessage;
import com.skyflow.errors.BaseErrorMessage;
import com.skyflow.errors.SkyflowException;
import com.skyflow.generated.common.rest.core.ObjectMappers;
import com.skyflow.logs.ErrorLogs;
import com.skyflow.logs.InfoLogs;
import com.skyflow.logs.WarningLogs;
Expand All @@ -29,7 +29,7 @@
import java.util.concurrent.TimeUnit;
import java.util.function.Supplier;

class BaseVaultClient<V extends BaseVaultConfig> {
public class BaseVaultClient<V extends BaseVaultConfig> {
protected V vaultConfig;
protected OkHttpClient sharedHttpClient;
protected String currentVaultURL;
Expand Down Expand Up @@ -182,7 +182,7 @@ protected synchronized void prioritiseCredentials(BaseCredentials vaultSpecificC
sysCredentials = dotenv.get(BaseConstants.ENV_CREDENTIALS_KEY_NAME);
}
if (sysCredentials == null) {
throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyCredentials.getMessage());
throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), BaseErrorMessage.EmptyCredentials.getMessage());
} else {
this.finalCredentials = new BaseCredentials();
this.finalCredentials.setCredentialsString(sysCredentials);
Expand All @@ -194,7 +194,7 @@ protected synchronized void prioritiseCredentials(BaseCredentials vaultSpecificC
refreshFailedFor = null;
}
} catch (DotenvException e) {
throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), ErrorMessage.EmptyCredentials.getMessage());
throw new SkyflowException(ErrorCode.INVALID_INPUT.getCode(), BaseErrorMessage.EmptyCredentials.getMessage());
} catch (SkyflowException e) {
throw e;
} catch (Exception e) {
Expand Down Expand Up @@ -222,7 +222,27 @@ protected static SkyflowException wrapApiException(int statusCode, Throwable cau
Map<String, List<String>> headers,
Object responseBody, ErrorLogs errorLog) {
LogUtil.printErrorLog(errorLog.getLog());
Gson gson = new GsonBuilder().serializeNulls().create();
return new SkyflowException(statusCode, cause, headers, gson.toJson(responseBody));
return new SkyflowException(statusCode, cause, headers, errorBodyAsJson(responseBody));
}

/**
* Serializes an API error body back to the JSON the server sent. The generated clients hand us either a
* plain {@code Map} or a typed {@code ErrorResponse}; the typed form carries Jackson annotations for the wire
* names ({@code grpc_code}, {@code http_status}) and {@code Optional} fields, so Jackson must do the
* serialization. Gson would emit the Java field names, which {@link SkyflowException} cannot parse, and
* fails outright on {@code Optional} under JDK 17+.
*/
static String errorBodyAsJson(Object responseBody) {
if (responseBody == null) {
return null;
}
if (responseBody instanceof String) {
return (String) responseBody;
}
try {
return ObjectMappers.JSON_MAPPER.writeValueAsString(responseBody);
} catch (Exception e) {
return new GsonBuilder().serializeNulls().create().toJson(responseBody);
}
}
}
93 changes: 93 additions & 0 deletions common/src/main/java/com/skyflow/detect/Audio.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
package com.skyflow.detect;

/**
* Audio processing options.
*/
public final class Audio {
private final Boolean outputProcessedAudio;
private final OutputTranscriptionType outputTranscription;
private final Bleep bleep;

private Audio(AudioBuilder builder) {
this.outputProcessedAudio = builder.outputProcessedAudio;
this.outputTranscription = builder.outputTranscription;
this.bleep = builder.bleep;
}

/**
* @return a new builder
*/
public static AudioBuilder builder() {
return new AudioBuilder();
}

/**
* @return Whether to return the processed audio file.
*/
public Boolean getOutputProcessedAudio() {
return outputProcessedAudio;
}

/**
* @return Transcription output to produce.
*/
public OutputTranscriptionType getOutputTranscription() {
return outputTranscription;
}

/**
* @return Bleep configuration.
*/
public Bleep getBleep() {
return bleep;
}

@Override
public String toString() {
return "Audio{" +
"outputProcessedAudio=" + outputProcessedAudio +
", outputTranscription=" + outputTranscription +
", bleep=" + bleep +
'}';
}

public static final class AudioBuilder {
private Boolean outputProcessedAudio;
private OutputTranscriptionType outputTranscription;
private Bleep bleep;

private AudioBuilder() {
}

/**
* @param outputProcessedAudio Whether to return the processed audio file.
* @return this builder
*/
public AudioBuilder outputProcessedAudio(Boolean outputProcessedAudio) {
this.outputProcessedAudio = outputProcessedAudio;
return this;
}

/**
* @param outputTranscription Transcription output to produce.
* @return this builder
*/
public AudioBuilder outputTranscription(OutputTranscriptionType outputTranscription) {
this.outputTranscription = outputTranscription;
return this;
}

/**
* @param bleep Bleep configuration.
* @return this builder
*/
public AudioBuilder bleep(Bleep bleep) {
this.bleep = bleep;
return this;
}

public Audio build() {
return new Audio(this);
}
}
}
113 changes: 113 additions & 0 deletions common/src/main/java/com/skyflow/detect/Bleep.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
package com.skyflow.detect;

/**
* Bleep tone applied over detected speech in audio.
*/
public final class Bleep {
private final Float startPadding;
private final Float stopPadding;
private final Integer frequency;
private final Integer gain;

private Bleep(BleepBuilder builder) {
this.startPadding = builder.startPadding;
this.stopPadding = builder.stopPadding;
this.frequency = builder.frequency;
this.gain = builder.gain;
}

/**
* @return a new builder
*/
public static BleepBuilder builder() {
return new BleepBuilder();
}

/**
* @return Seconds of bleep added before the detected span.
*/
public Float getStartPadding() {
return startPadding;
}

/**
* @return Seconds of bleep added after the detected span.
*/
public Float getStopPadding() {
return stopPadding;
}

/**
* @return Bleep frequency in Hz.
*/
public Integer getFrequency() {
return frequency;
}

/**
* @return Bleep gain.
*/
public Integer getGain() {
return gain;
}

@Override
public String toString() {
return "Bleep{" +
"startPadding=" + startPadding +
", stopPadding=" + stopPadding +
", frequency=" + frequency +
", gain=" + gain +
'}';
}

public static final class BleepBuilder {
private Float startPadding;
private Float stopPadding;
private Integer frequency;
private Integer gain;

private BleepBuilder() {
}

/**
* @param startPadding Seconds of bleep added before the detected span.
* @return this builder
*/
public BleepBuilder startPadding(Float startPadding) {
this.startPadding = startPadding;
return this;
}

/**
* @param stopPadding Seconds of bleep added after the detected span.
* @return this builder
*/
public BleepBuilder stopPadding(Float stopPadding) {
this.stopPadding = stopPadding;
return this;
}

/**
* @param frequency Bleep frequency in Hz.
* @return this builder
*/
public BleepBuilder frequency(Integer frequency) {
this.frequency = frequency;
return this;
}

/**
* @param gain Bleep gain.
* @return this builder
*/
public BleepBuilder gain(Integer gain) {
this.gain = gain;
return this;
}

public Bleep build() {
return new Bleep(this);
}
}
}
Loading
Loading