From 929107c3a7b86d7202be1e75fe06007afbfe4bbe Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Wed, 12 Aug 2026 02:37:31 +0000 Subject: [PATCH 1/7] codegen metadata --- .stats.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index 6539dd75..21d375d8 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 48 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch/finch-9a6d840deb9e30caf68354e884cb2c72ff6ca21cfbefb5ed0ca6187932c9cd62.yml -openapi_spec_hash: ce61ace110680a502bdccf396b2a4d88 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch/finch-dc926456fb1046d38970698145fef416c9359c3675a58275ff27406c42729d9c.yml +openapi_spec_hash: 7b94021ace9eb5f155c51a5a8d49473b config_hash: 9ae56f40cec7304896138bfad5caf748 From e47ad45e7c5aa16e5f628daa3df2f541507c812b Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 13 Aug 2026 21:24:16 +0000 Subject: [PATCH 2/7] fix(docs): link the javadoc badge so the version stays current after release --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0be7fbb9..87bf4acd 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ [![Maven Central](https://img.shields.io/maven-central/v/com.tryfinch.api/finch-java)](https://central.sonatype.com/artifact/com.tryfinch.api/finch-java/8.7.0) -[![javadoc](https://javadoc.io/badge2/com.tryfinch.api/finch-java/8.7.0/javadoc.svg)](https://javadoc.io/doc/com.tryfinch.api/finch-java/8.7.0) +[![javadoc](https://javadoc.io/badge2/com.tryfinch.api/finch-java/javadoc.svg)](https://javadoc.io/doc/com.tryfinch.api/finch-java/8.7.0) From 54deda5ca30f036c9eea43f1db0fea1c213571ff Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 13 Aug 2026 21:35:56 +0000 Subject: [PATCH 3/7] feat(api): api update --- .stats.yml | 4 +- .../api/models/ConnectSessionNewParams.kt | 450 +++++++++++++++++- .../api/models/ConnectSessionNewParamsTest.kt | 19 + .../async/connect/SessionServiceAsyncTest.kt | 6 + .../blocking/connect/SessionServiceTest.kt | 6 + 5 files changed, 482 insertions(+), 3 deletions(-) diff --git a/.stats.yml b/.stats.yml index 21d375d8..61293c8e 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 48 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch/finch-dc926456fb1046d38970698145fef416c9359c3675a58275ff27406c42729d9c.yml -openapi_spec_hash: 7b94021ace9eb5f155c51a5a8d49473b +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch/finch-df441d4706ab4fa56bb5e59e33ca1d0009432be21cc8c71c83e949b85b1e1129.yml +openapi_spec_hash: 368e2901f6c03dab5aef5a491f628e57 config_hash: 9ae56f40cec7304896138bfad5caf748 diff --git a/finch-java-core/src/main/kotlin/com/tryfinch/api/models/ConnectSessionNewParams.kt b/finch-java-core/src/main/kotlin/com/tryfinch/api/models/ConnectSessionNewParams.kt index 44aa93b9..9ba0153d 100644 --- a/finch-java-core/src/main/kotlin/com/tryfinch/api/models/ConnectSessionNewParams.kt +++ b/finch-java-core/src/main/kotlin/com/tryfinch/api/models/ConnectSessionNewParams.kt @@ -89,6 +89,15 @@ private constructor( */ fun minutesToExpire(): Optional = body.minutesToExpire() + /** + * Optional recordkeeping configuration. Can only be provided when the `recordkeeping` product + * is requested. Currently supports `recordkeeper` set to `voya`. + * + * @throws FinchInvalidDataException if the JSON field has an unexpected type (e.g. if the + * server responded with an unexpected value). + */ + fun recordkeeping(): Optional = body.recordkeeping() + /** * The URI to redirect to after the Connect flow is completed * @@ -154,6 +163,13 @@ private constructor( */ fun _minutesToExpire(): JsonField = body._minutesToExpire() + /** + * Returns the raw JSON value of [recordkeeping]. + * + * Unlike [recordkeeping], this method doesn't throw if the JSON field has an unexpected type. + */ + fun _recordkeeping(): JsonField = body._recordkeeping() + /** * Returns the raw JSON value of [redirectUri]. * @@ -356,6 +372,29 @@ private constructor( body.minutesToExpire(minutesToExpire) } + /** + * Optional recordkeeping configuration. Can only be provided when the `recordkeeping` + * product is requested. Currently supports `recordkeeper` set to `voya`. + */ + fun recordkeeping(recordkeeping: Recordkeeping?) = apply { + body.recordkeeping(recordkeeping) + } + + /** Alias for calling [Builder.recordkeeping] with `recordkeeping.orElse(null)`. */ + fun recordkeeping(recordkeeping: Optional) = + recordkeeping(recordkeeping.getOrNull()) + + /** + * Sets [Builder.recordkeeping] to an arbitrary JSON value. + * + * You should usually call [Builder.recordkeeping] with a well-typed [Recordkeeping] value + * instead. This method is primarily for setting the field to an undocumented or not yet + * supported value. + */ + fun recordkeeping(recordkeeping: JsonField) = apply { + body.recordkeeping(recordkeeping) + } + /** The URI to redirect to after the Connect flow is completed */ fun redirectUri(redirectUri: String?) = apply { body.redirectUri(redirectUri) } @@ -540,6 +579,7 @@ private constructor( private val integration: JsonField, private val manual: JsonField, private val minutesToExpire: JsonField, + private val recordkeeping: JsonField, private val redirectUri: JsonField, private val sandbox: JsonField, private val additionalProperties: MutableMap, @@ -566,6 +606,9 @@ private constructor( @JsonProperty("minutes_to_expire") @ExcludeMissing minutesToExpire: JsonField = JsonMissing.of(), + @JsonProperty("recordkeeping") + @ExcludeMissing + recordkeeping: JsonField = JsonMissing.of(), @JsonProperty("redirect_uri") @ExcludeMissing redirectUri: JsonField = JsonMissing.of(), @@ -578,6 +621,7 @@ private constructor( integration, manual, minutesToExpire, + recordkeeping, redirectUri, sandbox, mutableMapOf(), @@ -641,6 +685,15 @@ private constructor( */ fun minutesToExpire(): Optional = minutesToExpire.getOptional("minutes_to_expire") + /** + * Optional recordkeeping configuration. Can only be provided when the `recordkeeping` + * product is requested. Currently supports `recordkeeper` set to `voya`. + * + * @throws FinchInvalidDataException if the JSON field has an unexpected type (e.g. if the + * server responded with an unexpected value). + */ + fun recordkeeping(): Optional = recordkeeping.getOptional("recordkeeping") + /** * The URI to redirect to after the Connect flow is completed * @@ -721,6 +774,16 @@ private constructor( @ExcludeMissing fun _minutesToExpire(): JsonField = minutesToExpire + /** + * Returns the raw JSON value of [recordkeeping]. + * + * Unlike [recordkeeping], this method doesn't throw if the JSON field has an unexpected + * type. + */ + @JsonProperty("recordkeeping") + @ExcludeMissing + fun _recordkeeping(): JsonField = recordkeeping + /** * Returns the raw JSON value of [redirectUri]. * @@ -775,6 +838,7 @@ private constructor( private var integration: JsonField = JsonMissing.of() private var manual: JsonField = JsonMissing.of() private var minutesToExpire: JsonField = JsonMissing.of() + private var recordkeeping: JsonField = JsonMissing.of() private var redirectUri: JsonField = JsonMissing.of() private var sandbox: JsonField = JsonMissing.of() private var additionalProperties: MutableMap = mutableMapOf() @@ -788,6 +852,7 @@ private constructor( integration = createConnectSessionRequest.integration manual = createConnectSessionRequest.manual minutesToExpire = createConnectSessionRequest.minutesToExpire + recordkeeping = createConnectSessionRequest.recordkeeping redirectUri = createConnectSessionRequest.redirectUri sandbox = createConnectSessionRequest.sandbox additionalProperties = @@ -940,6 +1005,28 @@ private constructor( this.minutesToExpire = minutesToExpire } + /** + * Optional recordkeeping configuration. Can only be provided when the `recordkeeping` + * product is requested. Currently supports `recordkeeper` set to `voya`. + */ + fun recordkeeping(recordkeeping: Recordkeeping?) = + recordkeeping(JsonField.ofNullable(recordkeeping)) + + /** Alias for calling [Builder.recordkeeping] with `recordkeeping.orElse(null)`. */ + fun recordkeeping(recordkeeping: Optional) = + recordkeeping(recordkeeping.getOrNull()) + + /** + * Sets [Builder.recordkeeping] to an arbitrary JSON value. + * + * You should usually call [Builder.recordkeeping] with a well-typed [Recordkeeping] + * value instead. This method is primarily for setting the field to an undocumented or + * not yet supported value. + */ + fun recordkeeping(recordkeeping: JsonField) = apply { + this.recordkeeping = recordkeeping + } + /** The URI to redirect to after the Connect flow is completed */ fun redirectUri(redirectUri: String?) = redirectUri(JsonField.ofNullable(redirectUri)) @@ -1014,6 +1101,7 @@ private constructor( integration, manual, minutesToExpire, + recordkeeping, redirectUri, sandbox, additionalProperties.toMutableMap(), @@ -1043,6 +1131,7 @@ private constructor( integration().ifPresent { it.validate() } manual() minutesToExpire() + recordkeeping().ifPresent { it.validate() } redirectUri() sandbox().ifPresent { it.validate() } validated = true @@ -1071,6 +1160,7 @@ private constructor( (integration.asKnown().getOrNull()?.validity() ?: 0) + (if (manual.asKnown().isPresent) 1 else 0) + (if (minutesToExpire.asKnown().isPresent) 1 else 0) + + (recordkeeping.asKnown().getOrNull()?.validity() ?: 0) + (if (redirectUri.asKnown().isPresent) 1 else 0) + (sandbox.asKnown().getOrNull()?.validity() ?: 0) @@ -1087,6 +1177,7 @@ private constructor( integration == other.integration && manual == other.manual && minutesToExpire == other.minutesToExpire && + recordkeeping == other.recordkeeping && redirectUri == other.redirectUri && sandbox == other.sandbox && additionalProperties == other.additionalProperties @@ -1101,6 +1192,7 @@ private constructor( integration, manual, minutesToExpire, + recordkeeping, redirectUri, sandbox, additionalProperties, @@ -1110,7 +1202,7 @@ private constructor( override fun hashCode(): Int = hashCode override fun toString() = - "CreateConnectSessionRequest{customerId=$customerId, customerName=$customerName, products=$products, customerEmail=$customerEmail, integration=$integration, manual=$manual, minutesToExpire=$minutesToExpire, redirectUri=$redirectUri, sandbox=$sandbox, additionalProperties=$additionalProperties}" + "CreateConnectSessionRequest{customerId=$customerId, customerName=$customerName, products=$products, customerEmail=$customerEmail, integration=$integration, manual=$manual, minutesToExpire=$minutesToExpire, recordkeeping=$recordkeeping, redirectUri=$redirectUri, sandbox=$sandbox, additionalProperties=$additionalProperties}" } class ConnectProducts @JsonCreator private constructor(private val value: JsonField) : @@ -1695,6 +1787,362 @@ private constructor( "Integration{provider=$provider, authMethod=$authMethod, additionalProperties=$additionalProperties}" } + /** + * Optional recordkeeping configuration. Can only be provided when the `recordkeeping` product + * is requested. Currently supports `recordkeeper` set to `voya`. + */ + class Recordkeeping + @JsonCreator(mode = JsonCreator.Mode.DISABLED) + private constructor( + private val planId: JsonField, + private val recordkeeper: JsonField, + private val additionalProperties: MutableMap, + ) { + + @JsonCreator + private constructor( + @JsonProperty("plan_id") @ExcludeMissing planId: JsonField = JsonMissing.of(), + @JsonProperty("recordkeeper") + @ExcludeMissing + recordkeeper: JsonField = JsonMissing.of(), + ) : this(planId, recordkeeper, mutableMapOf()) + + /** + * The plan identifier used by the recordkeeper + * + * @throws FinchInvalidDataException if the JSON field has an unexpected type or is + * unexpectedly missing or null (e.g. if the server responded with an unexpected value). + */ + fun planId(): String = planId.getRequired("plan_id") + + /** + * The recordkeeper to configure for this connection + * + * @throws FinchInvalidDataException if the JSON field has an unexpected type or is + * unexpectedly missing or null (e.g. if the server responded with an unexpected value). + */ + fun recordkeeper(): Recordkeeper = recordkeeper.getRequired("recordkeeper") + + /** + * Returns the raw JSON value of [planId]. + * + * Unlike [planId], this method doesn't throw if the JSON field has an unexpected type. + */ + @JsonProperty("plan_id") @ExcludeMissing fun _planId(): JsonField = planId + + /** + * Returns the raw JSON value of [recordkeeper]. + * + * Unlike [recordkeeper], this method doesn't throw if the JSON field has an unexpected + * type. + */ + @JsonProperty("recordkeeper") + @ExcludeMissing + fun _recordkeeper(): JsonField = recordkeeper + + @JsonAnySetter + private fun putAdditionalProperty(key: String, value: JsonValue) { + additionalProperties.put(key, value) + } + + @JsonAnyGetter + @ExcludeMissing + fun _additionalProperties(): Map = + Collections.unmodifiableMap(additionalProperties) + + fun toBuilder() = Builder().from(this) + + companion object { + + /** + * Returns a mutable builder for constructing an instance of [Recordkeeping]. + * + * The following fields are required: + * ```java + * .planId() + * .recordkeeper() + * ``` + */ + @JvmStatic fun builder() = Builder() + } + + /** A builder for [Recordkeeping]. */ + class Builder internal constructor() { + + private var planId: JsonField? = null + private var recordkeeper: JsonField? = null + private var additionalProperties: MutableMap = mutableMapOf() + + @JvmSynthetic + internal fun from(recordkeeping: Recordkeeping) = apply { + planId = recordkeeping.planId + recordkeeper = recordkeeping.recordkeeper + additionalProperties = recordkeeping.additionalProperties.toMutableMap() + } + + /** The plan identifier used by the recordkeeper */ + fun planId(planId: String) = planId(JsonField.of(planId)) + + /** + * Sets [Builder.planId] to an arbitrary JSON value. + * + * You should usually call [Builder.planId] with a well-typed [String] value instead. + * This method is primarily for setting the field to an undocumented or not yet + * supported value. + */ + fun planId(planId: JsonField) = apply { this.planId = planId } + + /** The recordkeeper to configure for this connection */ + fun recordkeeper(recordkeeper: Recordkeeper) = recordkeeper(JsonField.of(recordkeeper)) + + /** + * Sets [Builder.recordkeeper] to an arbitrary JSON value. + * + * You should usually call [Builder.recordkeeper] with a well-typed [Recordkeeper] value + * instead. This method is primarily for setting the field to an undocumented or not yet + * supported value. + */ + fun recordkeeper(recordkeeper: JsonField) = apply { + this.recordkeeper = recordkeeper + } + + fun additionalProperties(additionalProperties: Map) = apply { + this.additionalProperties.clear() + putAllAdditionalProperties(additionalProperties) + } + + fun putAdditionalProperty(key: String, value: JsonValue) = apply { + additionalProperties.put(key, value) + } + + fun putAllAdditionalProperties(additionalProperties: Map) = apply { + this.additionalProperties.putAll(additionalProperties) + } + + fun removeAdditionalProperty(key: String) = apply { additionalProperties.remove(key) } + + fun removeAllAdditionalProperties(keys: Set) = apply { + keys.forEach(::removeAdditionalProperty) + } + + /** + * Returns an immutable instance of [Recordkeeping]. + * + * Further updates to this [Builder] will not mutate the returned instance. + * + * The following fields are required: + * ```java + * .planId() + * .recordkeeper() + * ``` + * + * @throws IllegalStateException if any required field is unset. + */ + fun build(): Recordkeeping = + Recordkeeping( + checkRequired("planId", planId), + checkRequired("recordkeeper", recordkeeper), + additionalProperties.toMutableMap(), + ) + } + + private var validated: Boolean = false + + /** + * Validates that the types of all values in this object match their expected types + * recursively. + * + * This method is _not_ forwards compatible with new types from the API for existing fields. + * + * @throws FinchInvalidDataException if any value type in this object doesn't match its + * expected type. + */ + fun validate(): Recordkeeping = apply { + if (validated) { + return@apply + } + + planId() + recordkeeper().validate() + validated = true + } + + fun isValid(): Boolean = + try { + validate() + true + } catch (e: FinchInvalidDataException) { + false + } + + /** + * Returns a score indicating how many valid values are contained in this object + * recursively. + * + * Used for best match union deserialization. + */ + @JvmSynthetic + internal fun validity(): Int = + (if (planId.asKnown().isPresent) 1 else 0) + + (recordkeeper.asKnown().getOrNull()?.validity() ?: 0) + + /** The recordkeeper to configure for this connection */ + class Recordkeeper @JsonCreator private constructor(private val value: JsonField) : + Enum { + + /** + * Returns this class instance's raw value. + * + * This is usually only useful if this instance was deserialized from data that doesn't + * match any known member, and you want to know that value. For example, if the SDK is + * on an older version than the API, then the API may respond with new members that the + * SDK is unaware of. + */ + @com.fasterxml.jackson.annotation.JsonValue fun _value(): JsonField = value + + companion object { + + @JvmField val VOYA = of("voya") + + @JvmStatic fun of(value: String) = Recordkeeper(JsonField.of(value)) + } + + /** An enum containing [Recordkeeper]'s known values. */ + enum class Known { + VOYA + } + + /** + * An enum containing [Recordkeeper]'s known values, as well as an [_UNKNOWN] member. + * + * An instance of [Recordkeeper] can contain an unknown value in a couple of cases: + * - It was deserialized from data that doesn't match any known member. For example, if + * the SDK is on an older version than the API, then the API may respond with new + * members that the SDK is unaware of. + * - It was constructed with an arbitrary value using the [of] method. + */ + enum class Value { + VOYA, + /** + * An enum member indicating that [Recordkeeper] was instantiated with an unknown + * value. + */ + _UNKNOWN, + } + + /** + * Returns an enum member corresponding to this class instance's value, or + * [Value._UNKNOWN] if the class was instantiated with an unknown value. + * + * Use the [known] method instead if you're certain the value is always known or if you + * want to throw for the unknown case. + */ + fun value(): Value = + when (this) { + VOYA -> Value.VOYA + else -> Value._UNKNOWN + } + + /** + * Returns an enum member corresponding to this class instance's value. + * + * Use the [value] method instead if you're uncertain the value is always known and + * don't want to throw for the unknown case. + * + * @throws FinchInvalidDataException if this class instance's value is a not a known + * member. + */ + fun known(): Known = + when (this) { + VOYA -> Known.VOYA + else -> throw FinchInvalidDataException("Unknown Recordkeeper: $value") + } + + /** + * Returns this class instance's primitive wire representation. + * + * This differs from the [toString] method because that method is primarily for + * debugging and generally doesn't throw. + * + * @throws FinchInvalidDataException if this class instance's value does not have the + * expected primitive type. + */ + fun asString(): String = + _value().asString().orElseThrow { + FinchInvalidDataException("Value is not a String") + } + + private var validated: Boolean = false + + /** + * Validates that the types of all values in this object match their expected types + * recursively. + * + * This method is _not_ forwards compatible with new types from the API for existing + * fields. + * + * @throws FinchInvalidDataException if any value type in this object doesn't match its + * expected type. + */ + fun validate(): Recordkeeper = apply { + if (validated) { + return@apply + } + + known() + validated = true + } + + fun isValid(): Boolean = + try { + validate() + true + } catch (e: FinchInvalidDataException) { + false + } + + /** + * Returns a score indicating how many valid values are contained in this object + * recursively. + * + * Used for best match union deserialization. + */ + @JvmSynthetic internal fun validity(): Int = if (value() == Value._UNKNOWN) 0 else 1 + + override fun equals(other: Any?): Boolean { + if (this === other) { + return true + } + + return other is Recordkeeper && value == other.value + } + + override fun hashCode() = value.hashCode() + + override fun toString() = value.toString() + } + + override fun equals(other: Any?): Boolean { + if (this === other) { + return true + } + + return other is Recordkeeping && + planId == other.planId && + recordkeeper == other.recordkeeper && + additionalProperties == other.additionalProperties + } + + private val hashCode: Int by lazy { + Objects.hash(planId, recordkeeper, additionalProperties) + } + + override fun hashCode(): Int = hashCode + + override fun toString() = + "Recordkeeping{planId=$planId, recordkeeper=$recordkeeper, additionalProperties=$additionalProperties}" + } + /** Sandbox mode for testing */ class Sandbox @JsonCreator private constructor(private val value: JsonField) : Enum { diff --git a/finch-java-core/src/test/kotlin/com/tryfinch/api/models/ConnectSessionNewParamsTest.kt b/finch-java-core/src/test/kotlin/com/tryfinch/api/models/ConnectSessionNewParamsTest.kt index 3695428c..8aff1161 100644 --- a/finch-java-core/src/test/kotlin/com/tryfinch/api/models/ConnectSessionNewParamsTest.kt +++ b/finch-java-core/src/test/kotlin/com/tryfinch/api/models/ConnectSessionNewParamsTest.kt @@ -22,6 +22,12 @@ internal class ConnectSessionNewParamsTest { ) .manual(true) .minutesToExpire(1.0) + .recordkeeping( + ConnectSessionNewParams.Recordkeeping.builder() + .planId("x") + .recordkeeper(ConnectSessionNewParams.Recordkeeping.Recordkeeper.VOYA) + .build() + ) .redirectUri("redirect_uri") .sandbox(ConnectSessionNewParams.Sandbox.FINCH) .build() @@ -43,6 +49,12 @@ internal class ConnectSessionNewParamsTest { ) .manual(true) .minutesToExpire(1.0) + .recordkeeping( + ConnectSessionNewParams.Recordkeeping.builder() + .planId("x") + .recordkeeper(ConnectSessionNewParams.Recordkeeping.Recordkeeper.VOYA) + .build() + ) .redirectUri("redirect_uri") .sandbox(ConnectSessionNewParams.Sandbox.FINCH) .build() @@ -63,6 +75,13 @@ internal class ConnectSessionNewParamsTest { ) assertThat(body.manual()).contains(true) assertThat(body.minutesToExpire()).contains(1.0) + assertThat(body.recordkeeping()) + .contains( + ConnectSessionNewParams.Recordkeeping.builder() + .planId("x") + .recordkeeper(ConnectSessionNewParams.Recordkeeping.Recordkeeper.VOYA) + .build() + ) assertThat(body.redirectUri()).contains("redirect_uri") assertThat(body.sandbox()).contains(ConnectSessionNewParams.Sandbox.FINCH) } diff --git a/finch-java-core/src/test/kotlin/com/tryfinch/api/services/async/connect/SessionServiceAsyncTest.kt b/finch-java-core/src/test/kotlin/com/tryfinch/api/services/async/connect/SessionServiceAsyncTest.kt index 2cdfd01a..c31feeb8 100644 --- a/finch-java-core/src/test/kotlin/com/tryfinch/api/services/async/connect/SessionServiceAsyncTest.kt +++ b/finch-java-core/src/test/kotlin/com/tryfinch/api/services/async/connect/SessionServiceAsyncTest.kt @@ -38,6 +38,12 @@ internal class SessionServiceAsyncTest { ) .manual(true) .minutesToExpire(1.0) + .recordkeeping( + ConnectSessionNewParams.Recordkeeping.builder() + .planId("x") + .recordkeeper(ConnectSessionNewParams.Recordkeeping.Recordkeeper.VOYA) + .build() + ) .redirectUri("redirect_uri") .sandbox(ConnectSessionNewParams.Sandbox.FINCH) .build() diff --git a/finch-java-core/src/test/kotlin/com/tryfinch/api/services/blocking/connect/SessionServiceTest.kt b/finch-java-core/src/test/kotlin/com/tryfinch/api/services/blocking/connect/SessionServiceTest.kt index 29733809..d553095d 100644 --- a/finch-java-core/src/test/kotlin/com/tryfinch/api/services/blocking/connect/SessionServiceTest.kt +++ b/finch-java-core/src/test/kotlin/com/tryfinch/api/services/blocking/connect/SessionServiceTest.kt @@ -38,6 +38,12 @@ internal class SessionServiceTest { ) .manual(true) .minutesToExpire(1.0) + .recordkeeping( + ConnectSessionNewParams.Recordkeeping.builder() + .planId("x") + .recordkeeper(ConnectSessionNewParams.Recordkeeping.Recordkeeper.VOYA) + .build() + ) .redirectUri("redirect_uri") .sandbox(ConnectSessionNewParams.Sandbox.FINCH) .build() From 0694e6cf508c0f30cde9cabff88b0951f0e6ab0f Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 14 Aug 2026 16:00:37 +0000 Subject: [PATCH 4/7] feat(api): api update --- .stats.yml | 4 +- .../api/models/ConnectSessionNewParams.kt | 93 ++++++++++--------- .../api/models/ConnectSessionNewParamsTest.kt | 6 +- .../async/connect/SessionServiceAsyncTest.kt | 2 +- .../blocking/connect/SessionServiceTest.kt | 2 +- 5 files changed, 57 insertions(+), 50 deletions(-) diff --git a/.stats.yml b/.stats.yml index 61293c8e..6f39974a 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 48 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch/finch-df441d4706ab4fa56bb5e59e33ca1d0009432be21cc8c71c83e949b85b1e1129.yml -openapi_spec_hash: 368e2901f6c03dab5aef5a491f628e57 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch/finch-d189f84d03a9be12f299d621467e900538b085d77590e9fb0e9d6dd349fb8f37.yml +openapi_spec_hash: 70bdcd4000b45d3d2dc80f8202b8f46a config_hash: 9ae56f40cec7304896138bfad5caf748 diff --git a/finch-java-core/src/main/kotlin/com/tryfinch/api/models/ConnectSessionNewParams.kt b/finch-java-core/src/main/kotlin/com/tryfinch/api/models/ConnectSessionNewParams.kt index 9ba0153d..fc458797 100644 --- a/finch-java-core/src/main/kotlin/com/tryfinch/api/models/ConnectSessionNewParams.kt +++ b/finch-java-core/src/main/kotlin/com/tryfinch/api/models/ConnectSessionNewParams.kt @@ -91,7 +91,7 @@ private constructor( /** * Optional recordkeeping configuration. Can only be provided when the `recordkeeping` product - * is requested. Currently supports `recordkeeper` set to `voya`. + * is requested. Currently supports `recordkeeper` set to `voya` or `empower`. * * @throws FinchInvalidDataException if the JSON field has an unexpected type (e.g. if the * server responded with an unexpected value). @@ -374,7 +374,7 @@ private constructor( /** * Optional recordkeeping configuration. Can only be provided when the `recordkeeping` - * product is requested. Currently supports `recordkeeper` set to `voya`. + * product is requested. Currently supports `recordkeeper` set to `voya` or `empower`. */ fun recordkeeping(recordkeeping: Recordkeeping?) = apply { body.recordkeeping(recordkeeping) @@ -687,7 +687,7 @@ private constructor( /** * Optional recordkeeping configuration. Can only be provided when the `recordkeeping` - * product is requested. Currently supports `recordkeeper` set to `voya`. + * product is requested. Currently supports `recordkeeper` set to `voya` or `empower`. * * @throws FinchInvalidDataException if the JSON field has an unexpected type (e.g. if the * server responded with an unexpected value). @@ -1007,7 +1007,7 @@ private constructor( /** * Optional recordkeeping configuration. Can only be provided when the `recordkeeping` - * product is requested. Currently supports `recordkeeper` set to `voya`. + * product is requested. Currently supports `recordkeeper` set to `voya` or `empower`. */ fun recordkeeping(recordkeeping: Recordkeeping?) = recordkeeping(JsonField.ofNullable(recordkeeping)) @@ -1789,31 +1789,23 @@ private constructor( /** * Optional recordkeeping configuration. Can only be provided when the `recordkeeping` product - * is requested. Currently supports `recordkeeper` set to `voya`. + * is requested. Currently supports `recordkeeper` set to `voya` or `empower`. */ class Recordkeeping @JsonCreator(mode = JsonCreator.Mode.DISABLED) private constructor( - private val planId: JsonField, private val recordkeeper: JsonField, + private val planId: JsonField, private val additionalProperties: MutableMap, ) { @JsonCreator private constructor( - @JsonProperty("plan_id") @ExcludeMissing planId: JsonField = JsonMissing.of(), @JsonProperty("recordkeeper") @ExcludeMissing recordkeeper: JsonField = JsonMissing.of(), - ) : this(planId, recordkeeper, mutableMapOf()) - - /** - * The plan identifier used by the recordkeeper - * - * @throws FinchInvalidDataException if the JSON field has an unexpected type or is - * unexpectedly missing or null (e.g. if the server responded with an unexpected value). - */ - fun planId(): String = planId.getRequired("plan_id") + @JsonProperty("plan_id") @ExcludeMissing planId: JsonField = JsonMissing.of(), + ) : this(recordkeeper, planId, mutableMapOf()) /** * The recordkeeper to configure for this connection @@ -1824,11 +1816,12 @@ private constructor( fun recordkeeper(): Recordkeeper = recordkeeper.getRequired("recordkeeper") /** - * Returns the raw JSON value of [planId]. + * The plan identifier used by the recordkeeper * - * Unlike [planId], this method doesn't throw if the JSON field has an unexpected type. + * @throws FinchInvalidDataException if the JSON field has an unexpected type (e.g. if the + * server responded with an unexpected value). */ - @JsonProperty("plan_id") @ExcludeMissing fun _planId(): JsonField = planId + fun planId(): Optional = planId.getOptional("plan_id") /** * Returns the raw JSON value of [recordkeeper]. @@ -1840,6 +1833,13 @@ private constructor( @ExcludeMissing fun _recordkeeper(): JsonField = recordkeeper + /** + * Returns the raw JSON value of [planId]. + * + * Unlike [planId], this method doesn't throw if the JSON field has an unexpected type. + */ + @JsonProperty("plan_id") @ExcludeMissing fun _planId(): JsonField = planId + @JsonAnySetter private fun putAdditionalProperty(key: String, value: JsonValue) { additionalProperties.put(key, value) @@ -1859,7 +1859,6 @@ private constructor( * * The following fields are required: * ```java - * .planId() * .recordkeeper() * ``` */ @@ -1869,29 +1868,17 @@ private constructor( /** A builder for [Recordkeeping]. */ class Builder internal constructor() { - private var planId: JsonField? = null private var recordkeeper: JsonField? = null + private var planId: JsonField = JsonMissing.of() private var additionalProperties: MutableMap = mutableMapOf() @JvmSynthetic internal fun from(recordkeeping: Recordkeeping) = apply { - planId = recordkeeping.planId recordkeeper = recordkeeping.recordkeeper + planId = recordkeeping.planId additionalProperties = recordkeeping.additionalProperties.toMutableMap() } - /** The plan identifier used by the recordkeeper */ - fun planId(planId: String) = planId(JsonField.of(planId)) - - /** - * Sets [Builder.planId] to an arbitrary JSON value. - * - * You should usually call [Builder.planId] with a well-typed [String] value instead. - * This method is primarily for setting the field to an undocumented or not yet - * supported value. - */ - fun planId(planId: JsonField) = apply { this.planId = planId } - /** The recordkeeper to configure for this connection */ fun recordkeeper(recordkeeper: Recordkeeper) = recordkeeper(JsonField.of(recordkeeper)) @@ -1906,6 +1893,21 @@ private constructor( this.recordkeeper = recordkeeper } + /** The plan identifier used by the recordkeeper */ + fun planId(planId: String?) = planId(JsonField.ofNullable(planId)) + + /** Alias for calling [Builder.planId] with `planId.orElse(null)`. */ + fun planId(planId: Optional) = planId(planId.getOrNull()) + + /** + * Sets [Builder.planId] to an arbitrary JSON value. + * + * You should usually call [Builder.planId] with a well-typed [String] value instead. + * This method is primarily for setting the field to an undocumented or not yet + * supported value. + */ + fun planId(planId: JsonField) = apply { this.planId = planId } + fun additionalProperties(additionalProperties: Map) = apply { this.additionalProperties.clear() putAllAdditionalProperties(additionalProperties) @@ -1932,7 +1934,6 @@ private constructor( * * The following fields are required: * ```java - * .planId() * .recordkeeper() * ``` * @@ -1940,8 +1941,8 @@ private constructor( */ fun build(): Recordkeeping = Recordkeeping( - checkRequired("planId", planId), checkRequired("recordkeeper", recordkeeper), + planId, additionalProperties.toMutableMap(), ) } @@ -1962,8 +1963,8 @@ private constructor( return@apply } - planId() recordkeeper().validate() + planId() validated = true } @@ -1983,8 +1984,8 @@ private constructor( */ @JvmSynthetic internal fun validity(): Int = - (if (planId.asKnown().isPresent) 1 else 0) + - (recordkeeper.asKnown().getOrNull()?.validity() ?: 0) + (recordkeeper.asKnown().getOrNull()?.validity() ?: 0) + + (if (planId.asKnown().isPresent) 1 else 0) /** The recordkeeper to configure for this connection */ class Recordkeeper @JsonCreator private constructor(private val value: JsonField) : @@ -2004,12 +2005,15 @@ private constructor( @JvmField val VOYA = of("voya") + @JvmField val EMPOWER = of("empower") + @JvmStatic fun of(value: String) = Recordkeeper(JsonField.of(value)) } /** An enum containing [Recordkeeper]'s known values. */ enum class Known { - VOYA + VOYA, + EMPOWER, } /** @@ -2023,6 +2027,7 @@ private constructor( */ enum class Value { VOYA, + EMPOWER, /** * An enum member indicating that [Recordkeeper] was instantiated with an unknown * value. @@ -2040,6 +2045,7 @@ private constructor( fun value(): Value = when (this) { VOYA -> Value.VOYA + EMPOWER -> Value.EMPOWER else -> Value._UNKNOWN } @@ -2055,6 +2061,7 @@ private constructor( fun known(): Known = when (this) { VOYA -> Known.VOYA + EMPOWER -> Known.EMPOWER else -> throw FinchInvalidDataException("Unknown Recordkeeper: $value") } @@ -2128,19 +2135,19 @@ private constructor( } return other is Recordkeeping && - planId == other.planId && recordkeeper == other.recordkeeper && + planId == other.planId && additionalProperties == other.additionalProperties } private val hashCode: Int by lazy { - Objects.hash(planId, recordkeeper, additionalProperties) + Objects.hash(recordkeeper, planId, additionalProperties) } override fun hashCode(): Int = hashCode override fun toString() = - "Recordkeeping{planId=$planId, recordkeeper=$recordkeeper, additionalProperties=$additionalProperties}" + "Recordkeeping{recordkeeper=$recordkeeper, planId=$planId, additionalProperties=$additionalProperties}" } /** Sandbox mode for testing */ diff --git a/finch-java-core/src/test/kotlin/com/tryfinch/api/models/ConnectSessionNewParamsTest.kt b/finch-java-core/src/test/kotlin/com/tryfinch/api/models/ConnectSessionNewParamsTest.kt index 8aff1161..374a3365 100644 --- a/finch-java-core/src/test/kotlin/com/tryfinch/api/models/ConnectSessionNewParamsTest.kt +++ b/finch-java-core/src/test/kotlin/com/tryfinch/api/models/ConnectSessionNewParamsTest.kt @@ -24,8 +24,8 @@ internal class ConnectSessionNewParamsTest { .minutesToExpire(1.0) .recordkeeping( ConnectSessionNewParams.Recordkeeping.builder() - .planId("x") .recordkeeper(ConnectSessionNewParams.Recordkeeping.Recordkeeper.VOYA) + .planId("x") .build() ) .redirectUri("redirect_uri") @@ -51,8 +51,8 @@ internal class ConnectSessionNewParamsTest { .minutesToExpire(1.0) .recordkeeping( ConnectSessionNewParams.Recordkeeping.builder() - .planId("x") .recordkeeper(ConnectSessionNewParams.Recordkeeping.Recordkeeper.VOYA) + .planId("x") .build() ) .redirectUri("redirect_uri") @@ -78,8 +78,8 @@ internal class ConnectSessionNewParamsTest { assertThat(body.recordkeeping()) .contains( ConnectSessionNewParams.Recordkeeping.builder() - .planId("x") .recordkeeper(ConnectSessionNewParams.Recordkeeping.Recordkeeper.VOYA) + .planId("x") .build() ) assertThat(body.redirectUri()).contains("redirect_uri") diff --git a/finch-java-core/src/test/kotlin/com/tryfinch/api/services/async/connect/SessionServiceAsyncTest.kt b/finch-java-core/src/test/kotlin/com/tryfinch/api/services/async/connect/SessionServiceAsyncTest.kt index c31feeb8..c337de71 100644 --- a/finch-java-core/src/test/kotlin/com/tryfinch/api/services/async/connect/SessionServiceAsyncTest.kt +++ b/finch-java-core/src/test/kotlin/com/tryfinch/api/services/async/connect/SessionServiceAsyncTest.kt @@ -40,8 +40,8 @@ internal class SessionServiceAsyncTest { .minutesToExpire(1.0) .recordkeeping( ConnectSessionNewParams.Recordkeeping.builder() - .planId("x") .recordkeeper(ConnectSessionNewParams.Recordkeeping.Recordkeeper.VOYA) + .planId("x") .build() ) .redirectUri("redirect_uri") diff --git a/finch-java-core/src/test/kotlin/com/tryfinch/api/services/blocking/connect/SessionServiceTest.kt b/finch-java-core/src/test/kotlin/com/tryfinch/api/services/blocking/connect/SessionServiceTest.kt index d553095d..4102d958 100644 --- a/finch-java-core/src/test/kotlin/com/tryfinch/api/services/blocking/connect/SessionServiceTest.kt +++ b/finch-java-core/src/test/kotlin/com/tryfinch/api/services/blocking/connect/SessionServiceTest.kt @@ -40,8 +40,8 @@ internal class SessionServiceTest { .minutesToExpire(1.0) .recordkeeping( ConnectSessionNewParams.Recordkeeping.builder() - .planId("x") .recordkeeper(ConnectSessionNewParams.Recordkeeping.Recordkeeper.VOYA) + .planId("x") .build() ) .redirectUri("redirect_uri") From 7b1f70e596215b9242d0a3b2191bd345eaba9e57 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 17 Aug 2026 19:10:10 +0000 Subject: [PATCH 5/7] chore(internal): codegen related update --- finch-java-core/build.gradle.kts | 1 + 1 file changed, 1 insertion(+) diff --git a/finch-java-core/build.gradle.kts b/finch-java-core/build.gradle.kts index d5dc8c35..c5cb7a08 100644 --- a/finch-java-core/build.gradle.kts +++ b/finch-java-core/build.gradle.kts @@ -38,4 +38,5 @@ dependencies { testImplementation("org.mockito:mockito-core:5.14.2") testImplementation("org.mockito:mockito-junit-jupiter:5.14.2") testImplementation("org.mockito.kotlin:mockito-kotlin:4.1.0") + testImplementation("org.slf4j:slf4j-nop:1.7.36") } From 03555eb939004a5a749f83e9afe344141002a9f1 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 17 Aug 2026 21:04:24 +0000 Subject: [PATCH 6/7] feat(api): api update --- .stats.yml | 4 +-- .../api/models/ConnectSessionNewParams.kt | 27 +++++++++++++++---- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/.stats.yml b/.stats.yml index 6f39974a..14602907 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 48 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch/finch-d189f84d03a9be12f299d621467e900538b085d77590e9fb0e9d6dd349fb8f37.yml -openapi_spec_hash: 70bdcd4000b45d3d2dc80f8202b8f46a +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/finch/finch-d7a5aa80f0d4940c2d9994e1a72d27e0a22ac2431e4dab6354ca628457c7c790.yml +openapi_spec_hash: ec74d859d1bfd431ea7210f800e02c8d config_hash: 9ae56f40cec7304896138bfad5caf748 diff --git a/finch-java-core/src/main/kotlin/com/tryfinch/api/models/ConnectSessionNewParams.kt b/finch-java-core/src/main/kotlin/com/tryfinch/api/models/ConnectSessionNewParams.kt index fc458797..68c485f4 100644 --- a/finch-java-core/src/main/kotlin/com/tryfinch/api/models/ConnectSessionNewParams.kt +++ b/finch-java-core/src/main/kotlin/com/tryfinch/api/models/ConnectSessionNewParams.kt @@ -91,7 +91,8 @@ private constructor( /** * Optional recordkeeping configuration. Can only be provided when the `recordkeeping` product - * is requested. Currently supports `recordkeeper` set to `voya` or `empower`. + * is requested. Currently supports `recordkeeper` set to `voya`, `empower`, `fidelity`, or + * `transamerica`. * * @throws FinchInvalidDataException if the JSON field has an unexpected type (e.g. if the * server responded with an unexpected value). @@ -374,7 +375,8 @@ private constructor( /** * Optional recordkeeping configuration. Can only be provided when the `recordkeeping` - * product is requested. Currently supports `recordkeeper` set to `voya` or `empower`. + * product is requested. Currently supports `recordkeeper` set to `voya`, `empower`, + * `fidelity`, or `transamerica`. */ fun recordkeeping(recordkeeping: Recordkeeping?) = apply { body.recordkeeping(recordkeeping) @@ -687,7 +689,8 @@ private constructor( /** * Optional recordkeeping configuration. Can only be provided when the `recordkeeping` - * product is requested. Currently supports `recordkeeper` set to `voya` or `empower`. + * product is requested. Currently supports `recordkeeper` set to `voya`, `empower`, + * `fidelity`, or `transamerica`. * * @throws FinchInvalidDataException if the JSON field has an unexpected type (e.g. if the * server responded with an unexpected value). @@ -1007,7 +1010,8 @@ private constructor( /** * Optional recordkeeping configuration. Can only be provided when the `recordkeeping` - * product is requested. Currently supports `recordkeeper` set to `voya` or `empower`. + * product is requested. Currently supports `recordkeeper` set to `voya`, `empower`, + * `fidelity`, or `transamerica`. */ fun recordkeeping(recordkeeping: Recordkeeping?) = recordkeeping(JsonField.ofNullable(recordkeeping)) @@ -1789,7 +1793,8 @@ private constructor( /** * Optional recordkeeping configuration. Can only be provided when the `recordkeeping` product - * is requested. Currently supports `recordkeeper` set to `voya` or `empower`. + * is requested. Currently supports `recordkeeper` set to `voya`, `empower`, `fidelity`, or + * `transamerica`. */ class Recordkeeping @JsonCreator(mode = JsonCreator.Mode.DISABLED) @@ -2007,6 +2012,10 @@ private constructor( @JvmField val EMPOWER = of("empower") + @JvmField val FIDELITY = of("fidelity") + + @JvmField val TRANSAMERICA = of("transamerica") + @JvmStatic fun of(value: String) = Recordkeeper(JsonField.of(value)) } @@ -2014,6 +2023,8 @@ private constructor( enum class Known { VOYA, EMPOWER, + FIDELITY, + TRANSAMERICA, } /** @@ -2028,6 +2039,8 @@ private constructor( enum class Value { VOYA, EMPOWER, + FIDELITY, + TRANSAMERICA, /** * An enum member indicating that [Recordkeeper] was instantiated with an unknown * value. @@ -2046,6 +2059,8 @@ private constructor( when (this) { VOYA -> Value.VOYA EMPOWER -> Value.EMPOWER + FIDELITY -> Value.FIDELITY + TRANSAMERICA -> Value.TRANSAMERICA else -> Value._UNKNOWN } @@ -2062,6 +2077,8 @@ private constructor( when (this) { VOYA -> Known.VOYA EMPOWER -> Known.EMPOWER + FIDELITY -> Known.FIDELITY + TRANSAMERICA -> Known.TRANSAMERICA else -> throw FinchInvalidDataException("Unknown Recordkeeper: $value") } From 559b75e33d99e675206d04513e281a2f991c2c77 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 17 Aug 2026 21:04:54 +0000 Subject: [PATCH 7/7] release: 8.8.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 20 ++++++++++++++++++++ README.md | 10 +++++----- build.gradle.kts | 2 +- 4 files changed, 27 insertions(+), 7 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 479431d9..e2d3d7d8 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "8.7.0" + ".": "8.8.0" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index e04a1cd1..91fcc5db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,25 @@ # Changelog +## 8.8.0 (2026-08-17) + +Full Changelog: [v8.7.0...v8.8.0](https://github.com/Finch-API/finch-api-java/compare/v8.7.0...v8.8.0) + +### Features + +* **api:** api update ([03555eb](https://github.com/Finch-API/finch-api-java/commit/03555eb939004a5a749f83e9afe344141002a9f1)) +* **api:** api update ([0694e6c](https://github.com/Finch-API/finch-api-java/commit/0694e6cf508c0f30cde9cabff88b0951f0e6ab0f)) +* **api:** api update ([54deda5](https://github.com/Finch-API/finch-api-java/commit/54deda5ca30f036c9eea43f1db0fea1c213571ff)) + + +### Bug Fixes + +* **docs:** link the javadoc badge so the version stays current after release ([e47ad45](https://github.com/Finch-API/finch-api-java/commit/e47ad45e7c5aa16e5f628daa3df2f541507c812b)) + + +### Chores + +* **internal:** codegen related update ([7b1f70e](https://github.com/Finch-API/finch-api-java/commit/7b1f70e596215b9242d0a3b2191bd345eaba9e57)) + ## 8.7.0 (2026-08-07) Full Changelog: [v8.6.0...v8.7.0](https://github.com/Finch-API/finch-api-java/compare/v8.6.0...v8.7.0) diff --git a/README.md b/README.md index 87bf4acd..3c6d87f6 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,8 @@ -[![Maven Central](https://img.shields.io/maven-central/v/com.tryfinch.api/finch-java)](https://central.sonatype.com/artifact/com.tryfinch.api/finch-java/8.7.0) -[![javadoc](https://javadoc.io/badge2/com.tryfinch.api/finch-java/javadoc.svg)](https://javadoc.io/doc/com.tryfinch.api/finch-java/8.7.0) +[![Maven Central](https://img.shields.io/maven-central/v/com.tryfinch.api/finch-java)](https://central.sonatype.com/artifact/com.tryfinch.api/finch-java/8.8.0) +[![javadoc](https://javadoc.io/badge2/com.tryfinch.api/finch-java/javadoc.svg)](https://javadoc.io/doc/com.tryfinch.api/finch-java/8.8.0) @@ -24,7 +24,7 @@ Use the Finch MCP Server to enable AI assistants to interact with this API, allo -The REST API documentation can be found on [developer.tryfinch.com](https://developer.tryfinch.com/). Javadocs are available on [javadoc.io](https://javadoc.io/doc/com.tryfinch.api/finch-java/8.7.0). +The REST API documentation can be found on [developer.tryfinch.com](https://developer.tryfinch.com/). Javadocs are available on [javadoc.io](https://javadoc.io/doc/com.tryfinch.api/finch-java/8.8.0). @@ -35,7 +35,7 @@ The REST API documentation can be found on [developer.tryfinch.com](https://deve ### Gradle ```kotlin -implementation("com.tryfinch.api:finch-java:8.7.0") +implementation("com.tryfinch.api:finch-java:8.8.0") ``` ### Maven @@ -44,7 +44,7 @@ implementation("com.tryfinch.api:finch-java:8.7.0") com.tryfinch.api finch-java - 8.7.0 + 8.8.0 ``` diff --git a/build.gradle.kts b/build.gradle.kts index 7e818b34..5e0518d0 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,7 +8,7 @@ repositories { allprojects { group = "com.tryfinch.api" - version = "8.7.0" // x-release-please-version + version = "8.8.0" // x-release-please-version } subprojects {