From 4350a7ae2b767548e42da62d3c779eae2567f009 Mon Sep 17 00:00:00 2001 From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com> Date: Wed, 11 Mar 2026 15:35:52 +0000 Subject: [PATCH] feat: add preview mode support to workflow execution MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add optional preview parameter to ExecuteWorkflowRequest and response field to ExecuteWorkflowResponse. When preview is enabled, create operations return mock resources instead of persisting to the FHIR server, allowing developers to test workflows without side effects. Key changes: - Add optional preview field to ExecuteWorkflowRequest with builder methods - Add optional preview field to ExecuteWorkflowResponse to indicate execution mode - Update constructors, equals, hashCode, and builder patterns for both classes 🌿 Generated with Fern --- build.gradle | 4 +- changelog.md | 3 ++ reference.md | 8 ++++ .../com/phenoml/api/core/ClientOptions.java | 4 +- .../requests/ExecuteWorkflowRequest.java | 38 +++++++++++++++++-- .../types/ExecuteWorkflowResponse.java | 38 +++++++++++++++++-- 6 files changed, 84 insertions(+), 11 deletions(-) diff --git a/build.gradle b/build.gradle index ef9cc15..064317d 100644 --- a/build.gradle +++ b/build.gradle @@ -47,7 +47,7 @@ java { group = 'com.phenoml.maven' -version = '10.0.0' +version = '10.1.0' jar { dependsOn(":generatePomFileForMavenPublication") @@ -78,7 +78,7 @@ publishing { maven(MavenPublication) { groupId = 'com.phenoml.maven' artifactId = 'phenoml-java-sdk' - version = '10.0.0' + version = '10.1.0' from components.java pom { name = 'phenoml' diff --git a/changelog.md b/changelog.md index a3e18e8..fa92112 100644 --- a/changelog.md +++ b/changelog.md @@ -1,3 +1,6 @@ +## 10.1.0 - 2026-03-11 +* New optional `preview` parameter available on workflow execution requests. When enabled, create operations return mock resources instead of persisting to the FHIR server. The response also includes a `preview` field to indicate whether the workflow was executed in preview mode. + ## 10.0.0 - 2026-03-11 * The `ErrorResponse` class has been removed from the summary types package. If your code references `com.phenoml.api.resources.summary.types.ErrorResponse`, you'll need to update your imports and error handling logic to use alternative error response types available in the SDK. diff --git a/reference.md b/reference.md index 844429b..944c1a1 100644 --- a/reference.md +++ b/reference.md @@ -5857,6 +5857,14 @@ client.workflows().execute( **inputData:** `Map` — Input data for workflow execution + + + +
+
+ +**preview:** `Optional` — If true, create operations return mock resources instead of persisting to the FHIR server +
diff --git a/src/main/java/com/phenoml/api/core/ClientOptions.java b/src/main/java/com/phenoml/api/core/ClientOptions.java index 2bb1790..b95aef3 100644 --- a/src/main/java/com/phenoml/api/core/ClientOptions.java +++ b/src/main/java/com/phenoml/api/core/ClientOptions.java @@ -32,10 +32,10 @@ private ClientOptions( this.headers.putAll(headers); this.headers.putAll(new HashMap() { { - put("User-Agent", "com.phenoml.maven:phenoml-java-sdk/10.0.0"); + put("User-Agent", "com.phenoml.maven:phenoml-java-sdk/10.1.0"); put("X-Fern-Language", "JAVA"); put("X-Fern-SDK-Name", "com.phenoml.fern:api-sdk"); - put("X-Fern-SDK-Version", "10.0.0"); + put("X-Fern-SDK-Version", "10.1.0"); } }); this.headerSuppliers = headerSuppliers; diff --git a/src/main/java/com/phenoml/api/resources/workflows/requests/ExecuteWorkflowRequest.java b/src/main/java/com/phenoml/api/resources/workflows/requests/ExecuteWorkflowRequest.java index a80ec53..0d527b4 100644 --- a/src/main/java/com/phenoml/api/resources/workflows/requests/ExecuteWorkflowRequest.java +++ b/src/main/java/com/phenoml/api/resources/workflows/requests/ExecuteWorkflowRequest.java @@ -16,16 +16,21 @@ import java.util.LinkedHashMap; import java.util.Map; import java.util.Objects; +import java.util.Optional; @JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonDeserialize(builder = ExecuteWorkflowRequest.Builder.class) public final class ExecuteWorkflowRequest { private final Map inputData; + private final Optional preview; + private final Map additionalProperties; - private ExecuteWorkflowRequest(Map inputData, Map additionalProperties) { + private ExecuteWorkflowRequest( + Map inputData, Optional preview, Map additionalProperties) { this.inputData = inputData; + this.preview = preview; this.additionalProperties = additionalProperties; } @@ -37,6 +42,14 @@ public Map getInputData() { return inputData; } + /** + * @return If true, create operations return mock resources instead of persisting to the FHIR server + */ + @JsonProperty("preview") + public Optional getPreview() { + return preview; + } + @java.lang.Override public boolean equals(Object other) { if (this == other) return true; @@ -49,12 +62,12 @@ public Map getAdditionalProperties() { } private boolean equalTo(ExecuteWorkflowRequest other) { - return inputData.equals(other.inputData); + return inputData.equals(other.inputData) && preview.equals(other.preview); } @java.lang.Override public int hashCode() { - return Objects.hash(this.inputData); + return Objects.hash(this.inputData, this.preview); } @java.lang.Override @@ -70,6 +83,8 @@ public static Builder builder() { public static final class Builder { private Map inputData = new LinkedHashMap<>(); + private Optional preview = Optional.empty(); + @JsonAnySetter private Map additionalProperties = new HashMap<>(); @@ -77,6 +92,7 @@ private Builder() {} public Builder from(ExecuteWorkflowRequest other) { inputData(other.getInputData()); + preview(other.getPreview()); return this; } @@ -102,8 +118,22 @@ public Builder inputData(String key, Object value) { return this; } + /** + *

If true, create operations return mock resources instead of persisting to the FHIR server

+ */ + @JsonSetter(value = "preview", nulls = Nulls.SKIP) + public Builder preview(Optional preview) { + this.preview = preview; + return this; + } + + public Builder preview(Boolean preview) { + this.preview = Optional.ofNullable(preview); + return this; + } + public ExecuteWorkflowRequest build() { - return new ExecuteWorkflowRequest(inputData, additionalProperties); + return new ExecuteWorkflowRequest(inputData, preview, additionalProperties); } } } diff --git a/src/main/java/com/phenoml/api/resources/workflows/types/ExecuteWorkflowResponse.java b/src/main/java/com/phenoml/api/resources/workflows/types/ExecuteWorkflowResponse.java index cf3dbfe..435ab7d 100644 --- a/src/main/java/com/phenoml/api/resources/workflows/types/ExecuteWorkflowResponse.java +++ b/src/main/java/com/phenoml/api/resources/workflows/types/ExecuteWorkflowResponse.java @@ -26,16 +26,20 @@ public final class ExecuteWorkflowResponse { private final Optional results; + private final Optional preview; + private final Map additionalProperties; private ExecuteWorkflowResponse( Optional success, Optional message, Optional results, + Optional preview, Map additionalProperties) { this.success = success; this.message = message; this.results = results; + this.preview = preview; this.additionalProperties = additionalProperties; } @@ -60,6 +64,14 @@ public Optional getResults() { return results; } + /** + * @return Whether the workflow was executed in preview mode + */ + @JsonProperty("preview") + public Optional getPreview() { + return preview; + } + @java.lang.Override public boolean equals(Object other) { if (this == other) return true; @@ -72,12 +84,15 @@ public Map getAdditionalProperties() { } private boolean equalTo(ExecuteWorkflowResponse other) { - return success.equals(other.success) && message.equals(other.message) && results.equals(other.results); + return success.equals(other.success) + && message.equals(other.message) + && results.equals(other.results) + && preview.equals(other.preview); } @java.lang.Override public int hashCode() { - return Objects.hash(this.success, this.message, this.results); + return Objects.hash(this.success, this.message, this.results, this.preview); } @java.lang.Override @@ -97,6 +112,8 @@ public static final class Builder { private Optional results = Optional.empty(); + private Optional preview = Optional.empty(); + @JsonAnySetter private Map additionalProperties = new HashMap<>(); @@ -106,6 +123,7 @@ public Builder from(ExecuteWorkflowResponse other) { success(other.getSuccess()); message(other.getMessage()); results(other.getResults()); + preview(other.getPreview()); return this; } @@ -148,8 +166,22 @@ public Builder results(Results results) { return this; } + /** + *

Whether the workflow was executed in preview mode

+ */ + @JsonSetter(value = "preview", nulls = Nulls.SKIP) + public Builder preview(Optional preview) { + this.preview = preview; + return this; + } + + public Builder preview(Boolean preview) { + this.preview = Optional.ofNullable(preview); + return this; + } + public ExecuteWorkflowResponse build() { - return new ExecuteWorkflowResponse(success, message, results, additionalProperties); + return new ExecuteWorkflowResponse(success, message, results, preview, additionalProperties); } }