diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 414ada657..d2b3093d6 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.485.0" + ".": "0.486.0" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index d4fff91f9..8e3e051f7 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 236 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/increase%2Fincrease-5444aa15ed771b293975e4ea457bbf96f3fd4268dab9cef1d64fc18efbba3718.yml -openapi_spec_hash: 94be74f7b294a338dd47d95721bb52ae +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/increase%2Fincrease-f3d22401feb4671870673cb67688b163ee7f26acb6d2f89dcf79b26b0675523f.yml +openapi_spec_hash: 4d6dbce33f5de203d92df4c20a957665 config_hash: 25d7d7aa4882db6189b4b53e8e249e80 diff --git a/CHANGELOG.md b/CHANGELOG.md index 6029f7413..03d529dd3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 0.486.0 (2026-03-19) + +Full Changelog: [v0.485.0...v0.486.0](https://github.com/Increase/increase-java/compare/v0.485.0...v0.486.0) + +### Features + +* **api:** api update ([d4e2d48](https://github.com/Increase/increase-java/commit/d4e2d482bfe255f31b55dc3ca07238f12fed92a1)) + ## 0.485.0 (2026-03-18) Full Changelog: [v0.484.0...v0.485.0](https://github.com/Increase/increase-java/compare/v0.484.0...v0.485.0) diff --git a/README.md b/README.md index f0c27e9cf..cdae65603 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,8 @@ -[![Maven Central](https://img.shields.io/maven-central/v/com.increase.api/increase-java)](https://central.sonatype.com/artifact/com.increase.api/increase-java/0.485.0) -[![javadoc](https://javadoc.io/badge2/com.increase.api/increase-java/0.485.0/javadoc.svg)](https://javadoc.io/doc/com.increase.api/increase-java/0.485.0) +[![Maven Central](https://img.shields.io/maven-central/v/com.increase.api/increase-java)](https://central.sonatype.com/artifact/com.increase.api/increase-java/0.486.0) +[![javadoc](https://javadoc.io/badge2/com.increase.api/increase-java/0.486.0/javadoc.svg)](https://javadoc.io/doc/com.increase.api/increase-java/0.486.0) @@ -13,7 +13,7 @@ The Increase Java SDK is similar to the Increase Kotlin SDK but with minor diffe -The REST API documentation can be found on [increase.com](https://increase.com/documentation). Javadocs are available on [javadoc.io](https://javadoc.io/doc/com.increase.api/increase-java/0.485.0). +The REST API documentation can be found on [increase.com](https://increase.com/documentation). Javadocs are available on [javadoc.io](https://javadoc.io/doc/com.increase.api/increase-java/0.486.0). @@ -24,7 +24,7 @@ The REST API documentation can be found on [increase.com](https://increase.com/d ### Gradle ```kotlin -implementation("com.increase.api:increase-java:0.485.0") +implementation("com.increase.api:increase-java:0.486.0") ``` ### Maven @@ -33,7 +33,7 @@ implementation("com.increase.api:increase-java:0.485.0") com.increase.api increase-java - 0.485.0 + 0.486.0 ``` diff --git a/build.gradle.kts b/build.gradle.kts index 9faca8f42..5210a3ef5 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,7 +8,7 @@ repositories { allprojects { group = "com.increase.api" - version = "0.485.0" // x-release-please-version + version = "0.486.0" // x-release-please-version } subprojects { diff --git a/increase-java-core/src/main/kotlin/com/increase/api/models/wiredrawdownrequests/WireDrawdownRequestCreateParams.kt b/increase-java-core/src/main/kotlin/com/increase/api/models/wiredrawdownrequests/WireDrawdownRequestCreateParams.kt index 5ab5bae73..4655140f3 100644 --- a/increase-java-core/src/main/kotlin/com/increase/api/models/wiredrawdownrequests/WireDrawdownRequestCreateParams.kt +++ b/increase-java-core/src/main/kotlin/com/increase/api/models/wiredrawdownrequests/WireDrawdownRequestCreateParams.kt @@ -6,6 +6,7 @@ import com.fasterxml.jackson.annotation.JsonAnyGetter import com.fasterxml.jackson.annotation.JsonAnySetter import com.fasterxml.jackson.annotation.JsonCreator import com.fasterxml.jackson.annotation.JsonProperty +import com.increase.api.core.Enum import com.increase.api.core.ExcludeMissing import com.increase.api.core.JsonField import com.increase.api.core.JsonMissing @@ -84,6 +85,14 @@ private constructor( */ fun unstructuredRemittanceInformation(): String = body.unstructuredRemittanceInformation() + /** + * Determines who bears the cost of the drawdown request. Defaults to `shared` if not specified. + * + * @throws IncreaseInvalidDataException if the JSON field has an unexpected type (e.g. if the + * server responded with an unexpected value). + */ + fun chargeBearer(): Optional = body.chargeBearer() + /** * The debtor's account number. * @@ -168,6 +177,13 @@ private constructor( fun _unstructuredRemittanceInformation(): JsonField = body._unstructuredRemittanceInformation() + /** + * Returns the raw JSON value of [chargeBearer]. + * + * Unlike [chargeBearer], this method doesn't throw if the JSON field has an unexpected type. + */ + fun _chargeBearer(): JsonField = body._chargeBearer() + /** * Returns the raw JSON value of [debtorAccountNumber]. * @@ -361,6 +377,23 @@ private constructor( unstructuredRemittanceInformation: JsonField ) = apply { body.unstructuredRemittanceInformation(unstructuredRemittanceInformation) } + /** + * Determines who bears the cost of the drawdown request. Defaults to `shared` if not + * specified. + */ + fun chargeBearer(chargeBearer: ChargeBearer) = apply { body.chargeBearer(chargeBearer) } + + /** + * Sets [Builder.chargeBearer] to an arbitrary JSON value. + * + * You should usually call [Builder.chargeBearer] with a well-typed [ChargeBearer] value + * instead. This method is primarily for setting the field to an undocumented or not yet + * supported value. + */ + fun chargeBearer(chargeBearer: JsonField) = apply { + body.chargeBearer(chargeBearer) + } + /** The debtor's account number. */ fun debtorAccountNumber(debtorAccountNumber: String) = apply { body.debtorAccountNumber(debtorAccountNumber) @@ -590,6 +623,7 @@ private constructor( private val debtorAddress: JsonField, private val debtorName: JsonField, private val unstructuredRemittanceInformation: JsonField, + private val chargeBearer: JsonField, private val debtorAccountNumber: JsonField, private val debtorExternalAccountId: JsonField, private val debtorRoutingNumber: JsonField, @@ -618,6 +652,9 @@ private constructor( @JsonProperty("unstructured_remittance_information") @ExcludeMissing unstructuredRemittanceInformation: JsonField = JsonMissing.of(), + @JsonProperty("charge_bearer") + @ExcludeMissing + chargeBearer: JsonField = JsonMissing.of(), @JsonProperty("debtor_account_number") @ExcludeMissing debtorAccountNumber: JsonField = JsonMissing.of(), @@ -638,6 +675,7 @@ private constructor( debtorAddress, debtorName, unstructuredRemittanceInformation, + chargeBearer, debtorAccountNumber, debtorExternalAccountId, debtorRoutingNumber, @@ -702,6 +740,15 @@ private constructor( fun unstructuredRemittanceInformation(): String = unstructuredRemittanceInformation.getRequired("unstructured_remittance_information") + /** + * Determines who bears the cost of the drawdown request. Defaults to `shared` if not + * specified. + * + * @throws IncreaseInvalidDataException if the JSON field has an unexpected type (e.g. if + * the server responded with an unexpected value). + */ + fun chargeBearer(): Optional = chargeBearer.getOptional("charge_bearer") + /** * The debtor's account number. * @@ -807,6 +854,16 @@ private constructor( fun _unstructuredRemittanceInformation(): JsonField = unstructuredRemittanceInformation + /** + * Returns the raw JSON value of [chargeBearer]. + * + * Unlike [chargeBearer], this method doesn't throw if the JSON field has an unexpected + * type. + */ + @JsonProperty("charge_bearer") + @ExcludeMissing + fun _chargeBearer(): JsonField = chargeBearer + /** * Returns the raw JSON value of [debtorAccountNumber]. * @@ -888,6 +945,7 @@ private constructor( private var debtorAddress: JsonField? = null private var debtorName: JsonField? = null private var unstructuredRemittanceInformation: JsonField? = null + private var chargeBearer: JsonField = JsonMissing.of() private var debtorAccountNumber: JsonField = JsonMissing.of() private var debtorExternalAccountId: JsonField = JsonMissing.of() private var debtorRoutingNumber: JsonField = JsonMissing.of() @@ -903,6 +961,7 @@ private constructor( debtorAddress = body.debtorAddress debtorName = body.debtorName unstructuredRemittanceInformation = body.unstructuredRemittanceInformation + chargeBearer = body.chargeBearer debtorAccountNumber = body.debtorAccountNumber debtorExternalAccountId = body.debtorExternalAccountId debtorRoutingNumber = body.debtorRoutingNumber @@ -1008,6 +1067,23 @@ private constructor( unstructuredRemittanceInformation: JsonField ) = apply { this.unstructuredRemittanceInformation = unstructuredRemittanceInformation } + /** + * Determines who bears the cost of the drawdown request. Defaults to `shared` if not + * specified. + */ + fun chargeBearer(chargeBearer: ChargeBearer) = chargeBearer(JsonField.of(chargeBearer)) + + /** + * Sets [Builder.chargeBearer] to an arbitrary JSON value. + * + * You should usually call [Builder.chargeBearer] with a well-typed [ChargeBearer] value + * instead. This method is primarily for setting the field to an undocumented or not yet + * supported value. + */ + fun chargeBearer(chargeBearer: JsonField) = apply { + this.chargeBearer = chargeBearer + } + /** The debtor's account number. */ fun debtorAccountNumber(debtorAccountNumber: String) = debtorAccountNumber(JsonField.of(debtorAccountNumber)) @@ -1123,6 +1199,7 @@ private constructor( "unstructuredRemittanceInformation", unstructuredRemittanceInformation, ), + chargeBearer, debtorAccountNumber, debtorExternalAccountId, debtorRoutingNumber, @@ -1145,6 +1222,7 @@ private constructor( debtorAddress().validate() debtorName() unstructuredRemittanceInformation() + chargeBearer().ifPresent { it.validate() } debtorAccountNumber() debtorExternalAccountId() debtorRoutingNumber() @@ -1175,6 +1253,7 @@ private constructor( (debtorAddress.asKnown().getOrNull()?.validity() ?: 0) + (if (debtorName.asKnown().isPresent) 1 else 0) + (if (unstructuredRemittanceInformation.asKnown().isPresent) 1 else 0) + + (chargeBearer.asKnown().getOrNull()?.validity() ?: 0) + (if (debtorAccountNumber.asKnown().isPresent) 1 else 0) + (if (debtorExternalAccountId.asKnown().isPresent) 1 else 0) + (if (debtorRoutingNumber.asKnown().isPresent) 1 else 0) + @@ -1193,6 +1272,7 @@ private constructor( debtorAddress == other.debtorAddress && debtorName == other.debtorName && unstructuredRemittanceInformation == other.unstructuredRemittanceInformation && + chargeBearer == other.chargeBearer && debtorAccountNumber == other.debtorAccountNumber && debtorExternalAccountId == other.debtorExternalAccountId && debtorRoutingNumber == other.debtorRoutingNumber && @@ -1209,6 +1289,7 @@ private constructor( debtorAddress, debtorName, unstructuredRemittanceInformation, + chargeBearer, debtorAccountNumber, debtorExternalAccountId, debtorRoutingNumber, @@ -1220,7 +1301,7 @@ private constructor( override fun hashCode(): Int = hashCode override fun toString() = - "Body{accountNumberId=$accountNumberId, amount=$amount, creditorAddress=$creditorAddress, creditorName=$creditorName, debtorAddress=$debtorAddress, debtorName=$debtorName, unstructuredRemittanceInformation=$unstructuredRemittanceInformation, debtorAccountNumber=$debtorAccountNumber, debtorExternalAccountId=$debtorExternalAccountId, debtorRoutingNumber=$debtorRoutingNumber, endToEndIdentification=$endToEndIdentification, additionalProperties=$additionalProperties}" + "Body{accountNumberId=$accountNumberId, amount=$amount, creditorAddress=$creditorAddress, creditorName=$creditorName, debtorAddress=$debtorAddress, debtorName=$debtorName, unstructuredRemittanceInformation=$unstructuredRemittanceInformation, chargeBearer=$chargeBearer, debtorAccountNumber=$debtorAccountNumber, debtorExternalAccountId=$debtorExternalAccountId, debtorRoutingNumber=$debtorRoutingNumber, endToEndIdentification=$endToEndIdentification, additionalProperties=$additionalProperties}" } /** The creditor's address. */ @@ -1925,6 +2006,163 @@ private constructor( "DebtorAddress{city=$city, country=$country, line1=$line1, line2=$line2, postalCode=$postalCode, state=$state, additionalProperties=$additionalProperties}" } + /** + * Determines who bears the cost of the drawdown request. Defaults to `shared` if not specified. + */ + class ChargeBearer @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 { + + /** Charges are shared between the debtor and creditor. */ + @JvmField val SHARED = of("shared") + + /** Charges are borne by the debtor. */ + @JvmField val DEBTOR = of("debtor") + + /** Charges are borne by the creditor. */ + @JvmField val CREDITOR = of("creditor") + + /** Charges are determined by the service level. */ + @JvmField val SERVICE_LEVEL = of("service_level") + + @JvmStatic fun of(value: String) = ChargeBearer(JsonField.of(value)) + } + + /** An enum containing [ChargeBearer]'s known values. */ + enum class Known { + /** Charges are shared between the debtor and creditor. */ + SHARED, + /** Charges are borne by the debtor. */ + DEBTOR, + /** Charges are borne by the creditor. */ + CREDITOR, + /** Charges are determined by the service level. */ + SERVICE_LEVEL, + } + + /** + * An enum containing [ChargeBearer]'s known values, as well as an [_UNKNOWN] member. + * + * An instance of [ChargeBearer] 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 { + /** Charges are shared between the debtor and creditor. */ + SHARED, + /** Charges are borne by the debtor. */ + DEBTOR, + /** Charges are borne by the creditor. */ + CREDITOR, + /** Charges are determined by the service level. */ + SERVICE_LEVEL, + /** + * An enum member indicating that [ChargeBearer] 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) { + SHARED -> Value.SHARED + DEBTOR -> Value.DEBTOR + CREDITOR -> Value.CREDITOR + SERVICE_LEVEL -> Value.SERVICE_LEVEL + 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 IncreaseInvalidDataException if this class instance's value is a not a known + * member. + */ + fun known(): Known = + when (this) { + SHARED -> Known.SHARED + DEBTOR -> Known.DEBTOR + CREDITOR -> Known.CREDITOR + SERVICE_LEVEL -> Known.SERVICE_LEVEL + else -> throw IncreaseInvalidDataException("Unknown ChargeBearer: $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 IncreaseInvalidDataException if this class instance's value does not have the + * expected primitive type. + */ + fun asString(): String = + _value().asString().orElseThrow { + IncreaseInvalidDataException("Value is not a String") + } + + private var validated: Boolean = false + + fun validate(): ChargeBearer = apply { + if (validated) { + return@apply + } + + known() + validated = true + } + + fun isValid(): Boolean = + try { + validate() + true + } catch (e: IncreaseInvalidDataException) { + 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 ChargeBearer && value == other.value + } + + override fun hashCode() = value.hashCode() + + override fun toString() = value.toString() + } + override fun equals(other: Any?): Boolean { if (this === other) { return true diff --git a/increase-java-core/src/test/kotlin/com/increase/api/models/wiredrawdownrequests/WireDrawdownRequestCreateParamsTest.kt b/increase-java-core/src/test/kotlin/com/increase/api/models/wiredrawdownrequests/WireDrawdownRequestCreateParamsTest.kt index ae46fdbc6..4f40cb01f 100644 --- a/increase-java-core/src/test/kotlin/com/increase/api/models/wiredrawdownrequests/WireDrawdownRequestCreateParamsTest.kt +++ b/increase-java-core/src/test/kotlin/com/increase/api/models/wiredrawdownrequests/WireDrawdownRequestCreateParamsTest.kt @@ -35,6 +35,7 @@ internal class WireDrawdownRequestCreateParamsTest { ) .debtorName("Ian Crease") .unstructuredRemittanceInformation("Invoice 29582") + .chargeBearer(WireDrawdownRequestCreateParams.ChargeBearer.SHARED) .debtorAccountNumber("987654321") .debtorExternalAccountId("debtor_external_account_id") .debtorRoutingNumber("101050001") @@ -71,6 +72,7 @@ internal class WireDrawdownRequestCreateParamsTest { ) .debtorName("Ian Crease") .unstructuredRemittanceInformation("Invoice 29582") + .chargeBearer(WireDrawdownRequestCreateParams.ChargeBearer.SHARED) .debtorAccountNumber("987654321") .debtorExternalAccountId("debtor_external_account_id") .debtorRoutingNumber("101050001") @@ -106,6 +108,8 @@ internal class WireDrawdownRequestCreateParamsTest { ) assertThat(body.debtorName()).isEqualTo("Ian Crease") assertThat(body.unstructuredRemittanceInformation()).isEqualTo("Invoice 29582") + assertThat(body.chargeBearer()) + .contains(WireDrawdownRequestCreateParams.ChargeBearer.SHARED) assertThat(body.debtorAccountNumber()).contains("987654321") assertThat(body.debtorExternalAccountId()).contains("debtor_external_account_id") assertThat(body.debtorRoutingNumber()).contains("101050001") diff --git a/increase-java-core/src/test/kotlin/com/increase/api/services/async/WireDrawdownRequestServiceAsyncTest.kt b/increase-java-core/src/test/kotlin/com/increase/api/services/async/WireDrawdownRequestServiceAsyncTest.kt index 5fbafff88..5c5ea6c09 100644 --- a/increase-java-core/src/test/kotlin/com/increase/api/services/async/WireDrawdownRequestServiceAsyncTest.kt +++ b/increase-java-core/src/test/kotlin/com/increase/api/services/async/WireDrawdownRequestServiceAsyncTest.kt @@ -48,6 +48,7 @@ internal class WireDrawdownRequestServiceAsyncTest { ) .debtorName("Ian Crease") .unstructuredRemittanceInformation("Invoice 29582") + .chargeBearer(WireDrawdownRequestCreateParams.ChargeBearer.SHARED) .debtorAccountNumber("987654321") .debtorExternalAccountId("debtor_external_account_id") .debtorRoutingNumber("101050001") diff --git a/increase-java-core/src/test/kotlin/com/increase/api/services/blocking/WireDrawdownRequestServiceTest.kt b/increase-java-core/src/test/kotlin/com/increase/api/services/blocking/WireDrawdownRequestServiceTest.kt index cb7bac691..2c882f420 100644 --- a/increase-java-core/src/test/kotlin/com/increase/api/services/blocking/WireDrawdownRequestServiceTest.kt +++ b/increase-java-core/src/test/kotlin/com/increase/api/services/blocking/WireDrawdownRequestServiceTest.kt @@ -48,6 +48,7 @@ internal class WireDrawdownRequestServiceTest { ) .debtorName("Ian Crease") .unstructuredRemittanceInformation("Invoice 29582") + .chargeBearer(WireDrawdownRequestCreateParams.ChargeBearer.SHARED) .debtorAccountNumber("987654321") .debtorExternalAccountId("debtor_external_account_id") .debtorRoutingNumber("101050001")