diff --git a/.fern/metadata.json b/.fern/metadata.json
index ffd7149..21ea3fa 100644
--- a/.fern/metadata.json
+++ b/.fern/metadata.json
@@ -1,7 +1,7 @@
{
"cliVersion": "5.6.0",
"generatorName": "fernapi/fern-java-sdk",
- "generatorVersion": "4.9.1",
+ "generatorVersion": "4.10.7",
"generatorConfig": {
"client-class-name": "BaseSchematic",
"generate-unknown-as-json-node": true,
@@ -14,10 +14,10 @@
"implementation redis.clients:jedis:5.2.0"
]
},
- "originGitCommit": "786b643cc0bf17aff1114597108246b5cf8af395",
+ "originGitCommit": "221a7c7d042bcb7d7609c93552e3c148814df3f5",
"originGitCommitIsDirty": false,
"invokedBy": "ci",
- "requestedVersion": "1.4.3",
+ "requestedVersion": "1.4.4",
"ciProvider": "github",
- "sdkVersion": "1.4.3"
+ "sdkVersion": "1.4.4"
}
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index b581265..cc851a1 100644
--- a/build.gradle
+++ b/build.gradle
@@ -52,7 +52,7 @@ java {
group = 'com.schematichq'
-version = '1.4.3'
+version = '1.4.4'
jar {
dependsOn(":generatePomFileForMavenPublication")
@@ -83,7 +83,7 @@ publishing {
maven(MavenPublication) {
groupId = 'com.schematichq'
artifactId = 'schematic-java'
- version = '1.4.3'
+ version = '1.4.4'
from components.java
pom {
name = 'Schematic'
diff --git a/reference.md b/reference.md
index dc2ff1f..9ef8052 100644
--- a/reference.md
+++ b/reference.md
@@ -2233,6 +2233,7 @@ client.billing().listBillingPrices(
.forTrialExpiryPlan(true)
.interval("interval")
.isActive(true)
+ .planVersionId("plan_version_id")
.price(1000000L)
.productId("product_id")
.providerType(BillingProviderType.METRONOME)
@@ -2306,6 +2307,14 @@ client.billing().listBillingPrices(
-
+**planVersionId:** `Optional` — Filter for prices belonging to a specific plan version (e.g. the latest published version)
+
+
+
+
+
+-
+
**price:** `Optional`
@@ -2646,6 +2655,7 @@ client.billing().listBillingProductPrices(
.forTrialExpiryPlan(true)
.interval("interval")
.isActive(true)
+ .planVersionId("plan_version_id")
.price(1000000L)
.productId("product_id")
.providerType(BillingProviderType.METRONOME)
@@ -2719,6 +2729,14 @@ client.billing().listBillingProductPrices(
-
+**planVersionId:** `Optional` — Filter for prices belonging to a specific plan version (e.g. the latest published version)
+
+
+
+
+
+-
+
**price:** `Optional`
diff --git a/src/main/java/com/schematic/api/core/ClientOptions.java b/src/main/java/com/schematic/api/core/ClientOptions.java
index f832217..b0e5fc5 100644
--- a/src/main/java/com/schematic/api/core/ClientOptions.java
+++ b/src/main/java/com/schematic/api/core/ClientOptions.java
@@ -38,10 +38,10 @@ private ClientOptions(
this.headers.putAll(headers);
this.headers.putAll(new HashMap() {
{
- put("User-Agent", "com.schematichq:schematic-java/1.4.3");
+ put("User-Agent", "com.schematichq:schematic-java/1.4.4");
put("X-Fern-Language", "JAVA");
put("X-Fern-SDK-Name", "com.schematic.fern:api-sdk");
- put("X-Fern-SDK-Version", "1.4.3");
+ put("X-Fern-SDK-Version", "1.4.4");
}
});
this.headerSuppliers = headerSuppliers;
diff --git a/src/main/java/com/schematic/api/core/DateTimeDeserializer.java b/src/main/java/com/schematic/api/core/DateTimeDeserializer.java
index b1c8e04..c60a3a4 100644
--- a/src/main/java/com/schematic/api/core/DateTimeDeserializer.java
+++ b/src/main/java/com/schematic/api/core/DateTimeDeserializer.java
@@ -14,6 +14,7 @@
import java.time.OffsetDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeParseException;
import java.time.temporal.TemporalAccessor;
import java.time.temporal.TemporalQueries;
@@ -42,8 +43,15 @@ public OffsetDateTime deserialize(JsonParser parser, DeserializationContext cont
if (token == JsonToken.VALUE_NUMBER_INT) {
return OffsetDateTime.ofInstant(Instant.ofEpochSecond(parser.getValueAsLong()), ZoneOffset.UTC);
} else {
- TemporalAccessor temporal = DateTimeFormatter.ISO_DATE_TIME.parseBest(
- parser.getValueAsString(), OffsetDateTime::from, LocalDateTime::from);
+ String value = parser.getValueAsString();
+ TemporalAccessor temporal;
+ try {
+ temporal = DateTimeFormatter.ISO_DATE_TIME.parseBest(value, OffsetDateTime::from, LocalDateTime::from);
+ } catch (DateTimeParseException e) {
+ // Fall back to space-separated format (e.g. "2025-02-15 10:30:00+00:00").
+ temporal = DateTimeFormatter.ISO_DATE_TIME.parseBest(
+ value.replace(' ', 'T'), OffsetDateTime::from, LocalDateTime::from);
+ }
if (temporal.query(TemporalQueries.offset()) == null) {
return LocalDateTime.from(temporal).atOffset(ZoneOffset.UTC);
diff --git a/src/main/java/com/schematic/api/resources/billing/AsyncRawBillingClient.java b/src/main/java/com/schematic/api/resources/billing/AsyncRawBillingClient.java
index c3f35c3..4bc1bf0 100644
--- a/src/main/java/com/schematic/api/resources/billing/AsyncRawBillingClient.java
+++ b/src/main/java/com/schematic/api/resources/billing/AsyncRawBillingClient.java
@@ -1327,6 +1327,10 @@ public CompletableFuture> l
QueryStringMapper.addQueryParameter(
httpUrl, "is_active", request.getIsActive().get(), false);
}
+ if (request.getPlanVersionId().isPresent()) {
+ QueryStringMapper.addQueryParameter(
+ httpUrl, "plan_version_id", request.getPlanVersionId().get(), false);
+ }
if (request.getPrice().isPresent()) {
QueryStringMapper.addQueryParameter(
httpUrl, "price", request.getPrice().get(), false);
@@ -1670,6 +1674,10 @@ public CompletableFuture listBillingPrices(
QueryStringMapper.addQueryParameter(
httpUrl, "is_active", request.getIsActive().get(), false);
}
+ if (request.getPlanVersionId().isPresent()) {
+ QueryStringMapper.addQueryParameter(
+ httpUrl, "plan_version_id", request.getPlanVersionId().get(), false);
+ }
if (request.getPrice().isPresent()) {
QueryStringMapper.addQueryParameter(
httpUrl, "price", request.getPrice().get(), false);
@@ -1294,6 +1298,10 @@ public BaseSchematicHttpResponse listBillingPr
QueryStringMapper.addQueryParameter(
httpUrl, "is_active", request.getIsActive().get(), false);
}
+ if (request.getPlanVersionId().isPresent()) {
+ QueryStringMapper.addQueryParameter(
+ httpUrl, "plan_version_id", request.getPlanVersionId().get(), false);
+ }
if (request.getPrice().isPresent()) {
QueryStringMapper.addQueryParameter(
httpUrl, "price", request.getPrice().get(), false);
diff --git a/src/main/java/com/schematic/api/resources/billing/requests/ListBillingPricesRequest.java b/src/main/java/com/schematic/api/resources/billing/requests/ListBillingPricesRequest.java
index c438be3..8c46eee 100644
--- a/src/main/java/com/schematic/api/resources/billing/requests/ListBillingPricesRequest.java
+++ b/src/main/java/com/schematic/api/resources/billing/requests/ListBillingPricesRequest.java
@@ -39,6 +39,8 @@ public final class ListBillingPricesRequest {
private final Optional isActive;
+ private final Optional planVersionId;
+
private final Optional price;
private final Optional productId;
@@ -67,6 +69,7 @@ private ListBillingPricesRequest(
Optional forTrialExpiryPlan,
Optional interval,
Optional isActive,
+ Optional planVersionId,
Optional price,
Optional productId,
Optional providerType,
@@ -84,6 +87,7 @@ private ListBillingPricesRequest(
this.forTrialExpiryPlan = forTrialExpiryPlan;
this.interval = interval;
this.isActive = isActive;
+ this.planVersionId = planVersionId;
this.price = price;
this.productId = productId;
this.providerType = providerType;
@@ -143,6 +147,14 @@ public Optional getIsActive() {
return isActive;
}
+ /**
+ * @return Filter for prices belonging to a specific plan version (e.g. the latest published version)
+ */
+ @JsonProperty("plan_version_id")
+ public Optional getPlanVersionId() {
+ return planVersionId;
+ }
+
@JsonProperty("price")
public Optional getPrice() {
return price;
@@ -216,6 +228,7 @@ private boolean equalTo(ListBillingPricesRequest other) {
&& forTrialExpiryPlan.equals(other.forTrialExpiryPlan)
&& interval.equals(other.interval)
&& isActive.equals(other.isActive)
+ && planVersionId.equals(other.planVersionId)
&& price.equals(other.price)
&& productId.equals(other.productId)
&& providerType.equals(other.providerType)
@@ -237,6 +250,7 @@ public int hashCode() {
this.forTrialExpiryPlan,
this.interval,
this.isActive,
+ this.planVersionId,
this.price,
this.productId,
this.providerType,
@@ -273,6 +287,8 @@ public static final class Builder {
private Optional isActive = Optional.empty();
+ private Optional planVersionId = Optional.empty();
+
private Optional price = Optional.empty();
private Optional productId = Optional.empty();
@@ -304,6 +320,7 @@ public Builder from(ListBillingPricesRequest other) {
forTrialExpiryPlan(other.getForTrialExpiryPlan());
interval(other.getInterval());
isActive(other.getIsActive());
+ planVersionId(other.getPlanVersionId());
price(other.getPrice());
productId(other.getProductId());
providerType(other.getProviderType());
@@ -415,6 +432,20 @@ public Builder isActive(Boolean isActive) {
return this;
}
+ /**
+ * Filter for prices belonging to a specific plan version (e.g. the latest published version)
+ */
+ @JsonSetter(value = "plan_version_id", nulls = Nulls.SKIP)
+ public Builder planVersionId(Optional planVersionId) {
+ this.planVersionId = planVersionId;
+ return this;
+ }
+
+ public Builder planVersionId(String planVersionId) {
+ this.planVersionId = Optional.ofNullable(planVersionId);
+ return this;
+ }
+
@JsonSetter(value = "price", nulls = Nulls.SKIP)
public Builder price(Optional price) {
this.price = price;
@@ -532,6 +563,7 @@ public ListBillingPricesRequest build() {
forTrialExpiryPlan,
interval,
isActive,
+ planVersionId,
price,
productId,
providerType,
diff --git a/src/main/java/com/schematic/api/resources/billing/requests/ListBillingProductPricesRequest.java b/src/main/java/com/schematic/api/resources/billing/requests/ListBillingProductPricesRequest.java
index a70372c..a3451cf 100644
--- a/src/main/java/com/schematic/api/resources/billing/requests/ListBillingProductPricesRequest.java
+++ b/src/main/java/com/schematic/api/resources/billing/requests/ListBillingProductPricesRequest.java
@@ -39,6 +39,8 @@ public final class ListBillingProductPricesRequest {
private final Optional isActive;
+ private final Optional planVersionId;
+
private final Optional price;
private final Optional productId;
@@ -67,6 +69,7 @@ private ListBillingProductPricesRequest(
Optional forTrialExpiryPlan,
Optional interval,
Optional isActive,
+ Optional planVersionId,
Optional price,
Optional productId,
Optional providerType,
@@ -84,6 +87,7 @@ private ListBillingProductPricesRequest(
this.forTrialExpiryPlan = forTrialExpiryPlan;
this.interval = interval;
this.isActive = isActive;
+ this.planVersionId = planVersionId;
this.price = price;
this.productId = productId;
this.providerType = providerType;
@@ -143,6 +147,14 @@ public Optional getIsActive() {
return isActive;
}
+ /**
+ * @return Filter for prices belonging to a specific plan version (e.g. the latest published version)
+ */
+ @JsonProperty("plan_version_id")
+ public Optional getPlanVersionId() {
+ return planVersionId;
+ }
+
@JsonProperty("price")
public Optional getPrice() {
return price;
@@ -216,6 +228,7 @@ private boolean equalTo(ListBillingProductPricesRequest other) {
&& forTrialExpiryPlan.equals(other.forTrialExpiryPlan)
&& interval.equals(other.interval)
&& isActive.equals(other.isActive)
+ && planVersionId.equals(other.planVersionId)
&& price.equals(other.price)
&& productId.equals(other.productId)
&& providerType.equals(other.providerType)
@@ -237,6 +250,7 @@ public int hashCode() {
this.forTrialExpiryPlan,
this.interval,
this.isActive,
+ this.planVersionId,
this.price,
this.productId,
this.providerType,
@@ -273,6 +287,8 @@ public static final class Builder {
private Optional isActive = Optional.empty();
+ private Optional planVersionId = Optional.empty();
+
private Optional price = Optional.empty();
private Optional productId = Optional.empty();
@@ -304,6 +320,7 @@ public Builder from(ListBillingProductPricesRequest other) {
forTrialExpiryPlan(other.getForTrialExpiryPlan());
interval(other.getInterval());
isActive(other.getIsActive());
+ planVersionId(other.getPlanVersionId());
price(other.getPrice());
productId(other.getProductId());
providerType(other.getProviderType());
@@ -415,6 +432,20 @@ public Builder isActive(Boolean isActive) {
return this;
}
+ /**
+ * Filter for prices belonging to a specific plan version (e.g. the latest published version)
+ */
+ @JsonSetter(value = "plan_version_id", nulls = Nulls.SKIP)
+ public Builder planVersionId(Optional planVersionId) {
+ this.planVersionId = planVersionId;
+ return this;
+ }
+
+ public Builder planVersionId(String planVersionId) {
+ this.planVersionId = Optional.ofNullable(planVersionId);
+ return this;
+ }
+
@JsonSetter(value = "price", nulls = Nulls.SKIP)
public Builder price(Optional price) {
this.price = price;
@@ -532,6 +563,7 @@ public ListBillingProductPricesRequest build() {
forTrialExpiryPlan,
interval,
isActive,
+ planVersionId,
price,
productId,
providerType,
diff --git a/src/main/java/com/schematic/api/resources/billing/types/ListBillingPricesParams.java b/src/main/java/com/schematic/api/resources/billing/types/ListBillingPricesParams.java
index 4c94058..bbac8de 100644
--- a/src/main/java/com/schematic/api/resources/billing/types/ListBillingPricesParams.java
+++ b/src/main/java/com/schematic/api/resources/billing/types/ListBillingPricesParams.java
@@ -40,6 +40,8 @@ public final class ListBillingPricesParams {
private final Optional offset;
+ private final Optional planVersionId;
+
private final Optional price;
private final Optional productId;
@@ -67,6 +69,7 @@ private ListBillingPricesParams(
Optional isActive,
Optional limit,
Optional offset,
+ Optional planVersionId,
Optional price,
Optional productId,
Optional> productIds,
@@ -84,6 +87,7 @@ private ListBillingPricesParams(
this.isActive = isActive;
this.limit = limit;
this.offset = offset;
+ this.planVersionId = planVersionId;
this.price = price;
this.productId = productId;
this.productIds = productIds;
@@ -153,6 +157,14 @@ public Optional getOffset() {
return offset;
}
+ /**
+ * @return Filter for prices belonging to a specific plan version (e.g. the latest published version)
+ */
+ @JsonProperty("plan_version_id")
+ public Optional getPlanVersionId() {
+ return planVersionId;
+ }
+
@JsonProperty("price")
public Optional getPrice() {
return price;
@@ -216,6 +228,7 @@ private boolean equalTo(ListBillingPricesParams other) {
&& isActive.equals(other.isActive)
&& limit.equals(other.limit)
&& offset.equals(other.offset)
+ && planVersionId.equals(other.planVersionId)
&& price.equals(other.price)
&& productId.equals(other.productId)
&& productIds.equals(other.productIds)
@@ -237,6 +250,7 @@ public int hashCode() {
this.isActive,
this.limit,
this.offset,
+ this.planVersionId,
this.price,
this.productId,
this.productIds,
@@ -274,6 +288,8 @@ public static final class Builder {
private Optional offset = Optional.empty();
+ private Optional planVersionId = Optional.empty();
+
private Optional price = Optional.empty();
private Optional productId = Optional.empty();
@@ -304,6 +320,7 @@ public Builder from(ListBillingPricesParams other) {
isActive(other.getIsActive());
limit(other.getLimit());
offset(other.getOffset());
+ planVersionId(other.getPlanVersionId());
price(other.getPrice());
productId(other.getProductId());
productIds(other.getProductIds());
@@ -421,6 +438,20 @@ public Builder offset(Long offset) {
return this;
}
+ /**
+ * Filter for prices belonging to a specific plan version (e.g. the latest published version)
+ */
+ @JsonSetter(value = "plan_version_id", nulls = Nulls.SKIP)
+ public Builder planVersionId(Optional planVersionId) {
+ this.planVersionId = planVersionId;
+ return this;
+ }
+
+ public Builder planVersionId(String planVersionId) {
+ this.planVersionId = Optional.ofNullable(planVersionId);
+ return this;
+ }
+
@JsonSetter(value = "price", nulls = Nulls.SKIP)
public Builder price(Optional price) {
this.price = price;
@@ -522,6 +553,7 @@ public ListBillingPricesParams build() {
isActive,
limit,
offset,
+ planVersionId,
price,
productId,
productIds,
diff --git a/src/main/java/com/schematic/api/resources/billing/types/ListBillingProductPricesParams.java b/src/main/java/com/schematic/api/resources/billing/types/ListBillingProductPricesParams.java
index 1684699..0bff5dc 100644
--- a/src/main/java/com/schematic/api/resources/billing/types/ListBillingProductPricesParams.java
+++ b/src/main/java/com/schematic/api/resources/billing/types/ListBillingProductPricesParams.java
@@ -40,6 +40,8 @@ public final class ListBillingProductPricesParams {
private final Optional offset;
+ private final Optional planVersionId;
+
private final Optional price;
private final Optional productId;
@@ -67,6 +69,7 @@ private ListBillingProductPricesParams(
Optional isActive,
Optional limit,
Optional offset,
+ Optional planVersionId,
Optional price,
Optional productId,
Optional> productIds,
@@ -84,6 +87,7 @@ private ListBillingProductPricesParams(
this.isActive = isActive;
this.limit = limit;
this.offset = offset;
+ this.planVersionId = planVersionId;
this.price = price;
this.productId = productId;
this.productIds = productIds;
@@ -153,6 +157,14 @@ public Optional getOffset() {
return offset;
}
+ /**
+ * @return Filter for prices belonging to a specific plan version (e.g. the latest published version)
+ */
+ @JsonProperty("plan_version_id")
+ public Optional getPlanVersionId() {
+ return planVersionId;
+ }
+
@JsonProperty("price")
public Optional getPrice() {
return price;
@@ -216,6 +228,7 @@ private boolean equalTo(ListBillingProductPricesParams other) {
&& isActive.equals(other.isActive)
&& limit.equals(other.limit)
&& offset.equals(other.offset)
+ && planVersionId.equals(other.planVersionId)
&& price.equals(other.price)
&& productId.equals(other.productId)
&& productIds.equals(other.productIds)
@@ -237,6 +250,7 @@ public int hashCode() {
this.isActive,
this.limit,
this.offset,
+ this.planVersionId,
this.price,
this.productId,
this.productIds,
@@ -274,6 +288,8 @@ public static final class Builder {
private Optional offset = Optional.empty();
+ private Optional planVersionId = Optional.empty();
+
private Optional price = Optional.empty();
private Optional productId = Optional.empty();
@@ -304,6 +320,7 @@ public Builder from(ListBillingProductPricesParams other) {
isActive(other.getIsActive());
limit(other.getLimit());
offset(other.getOffset());
+ planVersionId(other.getPlanVersionId());
price(other.getPrice());
productId(other.getProductId());
productIds(other.getProductIds());
@@ -421,6 +438,20 @@ public Builder offset(Long offset) {
return this;
}
+ /**
+ * Filter for prices belonging to a specific plan version (e.g. the latest published version)
+ */
+ @JsonSetter(value = "plan_version_id", nulls = Nulls.SKIP)
+ public Builder planVersionId(Optional planVersionId) {
+ this.planVersionId = planVersionId;
+ return this;
+ }
+
+ public Builder planVersionId(String planVersionId) {
+ this.planVersionId = Optional.ofNullable(planVersionId);
+ return this;
+ }
+
@JsonSetter(value = "price", nulls = Nulls.SKIP)
public Builder price(Optional price) {
this.price = price;
@@ -522,6 +553,7 @@ public ListBillingProductPricesParams build() {
isActive,
limit,
offset,
+ planVersionId,
price,
productId,
productIds,
diff --git a/src/main/java/com/schematic/api/types/AccountMemberPermission.java b/src/main/java/com/schematic/api/types/AccountMemberPermission.java
index 158b92a..9767bbe 100644
--- a/src/main/java/com/schematic/api/types/AccountMemberPermission.java
+++ b/src/main/java/com/schematic/api/types/AccountMemberPermission.java
@@ -46,9 +46,6 @@ public final class AccountMemberPermission {
public static final AccountMemberPermission OVERRIDES_EDIT =
new AccountMemberPermission(Value.OVERRIDES_EDIT, "overrides_edit");
- public static final AccountMemberPermission BILLING_CREDITS_EDIT =
- new AccountMemberPermission(Value.BILLING_CREDITS_EDIT, "billing_credits_edit");
-
public static final AccountMemberPermission DATA_EXPORTS_EDIT =
new AccountMemberPermission(Value.DATA_EXPORTS_EDIT, "data_exports_edit");
@@ -111,8 +108,6 @@ public T visit(Visitor visitor) {
return visitor.visitComponentsEdit();
case OVERRIDES_EDIT:
return visitor.visitOverridesEdit();
- case BILLING_CREDITS_EDIT:
- return visitor.visitBillingCreditsEdit();
case DATA_EXPORTS_EDIT:
return visitor.visitDataExportsEdit();
case UNKNOWN:
@@ -150,8 +145,6 @@ public static AccountMemberPermission valueOf(String value) {
return COMPONENTS_EDIT;
case "overrides_edit":
return OVERRIDES_EDIT;
- case "billing_credits_edit":
- return BILLING_CREDITS_EDIT;
case "data_exports_edit":
return DATA_EXPORTS_EDIT;
default:
@@ -160,8 +153,6 @@ public static AccountMemberPermission valueOf(String value) {
}
public enum Value {
- BILLING_CREDITS_EDIT,
-
COMPANIES_EDIT,
COMPANY_USERS_EDIT,
@@ -194,8 +185,6 @@ public enum Value {
}
public interface Visitor {
- T visitBillingCreditsEdit();
-
T visitCompaniesEdit();
T visitCompanyUsersEdit();
diff --git a/src/main/java/com/schematic/api/types/CheckFlagsResponseData.java b/src/main/java/com/schematic/api/types/CheckFlagsResponseData.java
index 787e5e2..5c3d639 100644
--- a/src/main/java/com/schematic/api/types/CheckFlagsResponseData.java
+++ b/src/main/java/com/schematic/api/types/CheckFlagsResponseData.java
@@ -22,6 +22,8 @@
@JsonInclude(JsonInclude.Include.NON_ABSENT)
@JsonDeserialize(builder = CheckFlagsResponseData.Builder.class)
public final class CheckFlagsResponseData {
+ private final Optional