diff --git a/.release-please-manifest.json b/.release-please-manifest.json index b4da64f27..4a1242df8 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.132.0" + ".": "0.133.0" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index a57158191..4f5b5f067 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 214 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/lithic/lithic-59c09c7355b21b663e001d2ee1086ebd0a70d9b5433823282bca296eedff9eb0.yml -openapi_spec_hash: d9c3b932c810809abc6e973d662ad376 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/lithic/lithic-9c9038d362c6a423011de6cfe5bf4a93ca2ea6e6991327583c4dcc47ceb8d7e3.yml +openapi_spec_hash: c2acf17ac5eb3d9e11f86c57a0af3cb3 config_hash: 337a99d8cc30006358b7bc2531401669 diff --git a/CHANGELOG.md b/CHANGELOG.md index e62e0e027..f448ed49f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,27 @@ # Changelog +## 0.133.0 (2026-08-10) + +Full Changelog: [v0.132.0...v0.133.0](https://github.com/lithic-com/lithic-java/compare/v0.132.0...v0.133.0) + +### Features + +* **api:** add blockchain_addresses field to FinancialAccount and webhook events ([3ac1807](https://github.com/lithic-com/lithic-java/commit/3ac18071466c0d8e43570f4cdf878ec1a506a40c)) +* **api:** add limitCashAmount/limitCashCount fields to VelocityLimitParams ([9507834](https://github.com/lithic-com/lithic-java/commit/9507834f2c34614684d100e960b40a1dca2ce9c5)) +* **api:** add PROGRAM scope to AchPayment/CardTransaction, entity types to Case ([cd6e1c3](https://github.com/lithic-com/lithic-java/commit/cd6e1c3244d56d6c37ea9806d4de572a19ca5244)) +* **api:** add stablecoin event types to FinancialEvent/Payment/StatementLineItems ([46fa6f1](https://github.com/lithic-com/lithic-java/commit/46fa6f1495cab9c378cf03932090cb6710fff7ed)) +* **api:** Add STABLECOIN to approvals request and transfer type enums ([3b3dd7a](https://github.com/lithic-com/lithic-java/commit/3b3dd7ae05e57fd7d4112db5dab1a752cdacbe72)) + + +### Chores + +* **internal:** codegen related update ([39e4623](https://github.com/lithic-com/lithic-java/commit/39e4623d63b58bc9f048cc6a2592e657cf1706b8)) + + +### Documentation + +* **api:** update CVV field descriptions to note AMEX uses 4 digits ([2892515](https://github.com/lithic-com/lithic-java/commit/28925154b2b09da8cfc8e8a01d38886698df0156)) + ## 0.132.0 (2026-08-03) Full Changelog: [v0.131.0...v0.132.0](https://github.com/lithic-com/lithic-java/compare/v0.131.0...v0.132.0) diff --git a/README.md b/README.md index e0cf94193..067a2deca 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,8 @@ -[![Maven Central](https://img.shields.io/maven-central/v/com.lithic.api/lithic-java)](https://central.sonatype.com/artifact/com.lithic.api/lithic-java/0.132.0) -[![javadoc](https://javadoc.io/badge2/com.lithic.api/lithic-java/0.132.0/javadoc.svg)](https://javadoc.io/doc/com.lithic.api/lithic-java/0.132.0) +[![Maven Central](https://img.shields.io/maven-central/v/com.lithic.api/lithic-java)](https://central.sonatype.com/artifact/com.lithic.api/lithic-java/0.133.0) +[![javadoc](https://javadoc.io/badge2/com.lithic.api/lithic-java/0.133.0/javadoc.svg)](https://javadoc.io/doc/com.lithic.api/lithic-java/0.133.0) @@ -22,7 +22,7 @@ Use the Lithic MCP Server to enable AI assistants to interact with this API, all -The REST API documentation can be found on [docs.lithic.com](https://docs.lithic.com). Javadocs are available on [javadoc.io](https://javadoc.io/doc/com.lithic.api/lithic-java/0.132.0). +The REST API documentation can be found on [docs.lithic.com](https://docs.lithic.com). Javadocs are available on [javadoc.io](https://javadoc.io/doc/com.lithic.api/lithic-java/0.133.0). @@ -33,7 +33,7 @@ The REST API documentation can be found on [docs.lithic.com](https://docs.lithic ### Gradle ```kotlin -implementation("com.lithic.api:lithic-java:0.132.0") +implementation("com.lithic.api:lithic-java:0.133.0") ``` ### Maven @@ -42,7 +42,7 @@ implementation("com.lithic.api:lithic-java:0.132.0") com.lithic.api lithic-java - 0.132.0 + 0.133.0 ``` diff --git a/build.gradle.kts b/build.gradle.kts index 3f9804eaf..9d85f0e19 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,7 +8,7 @@ repositories { allprojects { group = "com.lithic.api" - version = "0.132.0" // x-release-please-version + version = "0.133.0" // x-release-please-version } subprojects { diff --git a/lithic-java-core/src/main/kotlin/com/lithic/api/models/AchPaymentUpdateAction.kt b/lithic-java-core/src/main/kotlin/com/lithic/api/models/AchPaymentUpdateAction.kt index c4a6a5e6c..70e3bc0f3 100644 --- a/lithic-java-core/src/main/kotlin/com/lithic/api/models/AchPaymentUpdateAction.kt +++ b/lithic-java-core/src/main/kotlin/com/lithic/api/models/AchPaymentUpdateAction.kt @@ -862,12 +862,15 @@ private constructor( @JvmField val FINANCIAL_ACCOUNT = of("FINANCIAL_ACCOUNT") + @JvmField val PROGRAM = of("PROGRAM") + @JvmStatic fun of(value: String) = Scope(JsonField.of(value)) } /** An enum containing [Scope]'s known values. */ enum class Known { - FINANCIAL_ACCOUNT + FINANCIAL_ACCOUNT, + PROGRAM, } /** @@ -881,6 +884,7 @@ private constructor( */ enum class Value { FINANCIAL_ACCOUNT, + PROGRAM, /** * An enum member indicating that [Scope] was instantiated with an unknown value. */ @@ -897,6 +901,7 @@ private constructor( fun value(): Value = when (this) { FINANCIAL_ACCOUNT -> Value.FINANCIAL_ACCOUNT + PROGRAM -> Value.PROGRAM else -> Value._UNKNOWN } @@ -912,6 +917,7 @@ private constructor( fun known(): Known = when (this) { FINANCIAL_ACCOUNT -> Known.FINANCIAL_ACCOUNT + PROGRAM -> Known.PROGRAM else -> throw LithicInvalidDataException("Unknown Scope: $value") } diff --git a/lithic-java-core/src/main/kotlin/com/lithic/api/models/Card.kt b/lithic-java-core/src/main/kotlin/com/lithic/api/models/Card.kt index 3a5dc5710..86cb54599 100644 --- a/lithic-java-core/src/main/kotlin/com/lithic/api/models/Card.kt +++ b/lithic-java-core/src/main/kotlin/com/lithic/api/models/Card.kt @@ -434,7 +434,7 @@ private constructor( fun substatus(): Optional = substatus.getOptional("substatus") /** - * Three digit cvv printed on the back of the card. + * Three or four digit CVV printed on the card. Amex cards use four digit CVVs * * @throws LithicInvalidDataException if the JSON field has an unexpected type (e.g. if the * server responded with an unexpected value). @@ -1241,7 +1241,7 @@ private constructor( this.substatus = substatus } - /** Three digit cvv printed on the back of the card. */ + /** Three or four digit CVV printed on the card. Amex cards use four digit CVVs */ fun cvv(cvv: String) = cvv(JsonField.of(cvv)) /** diff --git a/lithic-java-core/src/main/kotlin/com/lithic/api/models/CardTransactionUpdateAction.kt b/lithic-java-core/src/main/kotlin/com/lithic/api/models/CardTransactionUpdateAction.kt index 52b12b4bc..e165eba49 100644 --- a/lithic-java-core/src/main/kotlin/com/lithic/api/models/CardTransactionUpdateAction.kt +++ b/lithic-java-core/src/main/kotlin/com/lithic/api/models/CardTransactionUpdateAction.kt @@ -866,6 +866,8 @@ private constructor( @JvmField val ACCOUNT = of("ACCOUNT") + @JvmField val PROGRAM = of("PROGRAM") + @JvmStatic fun of(value: String) = Scope(JsonField.of(value)) } @@ -873,6 +875,7 @@ private constructor( enum class Known { CARD, ACCOUNT, + PROGRAM, } /** @@ -887,6 +890,7 @@ private constructor( enum class Value { CARD, ACCOUNT, + PROGRAM, /** * An enum member indicating that [Scope] was instantiated with an unknown value. */ @@ -904,6 +908,7 @@ private constructor( when (this) { CARD -> Value.CARD ACCOUNT -> Value.ACCOUNT + PROGRAM -> Value.PROGRAM else -> Value._UNKNOWN } @@ -920,6 +925,7 @@ private constructor( when (this) { CARD -> Known.CARD ACCOUNT -> Known.ACCOUNT + PROGRAM -> Known.PROGRAM else -> throw LithicInvalidDataException("Unknown Scope: $value") } diff --git a/lithic-java-core/src/main/kotlin/com/lithic/api/models/CaseEntity.kt b/lithic-java-core/src/main/kotlin/com/lithic/api/models/CaseEntity.kt index 62944dff2..b04662a78 100644 --- a/lithic-java-core/src/main/kotlin/com/lithic/api/models/CaseEntity.kt +++ b/lithic-java-core/src/main/kotlin/com/lithic/api/models/CaseEntity.kt @@ -15,6 +15,7 @@ import com.lithic.api.core.checkRequired import com.lithic.api.errors.LithicInvalidDataException import java.util.Collections import java.util.Objects +import java.util.Optional import kotlin.jvm.optionals.getOrNull /** The entity a case is associated with */ @@ -37,17 +38,21 @@ private constructor( ) : this(entityToken, entityType, mutableMapOf()) /** - * Globally unique identifier for the associated entity + * Globally unique identifier for the associated entity: the card token for `CARD`, the account + * token for `ACCOUNT`, and the financial account token for `FINANCIAL_ACCOUNT`. Null for + * `PROGRAM`, which is not scoped to an individual entity * - * @throws LithicInvalidDataException if the JSON field has an unexpected type or is - * unexpectedly missing or null (e.g. if the server responded with an unexpected value). + * @throws LithicInvalidDataException if the JSON field has an unexpected type (e.g. if the + * server responded with an unexpected value). */ - fun entityToken(): String = entityToken.getRequired("entity_token") + fun entityToken(): Optional = entityToken.getOptional("entity_token") /** * The type of entity a case is associated with: * - `CARD` - The case is associated with a card * - `ACCOUNT` - The case is associated with an account + * - `FINANCIAL_ACCOUNT` - The case is associated with a financial account + * - `PROGRAM` - The case is associated with the whole program * * @throws LithicInvalidDataException if the JSON field has an unexpected type or is * unexpectedly missing or null (e.g. if the server responded with an unexpected value). @@ -112,8 +117,15 @@ private constructor( additionalProperties = caseEntity.additionalProperties.toMutableMap() } - /** Globally unique identifier for the associated entity */ - fun entityToken(entityToken: String) = entityToken(JsonField.of(entityToken)) + /** + * Globally unique identifier for the associated entity: the card token for `CARD`, the + * account token for `ACCOUNT`, and the financial account token for `FINANCIAL_ACCOUNT`. + * Null for `PROGRAM`, which is not scoped to an individual entity + */ + fun entityToken(entityToken: String?) = entityToken(JsonField.ofNullable(entityToken)) + + /** Alias for calling [Builder.entityToken] with `entityToken.orElse(null)`. */ + fun entityToken(entityToken: Optional) = entityToken(entityToken.getOrNull()) /** * Sets [Builder.entityToken] to an arbitrary JSON value. @@ -128,6 +140,8 @@ private constructor( * The type of entity a case is associated with: * - `CARD` - The case is associated with a card * - `ACCOUNT` - The case is associated with an account + * - `FINANCIAL_ACCOUNT` - The case is associated with a financial account + * - `PROGRAM` - The case is associated with the whole program */ fun entityType(entityType: EntityType2) = entityType(JsonField.of(entityType)) @@ -222,6 +236,8 @@ private constructor( * The type of entity a case is associated with: * - `CARD` - The case is associated with a card * - `ACCOUNT` - The case is associated with an account + * - `FINANCIAL_ACCOUNT` - The case is associated with a financial account + * - `PROGRAM` - The case is associated with the whole program */ class EntityType2 @JsonCreator private constructor(private val value: JsonField) : Enum { @@ -242,6 +258,10 @@ private constructor( @JvmField val ACCOUNT = of("ACCOUNT") + @JvmField val FINANCIAL_ACCOUNT = of("FINANCIAL_ACCOUNT") + + @JvmField val PROGRAM = of("PROGRAM") + @JvmStatic fun of(value: String) = EntityType2(JsonField.of(value)) } @@ -249,6 +269,8 @@ private constructor( enum class Known { CARD, ACCOUNT, + FINANCIAL_ACCOUNT, + PROGRAM, } /** @@ -263,6 +285,8 @@ private constructor( enum class Value { CARD, ACCOUNT, + FINANCIAL_ACCOUNT, + PROGRAM, /** * An enum member indicating that [EntityType2] was instantiated with an unknown value. */ @@ -280,6 +304,8 @@ private constructor( when (this) { CARD -> Value.CARD ACCOUNT -> Value.ACCOUNT + FINANCIAL_ACCOUNT -> Value.FINANCIAL_ACCOUNT + PROGRAM -> Value.PROGRAM else -> Value._UNKNOWN } @@ -296,6 +322,8 @@ private constructor( when (this) { CARD -> Known.CARD ACCOUNT -> Known.ACCOUNT + FINANCIAL_ACCOUNT -> Known.FINANCIAL_ACCOUNT + PROGRAM -> Known.PROGRAM else -> throw LithicInvalidDataException("Unknown EntityType2: $value") } diff --git a/lithic-java-core/src/main/kotlin/com/lithic/api/models/FinancialAccount.kt b/lithic-java-core/src/main/kotlin/com/lithic/api/models/FinancialAccount.kt index 74626780e..adde279ae 100644 --- a/lithic-java-core/src/main/kotlin/com/lithic/api/models/FinancialAccount.kt +++ b/lithic-java-core/src/main/kotlin/com/lithic/api/models/FinancialAccount.kt @@ -12,6 +12,7 @@ import com.lithic.api.core.JsonField import com.lithic.api.core.JsonMissing import com.lithic.api.core.JsonValue import com.lithic.api.core.checkRequired +import com.lithic.api.core.toImmutable import com.lithic.api.errors.LithicInvalidDataException import java.time.OffsetDateTime import java.util.Collections @@ -34,6 +35,7 @@ private constructor( private val updated: JsonField, private val userDefinedStatus: JsonField, private val accountNumber: JsonField, + private val blockchainAddresses: JsonField, private val routingNumber: JsonField, private val additionalProperties: MutableMap, ) { @@ -70,6 +72,9 @@ private constructor( @JsonProperty("account_number") @ExcludeMissing accountNumber: JsonField = JsonMissing.of(), + @JsonProperty("blockchain_addresses") + @ExcludeMissing + blockchainAddresses: JsonField = JsonMissing.of(), @JsonProperty("routing_number") @ExcludeMissing routingNumber: JsonField = JsonMissing.of(), @@ -86,6 +91,7 @@ private constructor( updated, userDefinedStatus, accountNumber, + blockchainAddresses, routingNumber, mutableMapOf(), ) @@ -173,6 +179,16 @@ private constructor( */ fun accountNumber(): Optional = accountNumber.getOptional("account_number") + /** + * Provisioned blockchain deposit addresses for this financial account, keyed by the full name + * of the blockchain network that each address belongs to (e.g. `ETHEREUM`) + * + * @throws LithicInvalidDataException if the JSON field has an unexpected type (e.g. if the + * server responded with an unexpected value). + */ + fun blockchainAddresses(): Optional = + blockchainAddresses.getOptional("blockchain_addresses") + /** * @throws LithicInvalidDataException if the JSON field has an unexpected type (e.g. if the * server responded with an unexpected value). @@ -279,6 +295,16 @@ private constructor( @ExcludeMissing fun _accountNumber(): JsonField = accountNumber + /** + * Returns the raw JSON value of [blockchainAddresses]. + * + * Unlike [blockchainAddresses], this method doesn't throw if the JSON field has an unexpected + * type. + */ + @JsonProperty("blockchain_addresses") + @ExcludeMissing + fun _blockchainAddresses(): JsonField = blockchainAddresses + /** * Returns the raw JSON value of [routingNumber]. * @@ -338,6 +364,7 @@ private constructor( private var updated: JsonField? = null private var userDefinedStatus: JsonField? = null private var accountNumber: JsonField = JsonMissing.of() + private var blockchainAddresses: JsonField = JsonMissing.of() private var routingNumber: JsonField = JsonMissing.of() private var additionalProperties: MutableMap = mutableMapOf() @@ -355,6 +382,7 @@ private constructor( updated = financialAccount.updated userDefinedStatus = financialAccount.userDefinedStatus accountNumber = financialAccount.accountNumber + blockchainAddresses = financialAccount.blockchainAddresses routingNumber = financialAccount.routingNumber additionalProperties = financialAccount.additionalProperties.toMutableMap() } @@ -534,6 +562,30 @@ private constructor( this.accountNumber = accountNumber } + /** + * Provisioned blockchain deposit addresses for this financial account, keyed by the full + * name of the blockchain network that each address belongs to (e.g. `ETHEREUM`) + */ + fun blockchainAddresses(blockchainAddresses: BlockchainAddresses?) = + blockchainAddresses(JsonField.ofNullable(blockchainAddresses)) + + /** + * Alias for calling [Builder.blockchainAddresses] with `blockchainAddresses.orElse(null)`. + */ + fun blockchainAddresses(blockchainAddresses: Optional) = + blockchainAddresses(blockchainAddresses.getOrNull()) + + /** + * Sets [Builder.blockchainAddresses] to an arbitrary JSON value. + * + * You should usually call [Builder.blockchainAddresses] with a well-typed + * [BlockchainAddresses] value instead. This method is primarily for setting the field to an + * undocumented or not yet supported value. + */ + fun blockchainAddresses(blockchainAddresses: JsonField) = apply { + this.blockchainAddresses = blockchainAddresses + } + fun routingNumber(routingNumber: String?) = routingNumber(JsonField.ofNullable(routingNumber)) @@ -607,6 +659,7 @@ private constructor( checkRequired("updated", updated), checkRequired("userDefinedStatus", userDefinedStatus), accountNumber, + blockchainAddresses, routingNumber, additionalProperties.toMutableMap(), ) @@ -639,6 +692,7 @@ private constructor( updated() userDefinedStatus() accountNumber() + blockchainAddresses().ifPresent { it.validate() } routingNumber() validated = true } @@ -670,6 +724,7 @@ private constructor( (if (updated.asKnown().isPresent) 1 else 0) + (if (userDefinedStatus.asKnown().isPresent) 1 else 0) + (if (accountNumber.asKnown().isPresent) 1 else 0) + + (blockchainAddresses.asKnown().getOrNull()?.validity() ?: 0) + (if (routingNumber.asKnown().isPresent) 1 else 0) class FinancialAccountCreditConfig @@ -1776,6 +1831,120 @@ private constructor( override fun toString() = value.toString() } + /** + * Provisioned blockchain deposit addresses for this financial account, keyed by the full name + * of the blockchain network that each address belongs to (e.g. `ETHEREUM`) + */ + class BlockchainAddresses + @JsonCreator + private constructor( + @com.fasterxml.jackson.annotation.JsonValue + private val additionalProperties: Map + ) { + + @JsonAnyGetter + @ExcludeMissing + fun _additionalProperties(): Map = additionalProperties + + fun toBuilder() = Builder().from(this) + + companion object { + + /** Returns a mutable builder for constructing an instance of [BlockchainAddresses]. */ + @JvmStatic fun builder() = Builder() + } + + /** A builder for [BlockchainAddresses]. */ + class Builder internal constructor() { + + private var additionalProperties: MutableMap = mutableMapOf() + + @JvmSynthetic + internal fun from(blockchainAddresses: BlockchainAddresses) = apply { + additionalProperties = blockchainAddresses.additionalProperties.toMutableMap() + } + + 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 [BlockchainAddresses]. + * + * Further updates to this [Builder] will not mutate the returned instance. + */ + fun build(): BlockchainAddresses = + BlockchainAddresses(additionalProperties.toImmutable()) + } + + 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 LithicInvalidDataException if any value type in this object doesn't match its + * expected type. + */ + fun validate(): BlockchainAddresses = apply { + if (validated) { + return@apply + } + + validated = true + } + + fun isValid(): Boolean = + try { + validate() + true + } catch (e: LithicInvalidDataException) { + 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 = + additionalProperties.count { (_, value) -> !value.isNull() && !value.isMissing() } + + override fun equals(other: Any?): Boolean { + if (this === other) { + return true + } + + return other is BlockchainAddresses && + additionalProperties == other.additionalProperties + } + + private val hashCode: Int by lazy { Objects.hash(additionalProperties) } + + override fun hashCode(): Int = hashCode + + override fun toString() = "BlockchainAddresses{additionalProperties=$additionalProperties}" + } + override fun equals(other: Any?): Boolean { if (this === other) { return true @@ -1794,6 +1963,7 @@ private constructor( updated == other.updated && userDefinedStatus == other.userDefinedStatus && accountNumber == other.accountNumber && + blockchainAddresses == other.blockchainAddresses && routingNumber == other.routingNumber && additionalProperties == other.additionalProperties } @@ -1812,6 +1982,7 @@ private constructor( updated, userDefinedStatus, accountNumber, + blockchainAddresses, routingNumber, additionalProperties, ) @@ -1820,5 +1991,5 @@ private constructor( override fun hashCode(): Int = hashCode override fun toString() = - "FinancialAccount{token=$token, accountToken=$accountToken, created=$created, creditConfiguration=$creditConfiguration, isForBenefitOf=$isForBenefitOf, nickname=$nickname, status=$status, substatus=$substatus, type=$type, updated=$updated, userDefinedStatus=$userDefinedStatus, accountNumber=$accountNumber, routingNumber=$routingNumber, additionalProperties=$additionalProperties}" + "FinancialAccount{token=$token, accountToken=$accountToken, created=$created, creditConfiguration=$creditConfiguration, isForBenefitOf=$isForBenefitOf, nickname=$nickname, status=$status, substatus=$substatus, type=$type, updated=$updated, userDefinedStatus=$userDefinedStatus, accountNumber=$accountNumber, blockchainAddresses=$blockchainAddresses, routingNumber=$routingNumber, additionalProperties=$additionalProperties}" } diff --git a/lithic-java-core/src/main/kotlin/com/lithic/api/models/FinancialAccountCreatedWebhookEvent.kt b/lithic-java-core/src/main/kotlin/com/lithic/api/models/FinancialAccountCreatedWebhookEvent.kt index 1e252bc70..d6d9b5a6f 100644 --- a/lithic-java-core/src/main/kotlin/com/lithic/api/models/FinancialAccountCreatedWebhookEvent.kt +++ b/lithic-java-core/src/main/kotlin/com/lithic/api/models/FinancialAccountCreatedWebhookEvent.kt @@ -34,6 +34,7 @@ private constructor( private val updated: JsonField, private val userDefinedStatus: JsonField, private val accountNumber: JsonField, + private val blockchainAddresses: JsonField, private val routingNumber: JsonField, private val eventType: JsonField, private val additionalProperties: MutableMap, @@ -74,6 +75,9 @@ private constructor( @JsonProperty("account_number") @ExcludeMissing accountNumber: JsonField = JsonMissing.of(), + @JsonProperty("blockchain_addresses") + @ExcludeMissing + blockchainAddresses: JsonField = JsonMissing.of(), @JsonProperty("routing_number") @ExcludeMissing routingNumber: JsonField = JsonMissing.of(), @@ -93,6 +97,7 @@ private constructor( updated, userDefinedStatus, accountNumber, + blockchainAddresses, routingNumber, eventType, mutableMapOf(), @@ -112,6 +117,7 @@ private constructor( .updated(updated) .userDefinedStatus(userDefinedStatus) .accountNumber(accountNumber) + .blockchainAddresses(blockchainAddresses) .routingNumber(routingNumber) .build() @@ -199,6 +205,16 @@ private constructor( */ fun accountNumber(): Optional = accountNumber.getOptional("account_number") + /** + * Provisioned blockchain deposit addresses for this financial account, keyed by the full name + * of the blockchain network that each address belongs to (e.g. `ETHEREUM`) + * + * @throws LithicInvalidDataException if the JSON field has an unexpected type (e.g. if the + * server responded with an unexpected value). + */ + fun blockchainAddresses(): Optional = + blockchainAddresses.getOptional("blockchain_addresses") + /** * @throws LithicInvalidDataException if the JSON field has an unexpected type (e.g. if the * server responded with an unexpected value). @@ -314,6 +330,17 @@ private constructor( @ExcludeMissing fun _accountNumber(): JsonField = accountNumber + /** + * Returns the raw JSON value of [blockchainAddresses]. + * + * Unlike [blockchainAddresses], this method doesn't throw if the JSON field has an unexpected + * type. + */ + @JsonProperty("blockchain_addresses") + @ExcludeMissing + fun _blockchainAddresses(): JsonField = + blockchainAddresses + /** * Returns the raw JSON value of [routingNumber]. * @@ -383,6 +410,8 @@ private constructor( private var updated: JsonField? = null private var userDefinedStatus: JsonField? = null private var accountNumber: JsonField = JsonMissing.of() + private var blockchainAddresses: JsonField = + JsonMissing.of() private var routingNumber: JsonField = JsonMissing.of() private var eventType: JsonField? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -403,6 +432,7 @@ private constructor( updated = financialAccountCreatedWebhookEvent.updated userDefinedStatus = financialAccountCreatedWebhookEvent.userDefinedStatus accountNumber = financialAccountCreatedWebhookEvent.accountNumber + blockchainAddresses = financialAccountCreatedWebhookEvent.blockchainAddresses routingNumber = financialAccountCreatedWebhookEvent.routingNumber eventType = financialAccountCreatedWebhookEvent.eventType additionalProperties = @@ -588,6 +618,31 @@ private constructor( this.accountNumber = accountNumber } + /** + * Provisioned blockchain deposit addresses for this financial account, keyed by the full + * name of the blockchain network that each address belongs to (e.g. `ETHEREUM`) + */ + fun blockchainAddresses(blockchainAddresses: FinancialAccount.BlockchainAddresses?) = + blockchainAddresses(JsonField.ofNullable(blockchainAddresses)) + + /** + * Alias for calling [Builder.blockchainAddresses] with `blockchainAddresses.orElse(null)`. + */ + fun blockchainAddresses( + blockchainAddresses: Optional + ) = blockchainAddresses(blockchainAddresses.getOrNull()) + + /** + * Sets [Builder.blockchainAddresses] to an arbitrary JSON value. + * + * You should usually call [Builder.blockchainAddresses] with a well-typed + * [FinancialAccount.BlockchainAddresses] value instead. This method is primarily for + * setting the field to an undocumented or not yet supported value. + */ + fun blockchainAddresses( + blockchainAddresses: JsonField + ) = apply { this.blockchainAddresses = blockchainAddresses } + fun routingNumber(routingNumber: String?) = routingNumber(JsonField.ofNullable(routingNumber)) @@ -674,6 +729,7 @@ private constructor( checkRequired("updated", updated), checkRequired("userDefinedStatus", userDefinedStatus), accountNumber, + blockchainAddresses, routingNumber, checkRequired("eventType", eventType), additionalProperties.toMutableMap(), @@ -707,6 +763,7 @@ private constructor( updated() userDefinedStatus() accountNumber() + blockchainAddresses().ifPresent { it.validate() } routingNumber() eventType().validate() validated = true @@ -739,6 +796,7 @@ private constructor( (if (updated.asKnown().isPresent) 1 else 0) + (if (userDefinedStatus.asKnown().isPresent) 1 else 0) + (if (accountNumber.asKnown().isPresent) 1 else 0) + + (blockchainAddresses.asKnown().getOrNull()?.validity() ?: 0) + (if (routingNumber.asKnown().isPresent) 1 else 0) + (eventType.asKnown().getOrNull()?.validity() ?: 0) @@ -891,6 +949,7 @@ private constructor( updated == other.updated && userDefinedStatus == other.userDefinedStatus && accountNumber == other.accountNumber && + blockchainAddresses == other.blockchainAddresses && routingNumber == other.routingNumber && eventType == other.eventType && additionalProperties == other.additionalProperties @@ -910,6 +969,7 @@ private constructor( updated, userDefinedStatus, accountNumber, + blockchainAddresses, routingNumber, eventType, additionalProperties, @@ -919,5 +979,5 @@ private constructor( override fun hashCode(): Int = hashCode override fun toString() = - "FinancialAccountCreatedWebhookEvent{token=$token, accountToken=$accountToken, created=$created, creditConfiguration=$creditConfiguration, isForBenefitOf=$isForBenefitOf, nickname=$nickname, status=$status, substatus=$substatus, type=$type, updated=$updated, userDefinedStatus=$userDefinedStatus, accountNumber=$accountNumber, routingNumber=$routingNumber, eventType=$eventType, additionalProperties=$additionalProperties}" + "FinancialAccountCreatedWebhookEvent{token=$token, accountToken=$accountToken, created=$created, creditConfiguration=$creditConfiguration, isForBenefitOf=$isForBenefitOf, nickname=$nickname, status=$status, substatus=$substatus, type=$type, updated=$updated, userDefinedStatus=$userDefinedStatus, accountNumber=$accountNumber, blockchainAddresses=$blockchainAddresses, routingNumber=$routingNumber, eventType=$eventType, additionalProperties=$additionalProperties}" } diff --git a/lithic-java-core/src/main/kotlin/com/lithic/api/models/FinancialAccountUpdatedWebhookEvent.kt b/lithic-java-core/src/main/kotlin/com/lithic/api/models/FinancialAccountUpdatedWebhookEvent.kt index 48d29c4ca..7c46e82a3 100644 --- a/lithic-java-core/src/main/kotlin/com/lithic/api/models/FinancialAccountUpdatedWebhookEvent.kt +++ b/lithic-java-core/src/main/kotlin/com/lithic/api/models/FinancialAccountUpdatedWebhookEvent.kt @@ -34,6 +34,7 @@ private constructor( private val updated: JsonField, private val userDefinedStatus: JsonField, private val accountNumber: JsonField, + private val blockchainAddresses: JsonField, private val routingNumber: JsonField, private val eventType: JsonField, private val additionalProperties: MutableMap, @@ -74,6 +75,9 @@ private constructor( @JsonProperty("account_number") @ExcludeMissing accountNumber: JsonField = JsonMissing.of(), + @JsonProperty("blockchain_addresses") + @ExcludeMissing + blockchainAddresses: JsonField = JsonMissing.of(), @JsonProperty("routing_number") @ExcludeMissing routingNumber: JsonField = JsonMissing.of(), @@ -93,6 +97,7 @@ private constructor( updated, userDefinedStatus, accountNumber, + blockchainAddresses, routingNumber, eventType, mutableMapOf(), @@ -112,6 +117,7 @@ private constructor( .updated(updated) .userDefinedStatus(userDefinedStatus) .accountNumber(accountNumber) + .blockchainAddresses(blockchainAddresses) .routingNumber(routingNumber) .build() @@ -199,6 +205,16 @@ private constructor( */ fun accountNumber(): Optional = accountNumber.getOptional("account_number") + /** + * Provisioned blockchain deposit addresses for this financial account, keyed by the full name + * of the blockchain network that each address belongs to (e.g. `ETHEREUM`) + * + * @throws LithicInvalidDataException if the JSON field has an unexpected type (e.g. if the + * server responded with an unexpected value). + */ + fun blockchainAddresses(): Optional = + blockchainAddresses.getOptional("blockchain_addresses") + /** * @throws LithicInvalidDataException if the JSON field has an unexpected type (e.g. if the * server responded with an unexpected value). @@ -314,6 +330,17 @@ private constructor( @ExcludeMissing fun _accountNumber(): JsonField = accountNumber + /** + * Returns the raw JSON value of [blockchainAddresses]. + * + * Unlike [blockchainAddresses], this method doesn't throw if the JSON field has an unexpected + * type. + */ + @JsonProperty("blockchain_addresses") + @ExcludeMissing + fun _blockchainAddresses(): JsonField = + blockchainAddresses + /** * Returns the raw JSON value of [routingNumber]. * @@ -383,6 +410,8 @@ private constructor( private var updated: JsonField? = null private var userDefinedStatus: JsonField? = null private var accountNumber: JsonField = JsonMissing.of() + private var blockchainAddresses: JsonField = + JsonMissing.of() private var routingNumber: JsonField = JsonMissing.of() private var eventType: JsonField? = null private var additionalProperties: MutableMap = mutableMapOf() @@ -403,6 +432,7 @@ private constructor( updated = financialAccountUpdatedWebhookEvent.updated userDefinedStatus = financialAccountUpdatedWebhookEvent.userDefinedStatus accountNumber = financialAccountUpdatedWebhookEvent.accountNumber + blockchainAddresses = financialAccountUpdatedWebhookEvent.blockchainAddresses routingNumber = financialAccountUpdatedWebhookEvent.routingNumber eventType = financialAccountUpdatedWebhookEvent.eventType additionalProperties = @@ -588,6 +618,31 @@ private constructor( this.accountNumber = accountNumber } + /** + * Provisioned blockchain deposit addresses for this financial account, keyed by the full + * name of the blockchain network that each address belongs to (e.g. `ETHEREUM`) + */ + fun blockchainAddresses(blockchainAddresses: FinancialAccount.BlockchainAddresses?) = + blockchainAddresses(JsonField.ofNullable(blockchainAddresses)) + + /** + * Alias for calling [Builder.blockchainAddresses] with `blockchainAddresses.orElse(null)`. + */ + fun blockchainAddresses( + blockchainAddresses: Optional + ) = blockchainAddresses(blockchainAddresses.getOrNull()) + + /** + * Sets [Builder.blockchainAddresses] to an arbitrary JSON value. + * + * You should usually call [Builder.blockchainAddresses] with a well-typed + * [FinancialAccount.BlockchainAddresses] value instead. This method is primarily for + * setting the field to an undocumented or not yet supported value. + */ + fun blockchainAddresses( + blockchainAddresses: JsonField + ) = apply { this.blockchainAddresses = blockchainAddresses } + fun routingNumber(routingNumber: String?) = routingNumber(JsonField.ofNullable(routingNumber)) @@ -674,6 +729,7 @@ private constructor( checkRequired("updated", updated), checkRequired("userDefinedStatus", userDefinedStatus), accountNumber, + blockchainAddresses, routingNumber, checkRequired("eventType", eventType), additionalProperties.toMutableMap(), @@ -707,6 +763,7 @@ private constructor( updated() userDefinedStatus() accountNumber() + blockchainAddresses().ifPresent { it.validate() } routingNumber() eventType().validate() validated = true @@ -739,6 +796,7 @@ private constructor( (if (updated.asKnown().isPresent) 1 else 0) + (if (userDefinedStatus.asKnown().isPresent) 1 else 0) + (if (accountNumber.asKnown().isPresent) 1 else 0) + + (blockchainAddresses.asKnown().getOrNull()?.validity() ?: 0) + (if (routingNumber.asKnown().isPresent) 1 else 0) + (eventType.asKnown().getOrNull()?.validity() ?: 0) @@ -891,6 +949,7 @@ private constructor( updated == other.updated && userDefinedStatus == other.userDefinedStatus && accountNumber == other.accountNumber && + blockchainAddresses == other.blockchainAddresses && routingNumber == other.routingNumber && eventType == other.eventType && additionalProperties == other.additionalProperties @@ -910,6 +969,7 @@ private constructor( updated, userDefinedStatus, accountNumber, + blockchainAddresses, routingNumber, eventType, additionalProperties, @@ -919,5 +979,5 @@ private constructor( override fun hashCode(): Int = hashCode override fun toString() = - "FinancialAccountUpdatedWebhookEvent{token=$token, accountToken=$accountToken, created=$created, creditConfiguration=$creditConfiguration, isForBenefitOf=$isForBenefitOf, nickname=$nickname, status=$status, substatus=$substatus, type=$type, updated=$updated, userDefinedStatus=$userDefinedStatus, accountNumber=$accountNumber, routingNumber=$routingNumber, eventType=$eventType, additionalProperties=$additionalProperties}" + "FinancialAccountUpdatedWebhookEvent{token=$token, accountToken=$accountToken, created=$created, creditConfiguration=$creditConfiguration, isForBenefitOf=$isForBenefitOf, nickname=$nickname, status=$status, substatus=$substatus, type=$type, updated=$updated, userDefinedStatus=$userDefinedStatus, accountNumber=$accountNumber, blockchainAddresses=$blockchainAddresses, routingNumber=$routingNumber, eventType=$eventType, additionalProperties=$additionalProperties}" } diff --git a/lithic-java-core/src/main/kotlin/com/lithic/api/models/FinancialEvent.kt b/lithic-java-core/src/main/kotlin/com/lithic/api/models/FinancialEvent.kt index 02efa0c00..d7f28b871 100644 --- a/lithic-java-core/src/main/kotlin/com/lithic/api/models/FinancialEvent.kt +++ b/lithic-java-core/src/main/kotlin/com/lithic/api/models/FinancialEvent.kt @@ -631,10 +631,16 @@ private constructor( @JvmField val STABLECOIN_RECEIVED = of("STABLECOIN_RECEIVED") + @JvmField val STABLECOIN_INITIATED = of("STABLECOIN_INITIATED") + @JvmField val STABLECOIN_REVIEWED = of("STABLECOIN_REVIEWED") + @JvmField val STABLECOIN_SENT = of("STABLECOIN_SENT") + @JvmField val STABLECOIN_SETTLED = of("STABLECOIN_SETTLED") + @JvmField val STABLECOIN_REJECTED = of("STABLECOIN_REJECTED") + @JvmStatic fun of(value: String) = FinancialEventType(JsonField.of(value)) } @@ -731,8 +737,11 @@ private constructor( MONTHLY_REVERSAL, ACCOUNT_TO_ACCOUNT, STABLECOIN_RECEIVED, + STABLECOIN_INITIATED, STABLECOIN_REVIEWED, + STABLECOIN_SENT, STABLECOIN_SETTLED, + STABLECOIN_REJECTED, } /** @@ -836,8 +845,11 @@ private constructor( MONTHLY_REVERSAL, ACCOUNT_TO_ACCOUNT, STABLECOIN_RECEIVED, + STABLECOIN_INITIATED, STABLECOIN_REVIEWED, + STABLECOIN_SENT, STABLECOIN_SETTLED, + STABLECOIN_REJECTED, /** * An enum member indicating that [FinancialEventType] was instantiated with an unknown * value. @@ -945,8 +957,11 @@ private constructor( MONTHLY_REVERSAL -> Value.MONTHLY_REVERSAL ACCOUNT_TO_ACCOUNT -> Value.ACCOUNT_TO_ACCOUNT STABLECOIN_RECEIVED -> Value.STABLECOIN_RECEIVED + STABLECOIN_INITIATED -> Value.STABLECOIN_INITIATED STABLECOIN_REVIEWED -> Value.STABLECOIN_REVIEWED + STABLECOIN_SENT -> Value.STABLECOIN_SENT STABLECOIN_SETTLED -> Value.STABLECOIN_SETTLED + STABLECOIN_REJECTED -> Value.STABLECOIN_REJECTED else -> Value._UNKNOWN } @@ -1052,8 +1067,11 @@ private constructor( MONTHLY_REVERSAL -> Known.MONTHLY_REVERSAL ACCOUNT_TO_ACCOUNT -> Known.ACCOUNT_TO_ACCOUNT STABLECOIN_RECEIVED -> Known.STABLECOIN_RECEIVED + STABLECOIN_INITIATED -> Known.STABLECOIN_INITIATED STABLECOIN_REVIEWED -> Known.STABLECOIN_REVIEWED + STABLECOIN_SENT -> Known.STABLECOIN_SENT STABLECOIN_SETTLED -> Known.STABLECOIN_SETTLED + STABLECOIN_REJECTED -> Known.STABLECOIN_REJECTED else -> throw LithicInvalidDataException("Unknown FinancialEventType: $value") } diff --git a/lithic-java-core/src/main/kotlin/com/lithic/api/models/Payment.kt b/lithic-java-core/src/main/kotlin/com/lithic/api/models/Payment.kt index 78771264d..ece4def66 100644 --- a/lithic-java-core/src/main/kotlin/com/lithic/api/models/Payment.kt +++ b/lithic-java-core/src/main/kotlin/com/lithic/api/models/Payment.kt @@ -1645,8 +1645,16 @@ private constructor( * Stablecoin events: * * `STABLECOIN_RECEIVED` - Stablecoin pay-in received on-chain and pending release to * available balance. - * * `STABLECOIN_REVIEWED` - Stablecoin pay-in has completed the review process. - * * `STABLECOIN_SETTLED` - Stablecoin pay-in funds released to available balance. + * * `STABLECOIN_INITIATED` - Stablecoin withdrawal initiated, with the funds placed on + * hold. + * * `STABLECOIN_REVIEWED` - Stablecoin pay-in or withdrawal has completed the review + * process. + * * `STABLECOIN_SENT` - Stablecoin withdrawal accepted for on-chain submission to the + * destination address, and pending confirmation. + * * `STABLECOIN_SETTLED` - Stablecoin pay-in funds released to available balance, or + * stablecoin withdrawal confirmed on-chain. + * * `STABLECOIN_REJECTED` - Stablecoin withdrawal failed and the hold placed at initiation + * has been reversed. * * @throws LithicInvalidDataException if the JSON field has an unexpected type or is * unexpectedly missing or null (e.g. if the server responded with an unexpected value). @@ -1664,7 +1672,9 @@ private constructor( /** * Payment event external ID. For ACH transactions, this is the ACH trace number. For - * inbound wire transfers, this is the IMAD (Input Message Accountability Data). + * inbound wire transfers, this is the IMAD (Input Message Accountability Data). For + * stablecoin payments, this is the on-chain transaction hash of the transfer; it is present + * on events that reflect on-chain activity and null on internal lifecycle events. * * @throws LithicInvalidDataException if the JSON field has an unexpected type (e.g. if the * server responded with an unexpected value). @@ -1885,8 +1895,16 @@ private constructor( * Stablecoin events: * * `STABLECOIN_RECEIVED` - Stablecoin pay-in received on-chain and pending release to * available balance. - * * `STABLECOIN_REVIEWED` - Stablecoin pay-in has completed the review process. - * * `STABLECOIN_SETTLED` - Stablecoin pay-in funds released to available balance. + * * `STABLECOIN_INITIATED` - Stablecoin withdrawal initiated, with the funds placed on + * hold. + * * `STABLECOIN_REVIEWED` - Stablecoin pay-in or withdrawal has completed the review + * process. + * * `STABLECOIN_SENT` - Stablecoin withdrawal accepted for on-chain submission to the + * destination address, and pending confirmation. + * * `STABLECOIN_SETTLED` - Stablecoin pay-in funds released to available balance, or + * stablecoin withdrawal confirmed on-chain. + * * `STABLECOIN_REJECTED` - Stablecoin withdrawal failed and the hold placed at + * initiation has been reversed. */ fun type(type: PaymentEventType) = type(JsonField.of(type)) @@ -1928,7 +1946,10 @@ private constructor( /** * Payment event external ID. For ACH transactions, this is the ACH trace number. For - * inbound wire transfers, this is the IMAD (Input Message Accountability Data). + * inbound wire transfers, this is the IMAD (Input Message Accountability Data). For + * stablecoin payments, this is the on-chain transaction hash of the transfer; it is + * present on events that reflect on-chain activity and null on internal lifecycle + * events. */ fun externalId(externalId: String?) = externalId(JsonField.ofNullable(externalId)) @@ -2237,8 +2258,16 @@ private constructor( * Stablecoin events: * * `STABLECOIN_RECEIVED` - Stablecoin pay-in received on-chain and pending release to * available balance. - * * `STABLECOIN_REVIEWED` - Stablecoin pay-in has completed the review process. - * * `STABLECOIN_SETTLED` - Stablecoin pay-in funds released to available balance. + * * `STABLECOIN_INITIATED` - Stablecoin withdrawal initiated, with the funds placed on + * hold. + * * `STABLECOIN_REVIEWED` - Stablecoin pay-in or withdrawal has completed the review + * process. + * * `STABLECOIN_SENT` - Stablecoin withdrawal accepted for on-chain submission to the + * destination address, and pending confirmation. + * * `STABLECOIN_SETTLED` - Stablecoin pay-in funds released to available balance, or + * stablecoin withdrawal confirmed on-chain. + * * `STABLECOIN_REJECTED` - Stablecoin withdrawal failed and the hold placed at initiation + * has been reversed. */ class PaymentEventType @JsonCreator @@ -2302,10 +2331,16 @@ private constructor( @JvmField val STABLECOIN_RECEIVED = of("STABLECOIN_RECEIVED") + @JvmField val STABLECOIN_INITIATED = of("STABLECOIN_INITIATED") + @JvmField val STABLECOIN_REVIEWED = of("STABLECOIN_REVIEWED") + @JvmField val STABLECOIN_SENT = of("STABLECOIN_SENT") + @JvmField val STABLECOIN_SETTLED = of("STABLECOIN_SETTLED") + @JvmField val STABLECOIN_REJECTED = of("STABLECOIN_REJECTED") + @JvmStatic fun of(value: String) = PaymentEventType(JsonField.of(value)) } @@ -2334,8 +2369,11 @@ private constructor( WIRE_RETURN_OUTBOUND_SETTLED, WIRE_RETURN_OUTBOUND_REJECTED, STABLECOIN_RECEIVED, + STABLECOIN_INITIATED, STABLECOIN_REVIEWED, + STABLECOIN_SENT, STABLECOIN_SETTLED, + STABLECOIN_REJECTED, } /** @@ -2372,8 +2410,11 @@ private constructor( WIRE_RETURN_OUTBOUND_SETTLED, WIRE_RETURN_OUTBOUND_REJECTED, STABLECOIN_RECEIVED, + STABLECOIN_INITIATED, STABLECOIN_REVIEWED, + STABLECOIN_SENT, STABLECOIN_SETTLED, + STABLECOIN_REJECTED, /** * An enum member indicating that [PaymentEventType] was instantiated with an * unknown value. @@ -2413,8 +2454,11 @@ private constructor( WIRE_RETURN_OUTBOUND_SETTLED -> Value.WIRE_RETURN_OUTBOUND_SETTLED WIRE_RETURN_OUTBOUND_REJECTED -> Value.WIRE_RETURN_OUTBOUND_REJECTED STABLECOIN_RECEIVED -> Value.STABLECOIN_RECEIVED + STABLECOIN_INITIATED -> Value.STABLECOIN_INITIATED STABLECOIN_REVIEWED -> Value.STABLECOIN_REVIEWED + STABLECOIN_SENT -> Value.STABLECOIN_SENT STABLECOIN_SETTLED -> Value.STABLECOIN_SETTLED + STABLECOIN_REJECTED -> Value.STABLECOIN_REJECTED else -> Value._UNKNOWN } @@ -2452,8 +2496,11 @@ private constructor( WIRE_RETURN_OUTBOUND_SETTLED -> Known.WIRE_RETURN_OUTBOUND_SETTLED WIRE_RETURN_OUTBOUND_REJECTED -> Known.WIRE_RETURN_OUTBOUND_REJECTED STABLECOIN_RECEIVED -> Known.STABLECOIN_RECEIVED + STABLECOIN_INITIATED -> Known.STABLECOIN_INITIATED STABLECOIN_REVIEWED -> Known.STABLECOIN_REVIEWED + STABLECOIN_SENT -> Known.STABLECOIN_SENT STABLECOIN_SETTLED -> Known.STABLECOIN_SETTLED + STABLECOIN_REJECTED -> Known.STABLECOIN_REJECTED else -> throw LithicInvalidDataException("Unknown PaymentEventType: $value") } @@ -5418,6 +5465,8 @@ private constructor( @JvmField val WIRE_INBOUND_DRAWDOWN_REQUEST = of("WIRE_INBOUND_DRAWDOWN_REQUEST") + @JvmField val STABLECOIN = of("STABLECOIN") + @JvmStatic fun of(value: String) = TransferType(JsonField.of(value)) } @@ -5432,6 +5481,7 @@ private constructor( WIRE_OUTBOUND_PAYMENT, WIRE_OUTBOUND_ADMIN, WIRE_INBOUND_DRAWDOWN_REQUEST, + STABLECOIN, } /** @@ -5453,6 +5503,7 @@ private constructor( WIRE_OUTBOUND_PAYMENT, WIRE_OUTBOUND_ADMIN, WIRE_INBOUND_DRAWDOWN_REQUEST, + STABLECOIN, /** * An enum member indicating that [TransferType] was instantiated with an unknown value. */ @@ -5477,6 +5528,7 @@ private constructor( WIRE_OUTBOUND_PAYMENT -> Value.WIRE_OUTBOUND_PAYMENT WIRE_OUTBOUND_ADMIN -> Value.WIRE_OUTBOUND_ADMIN WIRE_INBOUND_DRAWDOWN_REQUEST -> Value.WIRE_INBOUND_DRAWDOWN_REQUEST + STABLECOIN -> Value.STABLECOIN else -> Value._UNKNOWN } @@ -5500,6 +5552,7 @@ private constructor( WIRE_OUTBOUND_PAYMENT -> Known.WIRE_OUTBOUND_PAYMENT WIRE_OUTBOUND_ADMIN -> Known.WIRE_OUTBOUND_ADMIN WIRE_INBOUND_DRAWDOWN_REQUEST -> Known.WIRE_INBOUND_DRAWDOWN_REQUEST + STABLECOIN -> Known.STABLECOIN else -> throw LithicInvalidDataException("Unknown TransferType: $value") } diff --git a/lithic-java-core/src/main/kotlin/com/lithic/api/models/StatementLineItems.kt b/lithic-java-core/src/main/kotlin/com/lithic/api/models/StatementLineItems.kt index 4bce77220..7fc41b0d8 100644 --- a/lithic-java-core/src/main/kotlin/com/lithic/api/models/StatementLineItems.kt +++ b/lithic-java-core/src/main/kotlin/com/lithic/api/models/StatementLineItems.kt @@ -1409,10 +1409,16 @@ private constructor( @JvmField val STABLECOIN_RECEIVED = of("STABLECOIN_RECEIVED") + @JvmField val STABLECOIN_INITIATED = of("STABLECOIN_INITIATED") + @JvmField val STABLECOIN_REVIEWED = of("STABLECOIN_REVIEWED") + @JvmField val STABLECOIN_SENT = of("STABLECOIN_SENT") + @JvmField val STABLECOIN_SETTLED = of("STABLECOIN_SETTLED") + @JvmField val STABLECOIN_REJECTED = of("STABLECOIN_REJECTED") + @JvmStatic fun of(value: String) = FinancialEventType(JsonField.of(value)) } @@ -1509,8 +1515,11 @@ private constructor( MONTHLY_REVERSAL, ACCOUNT_TO_ACCOUNT, STABLECOIN_RECEIVED, + STABLECOIN_INITIATED, STABLECOIN_REVIEWED, + STABLECOIN_SENT, STABLECOIN_SETTLED, + STABLECOIN_REJECTED, } /** @@ -1616,8 +1625,11 @@ private constructor( MONTHLY_REVERSAL, ACCOUNT_TO_ACCOUNT, STABLECOIN_RECEIVED, + STABLECOIN_INITIATED, STABLECOIN_REVIEWED, + STABLECOIN_SENT, STABLECOIN_SETTLED, + STABLECOIN_REJECTED, /** * An enum member indicating that [FinancialEventType] was instantiated with an * unknown value. @@ -1725,8 +1737,11 @@ private constructor( MONTHLY_REVERSAL -> Value.MONTHLY_REVERSAL ACCOUNT_TO_ACCOUNT -> Value.ACCOUNT_TO_ACCOUNT STABLECOIN_RECEIVED -> Value.STABLECOIN_RECEIVED + STABLECOIN_INITIATED -> Value.STABLECOIN_INITIATED STABLECOIN_REVIEWED -> Value.STABLECOIN_REVIEWED + STABLECOIN_SENT -> Value.STABLECOIN_SENT STABLECOIN_SETTLED -> Value.STABLECOIN_SETTLED + STABLECOIN_REJECTED -> Value.STABLECOIN_REJECTED else -> Value._UNKNOWN } @@ -1832,8 +1847,11 @@ private constructor( MONTHLY_REVERSAL -> Known.MONTHLY_REVERSAL ACCOUNT_TO_ACCOUNT -> Known.ACCOUNT_TO_ACCOUNT STABLECOIN_RECEIVED -> Known.STABLECOIN_RECEIVED + STABLECOIN_INITIATED -> Known.STABLECOIN_INITIATED STABLECOIN_REVIEWED -> Known.STABLECOIN_REVIEWED + STABLECOIN_SENT -> Known.STABLECOIN_SENT STABLECOIN_SETTLED -> Known.STABLECOIN_SETTLED + STABLECOIN_REJECTED -> Known.STABLECOIN_REJECTED else -> throw LithicInvalidDataException("Unknown FinancialEventType: $value") } diff --git a/lithic-java-core/src/main/kotlin/com/lithic/api/models/TokenizationSimulateParams.kt b/lithic-java-core/src/main/kotlin/com/lithic/api/models/TokenizationSimulateParams.kt index 5602cccc7..86b6c8987 100644 --- a/lithic-java-core/src/main/kotlin/com/lithic/api/models/TokenizationSimulateParams.kt +++ b/lithic-java-core/src/main/kotlin/com/lithic/api/models/TokenizationSimulateParams.kt @@ -33,7 +33,7 @@ private constructor( ) : Params { /** - * The three digit cvv for the card. + * The three or four digit CVV for the card. AMEX cards use four digit CVVs. * * @throws LithicInvalidDataException if the JSON field has an unexpected type or is * unexpectedly missing or null (e.g. if the server responded with an unexpected value). @@ -213,7 +213,7 @@ private constructor( */ fun body(body: Body) = apply { this.body = body.toBuilder() } - /** The three digit cvv for the card. */ + /** The three or four digit CVV for the card. AMEX cards use four digit CVVs. */ fun cvv(cvv: String) = apply { body.cvv(cvv) } /** @@ -519,7 +519,7 @@ private constructor( ) /** - * The three digit cvv for the card. + * The three or four digit CVV for the card. AMEX cards use four digit CVVs. * * @throws LithicInvalidDataException if the JSON field has an unexpected type or is * unexpectedly missing or null (e.g. if the server responded with an unexpected value). @@ -713,7 +713,7 @@ private constructor( additionalProperties = body.additionalProperties.toMutableMap() } - /** The three digit cvv for the card. */ + /** The three or four digit CVV for the card. AMEX cards use four digit CVVs. */ fun cvv(cvv: String) = cvv(JsonField.of(cvv)) /** diff --git a/lithic-java-core/src/main/kotlin/com/lithic/api/models/TransactionMonitoringCaseListParams.kt b/lithic-java-core/src/main/kotlin/com/lithic/api/models/TransactionMonitoringCaseListParams.kt index 8c5b0ca7e..b8d07a346 100644 --- a/lithic-java-core/src/main/kotlin/com/lithic/api/models/TransactionMonitoringCaseListParams.kt +++ b/lithic-java-core/src/main/kotlin/com/lithic/api/models/TransactionMonitoringCaseListParams.kt @@ -62,7 +62,11 @@ private constructor( */ fun endingBefore(): Optional = Optional.ofNullable(endingBefore) - /** Only return cases associated with the provided entity. */ + /** + * Only return cases associated with the provided entity. Accepts a card, account, or financial + * account token. Cases with a `PROGRAM` entity have no entity token and are never returned by + * this filter. + */ fun entityToken(): Optional = Optional.ofNullable(entityToken) /** Page size (for pagination). */ @@ -199,7 +203,11 @@ private constructor( /** Alias for calling [Builder.endingBefore] with `endingBefore.orElse(null)`. */ fun endingBefore(endingBefore: Optional) = endingBefore(endingBefore.getOrNull()) - /** Only return cases associated with the provided entity. */ + /** + * Only return cases associated with the provided entity. Accepts a card, account, or + * financial account token. Cases with a `PROGRAM` entity have no entity token and are never + * returned by this filter. + */ fun entityToken(entityToken: String?) = apply { this.entityToken = entityToken } /** Alias for calling [Builder.entityToken] with `entityToken.orElse(null)`. */ diff --git a/lithic-java-core/src/main/kotlin/com/lithic/api/models/V2ListResultsResponse.kt b/lithic-java-core/src/main/kotlin/com/lithic/api/models/V2ListResultsResponse.kt index 538d9d889..e45b8e0fc 100644 --- a/lithic-java-core/src/main/kotlin/com/lithic/api/models/V2ListResultsResponse.kt +++ b/lithic-java-core/src/main/kotlin/com/lithic/api/models/V2ListResultsResponse.kt @@ -10109,6 +10109,8 @@ private constructor( @JvmField val ACCOUNT = of("ACCOUNT") + @JvmField val PROGRAM = of("PROGRAM") + @JvmStatic fun of(value: String) = Scope(JsonField.of(value)) } @@ -10116,6 +10118,7 @@ private constructor( enum class Known { CARD, ACCOUNT, + PROGRAM, } /** @@ -10130,6 +10133,7 @@ private constructor( enum class Value { CARD, ACCOUNT, + PROGRAM, /** * An enum member indicating that [Scope] was instantiated with an unknown * value. @@ -10148,6 +10152,7 @@ private constructor( when (this) { CARD -> Value.CARD ACCOUNT -> Value.ACCOUNT + PROGRAM -> Value.PROGRAM else -> Value._UNKNOWN } @@ -10164,6 +10169,7 @@ private constructor( when (this) { CARD -> Known.CARD ACCOUNT -> Known.ACCOUNT + PROGRAM -> Known.PROGRAM else -> throw LithicInvalidDataException("Unknown Scope: $value") } @@ -12181,12 +12187,15 @@ private constructor( @JvmField val FINANCIAL_ACCOUNT = of("FINANCIAL_ACCOUNT") + @JvmField val PROGRAM = of("PROGRAM") + @JvmStatic fun of(value: String) = Scope(JsonField.of(value)) } /** An enum containing [Scope]'s known values. */ enum class Known { - FINANCIAL_ACCOUNT + FINANCIAL_ACCOUNT, + PROGRAM, } /** @@ -12200,6 +12209,7 @@ private constructor( */ enum class Value { FINANCIAL_ACCOUNT, + PROGRAM, /** * An enum member indicating that [Scope] was instantiated with an unknown * value. @@ -12217,6 +12227,7 @@ private constructor( fun value(): Value = when (this) { FINANCIAL_ACCOUNT -> Value.FINANCIAL_ACCOUNT + PROGRAM -> Value.PROGRAM else -> Value._UNKNOWN } @@ -12232,6 +12243,7 @@ private constructor( fun known(): Known = when (this) { FINANCIAL_ACCOUNT -> Known.FINANCIAL_ACCOUNT + PROGRAM -> Known.PROGRAM else -> throw LithicInvalidDataException("Unknown Scope: $value") } diff --git a/lithic-java-core/src/main/kotlin/com/lithic/api/models/VelocityLimitParams.kt b/lithic-java-core/src/main/kotlin/com/lithic/api/models/VelocityLimitParams.kt index 58113d288..b5c0d3e10 100644 --- a/lithic-java-core/src/main/kotlin/com/lithic/api/models/VelocityLimitParams.kt +++ b/lithic-java-core/src/main/kotlin/com/lithic/api/models/VelocityLimitParams.kt @@ -25,6 +25,8 @@ private constructor( private val scope: JsonField, private val filters: JsonField, private val limitAmount: JsonField, + private val limitCashAmount: JsonField, + private val limitCashCount: JsonField, private val limitCount: JsonField, private val additionalProperties: MutableMap, ) { @@ -41,8 +43,23 @@ private constructor( @JsonProperty("limit_amount") @ExcludeMissing limitAmount: JsonField = JsonMissing.of(), + @JsonProperty("limit_cash_amount") + @ExcludeMissing + limitCashAmount: JsonField = JsonMissing.of(), + @JsonProperty("limit_cash_count") + @ExcludeMissing + limitCashCount: JsonField = JsonMissing.of(), @JsonProperty("limit_count") @ExcludeMissing limitCount: JsonField = JsonMissing.of(), - ) : this(period, scope, filters, limitAmount, limitCount, mutableMapOf()) + ) : this( + period, + scope, + filters, + limitAmount, + limitCashAmount, + limitCashCount, + limitCount, + mutableMapOf(), + ) /** * Velocity over the current day since 00:00 / 12 AM in Eastern Time @@ -75,6 +92,29 @@ private constructor( */ fun limitAmount(): Optional = limitAmount.getOptional("limit_amount") + /** + * The maximum amount of cash spend velocity allowed in the period in minor units (the smallest + * unit of a currency, e.g. cents for USD). Cash spend covers ATM withdrawals, cash + * disbursements, and purchases with cashback. Transactions exceeding this limit will be + * declined. + * + * @throws LithicInvalidDataException if the JSON field has an unexpected type (e.g. if the + * server responded with an unexpected value). + */ + fun limitCashAmount(): Optional = limitCashAmount.getOptional("limit_cash_amount") + + /** + * The number of cash spend velocity impacting transactions may not exceed this limit in the + * period. Transactions exceeding this limit will be declined. A cash velocity impacting + * transaction is an ATM withdrawal, cash disbursement, or purchase with cashback that has been + * authorized, and optionally settled, or a force post (a transaction that settled without prior + * authorization). + * + * @throws LithicInvalidDataException if the JSON field has an unexpected type (e.g. if the + * server responded with an unexpected value). + */ + fun limitCashCount(): Optional = limitCashCount.getOptional("limit_cash_count") + /** * The number of spend velocity impacting transactions may not exceed this limit in the period. * Transactions exceeding this limit will be declined. A spend velocity impacting transaction is @@ -116,6 +156,24 @@ private constructor( */ @JsonProperty("limit_amount") @ExcludeMissing fun _limitAmount(): JsonField = limitAmount + /** + * Returns the raw JSON value of [limitCashAmount]. + * + * Unlike [limitCashAmount], this method doesn't throw if the JSON field has an unexpected type. + */ + @JsonProperty("limit_cash_amount") + @ExcludeMissing + fun _limitCashAmount(): JsonField = limitCashAmount + + /** + * Returns the raw JSON value of [limitCashCount]. + * + * Unlike [limitCashCount], this method doesn't throw if the JSON field has an unexpected type. + */ + @JsonProperty("limit_cash_count") + @ExcludeMissing + fun _limitCashCount(): JsonField = limitCashCount + /** * Returns the raw JSON value of [limitCount]. * @@ -156,6 +214,8 @@ private constructor( private var scope: JsonField? = null private var filters: JsonField = JsonMissing.of() private var limitAmount: JsonField = JsonMissing.of() + private var limitCashAmount: JsonField = JsonMissing.of() + private var limitCashCount: JsonField = JsonMissing.of() private var limitCount: JsonField = JsonMissing.of() private var additionalProperties: MutableMap = mutableMapOf() @@ -165,6 +225,8 @@ private constructor( scope = velocityLimitParams.scope filters = velocityLimitParams.filters limitAmount = velocityLimitParams.limitAmount + limitCashAmount = velocityLimitParams.limitCashAmount + limitCashCount = velocityLimitParams.limitCashCount limitCount = velocityLimitParams.limitCount additionalProperties = velocityLimitParams.additionalProperties.toMutableMap() } @@ -262,6 +324,69 @@ private constructor( */ fun limitAmount(limitAmount: JsonField) = apply { this.limitAmount = limitAmount } + /** + * The maximum amount of cash spend velocity allowed in the period in minor units (the + * smallest unit of a currency, e.g. cents for USD). Cash spend covers ATM withdrawals, cash + * disbursements, and purchases with cashback. Transactions exceeding this limit will be + * declined. + */ + fun limitCashAmount(limitCashAmount: Long?) = + limitCashAmount(JsonField.ofNullable(limitCashAmount)) + + /** + * Alias for [Builder.limitCashAmount]. + * + * This unboxed primitive overload exists for backwards compatibility. + */ + fun limitCashAmount(limitCashAmount: Long) = limitCashAmount(limitCashAmount as Long?) + + /** Alias for calling [Builder.limitCashAmount] with `limitCashAmount.orElse(null)`. */ + fun limitCashAmount(limitCashAmount: Optional) = + limitCashAmount(limitCashAmount.getOrNull()) + + /** + * Sets [Builder.limitCashAmount] to an arbitrary JSON value. + * + * You should usually call [Builder.limitCashAmount] with a well-typed [Long] value instead. + * This method is primarily for setting the field to an undocumented or not yet supported + * value. + */ + fun limitCashAmount(limitCashAmount: JsonField) = apply { + this.limitCashAmount = limitCashAmount + } + + /** + * The number of cash spend velocity impacting transactions may not exceed this limit in the + * period. Transactions exceeding this limit will be declined. A cash velocity impacting + * transaction is an ATM withdrawal, cash disbursement, or purchase with cashback that has + * been authorized, and optionally settled, or a force post (a transaction that settled + * without prior authorization). + */ + fun limitCashCount(limitCashCount: Long?) = + limitCashCount(JsonField.ofNullable(limitCashCount)) + + /** + * Alias for [Builder.limitCashCount]. + * + * This unboxed primitive overload exists for backwards compatibility. + */ + fun limitCashCount(limitCashCount: Long) = limitCashCount(limitCashCount as Long?) + + /** Alias for calling [Builder.limitCashCount] with `limitCashCount.orElse(null)`. */ + fun limitCashCount(limitCashCount: Optional) = + limitCashCount(limitCashCount.getOrNull()) + + /** + * Sets [Builder.limitCashCount] to an arbitrary JSON value. + * + * You should usually call [Builder.limitCashCount] with a well-typed [Long] value instead. + * This method is primarily for setting the field to an undocumented or not yet supported + * value. + */ + fun limitCashCount(limitCashCount: JsonField) = apply { + this.limitCashCount = limitCashCount + } + /** * The number of spend velocity impacting transactions may not exceed this limit in the * period. Transactions exceeding this limit will be declined. A spend velocity impacting @@ -326,6 +451,8 @@ private constructor( checkRequired("scope", scope), filters, limitAmount, + limitCashAmount, + limitCashCount, limitCount, additionalProperties.toMutableMap(), ) @@ -350,6 +477,8 @@ private constructor( scope().validate() filters().ifPresent { it.validate() } limitAmount() + limitCashAmount() + limitCashCount() limitCount() validated = true } @@ -373,6 +502,8 @@ private constructor( (scope.asKnown().getOrNull()?.validity() ?: 0) + (filters.asKnown().getOrNull()?.validity() ?: 0) + (if (limitAmount.asKnown().isPresent) 1 else 0) + + (if (limitCashAmount.asKnown().isPresent) 1 else 0) + + (if (limitCashCount.asKnown().isPresent) 1 else 0) + (if (limitCount.asKnown().isPresent) 1 else 0) /** The scope the velocity is calculated for */ @@ -524,16 +655,27 @@ private constructor( scope == other.scope && filters == other.filters && limitAmount == other.limitAmount && + limitCashAmount == other.limitCashAmount && + limitCashCount == other.limitCashCount && limitCount == other.limitCount && additionalProperties == other.additionalProperties } private val hashCode: Int by lazy { - Objects.hash(period, scope, filters, limitAmount, limitCount, additionalProperties) + Objects.hash( + period, + scope, + filters, + limitAmount, + limitCashAmount, + limitCashCount, + limitCount, + additionalProperties, + ) } override fun hashCode(): Int = hashCode override fun toString() = - "VelocityLimitParams{period=$period, scope=$scope, filters=$filters, limitAmount=$limitAmount, limitCount=$limitCount, additionalProperties=$additionalProperties}" + "VelocityLimitParams{period=$period, scope=$scope, filters=$filters, limitAmount=$limitAmount, limitCashAmount=$limitCashAmount, limitCashCount=$limitCashCount, limitCount=$limitCount, additionalProperties=$additionalProperties}" } diff --git a/lithic-java-core/src/test/kotlin/com/lithic/api/models/CaseEntityTest.kt b/lithic-java-core/src/test/kotlin/com/lithic/api/models/CaseEntityTest.kt index 23eb4902e..36cd66150 100644 --- a/lithic-java-core/src/test/kotlin/com/lithic/api/models/CaseEntityTest.kt +++ b/lithic-java-core/src/test/kotlin/com/lithic/api/models/CaseEntityTest.kt @@ -17,7 +17,7 @@ internal class CaseEntityTest { .entityType(CaseEntity.EntityType2.CARD) .build() - assertThat(caseEntity.entityToken()).isEqualTo("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") + assertThat(caseEntity.entityToken()).contains("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") assertThat(caseEntity.entityType()).isEqualTo(CaseEntity.EntityType2.CARD) } diff --git a/lithic-java-core/src/test/kotlin/com/lithic/api/models/FinancialAccountCreatedWebhookEventTest.kt b/lithic-java-core/src/test/kotlin/com/lithic/api/models/FinancialAccountCreatedWebhookEventTest.kt index 4b0ee89a9..1a5983280 100644 --- a/lithic-java-core/src/test/kotlin/com/lithic/api/models/FinancialAccountCreatedWebhookEventTest.kt +++ b/lithic-java-core/src/test/kotlin/com/lithic/api/models/FinancialAccountCreatedWebhookEventTest.kt @@ -3,6 +3,7 @@ package com.lithic.api.models import com.fasterxml.jackson.module.kotlin.jacksonTypeRef +import com.lithic.api.core.JsonValue import com.lithic.api.core.jsonMapper import java.time.OffsetDateTime import org.assertj.core.api.Assertions.assertThat @@ -40,6 +41,14 @@ internal class FinancialAccountCreatedWebhookEventTest { .updated(OffsetDateTime.parse("2019-12-27T18:11:19.117Z")) .userDefinedStatus("user_defined_status") .accountNumber("account_number") + .blockchainAddresses( + FinancialAccount.BlockchainAddresses.builder() + .putAdditionalProperty( + "ETHEREUM", + JsonValue.from("0x5f2b9e8a1c4d7f0e3a6b9c2d5e8f1a4b7c0d3e6f"), + ) + .build() + ) .routingNumber("routing_number") .eventType(FinancialAccountCreatedWebhookEvent.EventType.FINANCIAL_ACCOUNT_CREATED) .build() @@ -79,6 +88,15 @@ internal class FinancialAccountCreatedWebhookEventTest { assertThat(financialAccountCreatedWebhookEvent.userDefinedStatus()) .contains("user_defined_status") assertThat(financialAccountCreatedWebhookEvent.accountNumber()).contains("account_number") + assertThat(financialAccountCreatedWebhookEvent.blockchainAddresses()) + .contains( + FinancialAccount.BlockchainAddresses.builder() + .putAdditionalProperty( + "ETHEREUM", + JsonValue.from("0x5f2b9e8a1c4d7f0e3a6b9c2d5e8f1a4b7c0d3e6f"), + ) + .build() + ) assertThat(financialAccountCreatedWebhookEvent.routingNumber()).contains("routing_number") assertThat(financialAccountCreatedWebhookEvent.eventType()) .isEqualTo(FinancialAccountCreatedWebhookEvent.EventType.FINANCIAL_ACCOUNT_CREATED) @@ -115,6 +133,14 @@ internal class FinancialAccountCreatedWebhookEventTest { .updated(OffsetDateTime.parse("2019-12-27T18:11:19.117Z")) .userDefinedStatus("user_defined_status") .accountNumber("account_number") + .blockchainAddresses( + FinancialAccount.BlockchainAddresses.builder() + .putAdditionalProperty( + "ETHEREUM", + JsonValue.from("0x5f2b9e8a1c4d7f0e3a6b9c2d5e8f1a4b7c0d3e6f"), + ) + .build() + ) .routingNumber("routing_number") .eventType(FinancialAccountCreatedWebhookEvent.EventType.FINANCIAL_ACCOUNT_CREATED) .build() diff --git a/lithic-java-core/src/test/kotlin/com/lithic/api/models/FinancialAccountListPageResponseTest.kt b/lithic-java-core/src/test/kotlin/com/lithic/api/models/FinancialAccountListPageResponseTest.kt index d145b6c5c..4fcad53e2 100644 --- a/lithic-java-core/src/test/kotlin/com/lithic/api/models/FinancialAccountListPageResponseTest.kt +++ b/lithic-java-core/src/test/kotlin/com/lithic/api/models/FinancialAccountListPageResponseTest.kt @@ -3,6 +3,7 @@ package com.lithic.api.models import com.fasterxml.jackson.module.kotlin.jacksonTypeRef +import com.lithic.api.core.JsonValue import com.lithic.api.core.jsonMapper import java.time.OffsetDateTime import org.assertj.core.api.Assertions.assertThat @@ -44,6 +45,14 @@ internal class FinancialAccountListPageResponseTest { .updated(OffsetDateTime.parse("2019-12-27T18:11:19.117Z")) .userDefinedStatus("user_defined_status") .accountNumber("account_number") + .blockchainAddresses( + FinancialAccount.BlockchainAddresses.builder() + .putAdditionalProperty( + "ETHEREUM", + JsonValue.from("0x5f2b9e8a1c4d7f0e3a6b9c2d5e8f1a4b7c0d3e6f"), + ) + .build() + ) .routingNumber("routing_number") .build() ) @@ -79,6 +88,14 @@ internal class FinancialAccountListPageResponseTest { .updated(OffsetDateTime.parse("2019-12-27T18:11:19.117Z")) .userDefinedStatus("user_defined_status") .accountNumber("account_number") + .blockchainAddresses( + FinancialAccount.BlockchainAddresses.builder() + .putAdditionalProperty( + "ETHEREUM", + JsonValue.from("0x5f2b9e8a1c4d7f0e3a6b9c2d5e8f1a4b7c0d3e6f"), + ) + .build() + ) .routingNumber("routing_number") .build() ) @@ -120,6 +137,14 @@ internal class FinancialAccountListPageResponseTest { .updated(OffsetDateTime.parse("2019-12-27T18:11:19.117Z")) .userDefinedStatus("user_defined_status") .accountNumber("account_number") + .blockchainAddresses( + FinancialAccount.BlockchainAddresses.builder() + .putAdditionalProperty( + "ETHEREUM", + JsonValue.from("0x5f2b9e8a1c4d7f0e3a6b9c2d5e8f1a4b7c0d3e6f"), + ) + .build() + ) .routingNumber("routing_number") .build() ) diff --git a/lithic-java-core/src/test/kotlin/com/lithic/api/models/FinancialAccountTest.kt b/lithic-java-core/src/test/kotlin/com/lithic/api/models/FinancialAccountTest.kt index 98eb1f5ac..08f37d8d0 100644 --- a/lithic-java-core/src/test/kotlin/com/lithic/api/models/FinancialAccountTest.kt +++ b/lithic-java-core/src/test/kotlin/com/lithic/api/models/FinancialAccountTest.kt @@ -3,6 +3,7 @@ package com.lithic.api.models import com.fasterxml.jackson.module.kotlin.jacksonTypeRef +import com.lithic.api.core.JsonValue import com.lithic.api.core.jsonMapper import java.time.OffsetDateTime import org.assertj.core.api.Assertions.assertThat @@ -40,6 +41,14 @@ internal class FinancialAccountTest { .updated(OffsetDateTime.parse("2019-12-27T18:11:19.117Z")) .userDefinedStatus("user_defined_status") .accountNumber("account_number") + .blockchainAddresses( + FinancialAccount.BlockchainAddresses.builder() + .putAdditionalProperty( + "ETHEREUM", + JsonValue.from("0x5f2b9e8a1c4d7f0e3a6b9c2d5e8f1a4b7c0d3e6f"), + ) + .build() + ) .routingNumber("routing_number") .build() @@ -74,6 +83,15 @@ internal class FinancialAccountTest { .isEqualTo(OffsetDateTime.parse("2019-12-27T18:11:19.117Z")) assertThat(financialAccount.userDefinedStatus()).contains("user_defined_status") assertThat(financialAccount.accountNumber()).contains("account_number") + assertThat(financialAccount.blockchainAddresses()) + .contains( + FinancialAccount.BlockchainAddresses.builder() + .putAdditionalProperty( + "ETHEREUM", + JsonValue.from("0x5f2b9e8a1c4d7f0e3a6b9c2d5e8f1a4b7c0d3e6f"), + ) + .build() + ) assertThat(financialAccount.routingNumber()).contains("routing_number") } @@ -108,6 +126,14 @@ internal class FinancialAccountTest { .updated(OffsetDateTime.parse("2019-12-27T18:11:19.117Z")) .userDefinedStatus("user_defined_status") .accountNumber("account_number") + .blockchainAddresses( + FinancialAccount.BlockchainAddresses.builder() + .putAdditionalProperty( + "ETHEREUM", + JsonValue.from("0x5f2b9e8a1c4d7f0e3a6b9c2d5e8f1a4b7c0d3e6f"), + ) + .build() + ) .routingNumber("routing_number") .build() diff --git a/lithic-java-core/src/test/kotlin/com/lithic/api/models/FinancialAccountUpdatedWebhookEventTest.kt b/lithic-java-core/src/test/kotlin/com/lithic/api/models/FinancialAccountUpdatedWebhookEventTest.kt index 79e2cac6d..b15b6d8dd 100644 --- a/lithic-java-core/src/test/kotlin/com/lithic/api/models/FinancialAccountUpdatedWebhookEventTest.kt +++ b/lithic-java-core/src/test/kotlin/com/lithic/api/models/FinancialAccountUpdatedWebhookEventTest.kt @@ -3,6 +3,7 @@ package com.lithic.api.models import com.fasterxml.jackson.module.kotlin.jacksonTypeRef +import com.lithic.api.core.JsonValue import com.lithic.api.core.jsonMapper import java.time.OffsetDateTime import org.assertj.core.api.Assertions.assertThat @@ -40,6 +41,14 @@ internal class FinancialAccountUpdatedWebhookEventTest { .updated(OffsetDateTime.parse("2019-12-27T18:11:19.117Z")) .userDefinedStatus("user_defined_status") .accountNumber("account_number") + .blockchainAddresses( + FinancialAccount.BlockchainAddresses.builder() + .putAdditionalProperty( + "ETHEREUM", + JsonValue.from("0x5f2b9e8a1c4d7f0e3a6b9c2d5e8f1a4b7c0d3e6f"), + ) + .build() + ) .routingNumber("routing_number") .eventType(FinancialAccountUpdatedWebhookEvent.EventType.FINANCIAL_ACCOUNT_UPDATED) .build() @@ -79,6 +88,15 @@ internal class FinancialAccountUpdatedWebhookEventTest { assertThat(financialAccountUpdatedWebhookEvent.userDefinedStatus()) .contains("user_defined_status") assertThat(financialAccountUpdatedWebhookEvent.accountNumber()).contains("account_number") + assertThat(financialAccountUpdatedWebhookEvent.blockchainAddresses()) + .contains( + FinancialAccount.BlockchainAddresses.builder() + .putAdditionalProperty( + "ETHEREUM", + JsonValue.from("0x5f2b9e8a1c4d7f0e3a6b9c2d5e8f1a4b7c0d3e6f"), + ) + .build() + ) assertThat(financialAccountUpdatedWebhookEvent.routingNumber()).contains("routing_number") assertThat(financialAccountUpdatedWebhookEvent.eventType()) .isEqualTo(FinancialAccountUpdatedWebhookEvent.EventType.FINANCIAL_ACCOUNT_UPDATED) @@ -115,6 +133,14 @@ internal class FinancialAccountUpdatedWebhookEventTest { .updated(OffsetDateTime.parse("2019-12-27T18:11:19.117Z")) .userDefinedStatus("user_defined_status") .accountNumber("account_number") + .blockchainAddresses( + FinancialAccount.BlockchainAddresses.builder() + .putAdditionalProperty( + "ETHEREUM", + JsonValue.from("0x5f2b9e8a1c4d7f0e3a6b9c2d5e8f1a4b7c0d3e6f"), + ) + .build() + ) .routingNumber("routing_number") .eventType(FinancialAccountUpdatedWebhookEvent.EventType.FINANCIAL_ACCOUNT_UPDATED) .build() diff --git a/lithic-java-core/src/test/kotlin/com/lithic/api/models/ParsedWebhookEventTest.kt b/lithic-java-core/src/test/kotlin/com/lithic/api/models/ParsedWebhookEventTest.kt index de53b7467..cc450b476 100644 --- a/lithic-java-core/src/test/kotlin/com/lithic/api/models/ParsedWebhookEventTest.kt +++ b/lithic-java-core/src/test/kotlin/com/lithic/api/models/ParsedWebhookEventTest.kt @@ -7239,6 +7239,14 @@ internal class ParsedWebhookEventTest { .updated(OffsetDateTime.parse("2019-12-27T18:11:19.117Z")) .userDefinedStatus("user_defined_status") .accountNumber("account_number") + .blockchainAddresses( + FinancialAccount.BlockchainAddresses.builder() + .putAdditionalProperty( + "ETHEREUM", + JsonValue.from("0x5f2b9e8a1c4d7f0e3a6b9c2d5e8f1a4b7c0d3e6f"), + ) + .build() + ) .routingNumber("routing_number") .eventType(FinancialAccountCreatedWebhookEvent.EventType.FINANCIAL_ACCOUNT_CREATED) .build() @@ -7348,6 +7356,14 @@ internal class ParsedWebhookEventTest { .updated(OffsetDateTime.parse("2019-12-27T18:11:19.117Z")) .userDefinedStatus("user_defined_status") .accountNumber("account_number") + .blockchainAddresses( + FinancialAccount.BlockchainAddresses.builder() + .putAdditionalProperty( + "ETHEREUM", + JsonValue.from("0x5f2b9e8a1c4d7f0e3a6b9c2d5e8f1a4b7c0d3e6f"), + ) + .build() + ) .routingNumber("routing_number") .eventType( FinancialAccountCreatedWebhookEvent.EventType.FINANCIAL_ACCOUNT_CREATED @@ -7394,6 +7410,14 @@ internal class ParsedWebhookEventTest { .updated(OffsetDateTime.parse("2019-12-27T18:11:19.117Z")) .userDefinedStatus("user_defined_status") .accountNumber("account_number") + .blockchainAddresses( + FinancialAccount.BlockchainAddresses.builder() + .putAdditionalProperty( + "ETHEREUM", + JsonValue.from("0x5f2b9e8a1c4d7f0e3a6b9c2d5e8f1a4b7c0d3e6f"), + ) + .build() + ) .routingNumber("routing_number") .eventType(FinancialAccountUpdatedWebhookEvent.EventType.FINANCIAL_ACCOUNT_UPDATED) .build() @@ -7503,6 +7527,14 @@ internal class ParsedWebhookEventTest { .updated(OffsetDateTime.parse("2019-12-27T18:11:19.117Z")) .userDefinedStatus("user_defined_status") .accountNumber("account_number") + .blockchainAddresses( + FinancialAccount.BlockchainAddresses.builder() + .putAdditionalProperty( + "ETHEREUM", + JsonValue.from("0x5f2b9e8a1c4d7f0e3a6b9c2d5e8f1a4b7c0d3e6f"), + ) + .build() + ) .routingNumber("routing_number") .eventType( FinancialAccountUpdatedWebhookEvent.EventType.FINANCIAL_ACCOUNT_UPDATED diff --git a/lithic-java-core/src/test/kotlin/com/lithic/api/models/VelocityLimitParamsTest.kt b/lithic-java-core/src/test/kotlin/com/lithic/api/models/VelocityLimitParamsTest.kt index 91d3b1462..41610a04a 100644 --- a/lithic-java-core/src/test/kotlin/com/lithic/api/models/VelocityLimitParamsTest.kt +++ b/lithic-java-core/src/test/kotlin/com/lithic/api/models/VelocityLimitParamsTest.kt @@ -30,6 +30,8 @@ internal class VelocityLimitParamsTest { .build() ) .limitAmount(10000L) + .limitCashAmount(5000L) + .limitCashCount(0L) .limitCount(0L) .build() @@ -54,6 +56,8 @@ internal class VelocityLimitParamsTest { .build() ) assertThat(velocityLimitParams.limitAmount()).contains(10000L) + assertThat(velocityLimitParams.limitCashAmount()).contains(5000L) + assertThat(velocityLimitParams.limitCashCount()).contains(0L) assertThat(velocityLimitParams.limitCount()).contains(0L) } @@ -79,6 +83,8 @@ internal class VelocityLimitParamsTest { .build() ) .limitAmount(10000L) + .limitCashAmount(5000L) + .limitCashCount(0L) .limitCount(0L) .build() diff --git a/scripts/upload-artifacts b/scripts/upload-artifacts index 10f3c7055..5c1fbefc4 100755 --- a/scripts/upload-artifacts +++ b/scripts/upload-artifacts @@ -91,6 +91,7 @@ generate_instructions() { Maven Repo +

Stainless SDK Maven Repository