Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "0.121.0"
".": "0.122.0"
}
4 changes: 2 additions & 2 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 190
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/lithic%2Flithic-5bb8d2bedef02f07498de3f252fa6da1393d2fb59f727b05828804cea9aded30.yml
openapi_spec_hash: d1f260252b3bb7ebc77fa7134db6c65d
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/lithic%2Flithic-7fb459122adaf544433c3d5acd17566e642289b3eccb7ee25d7b7ce418967e32.yml
openapi_spec_hash: fe69fbb129fa5b7d7b1e71d4f2a908f1
config_hash: 400b9afe0f7f7b7d96177d05950775f9
20 changes: 20 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,25 @@
# Changelog

## 0.122.0 (2026-03-20)

Full Changelog: [v0.121.0...v0.122.0](https://github.com/lithic-com/lithic-java/compare/v0.121.0...v0.122.0)

### Features

* **api:** add CARD_AGE and ACCOUNT_AGE attributes to conditional authorization ([aa189f8](https://github.com/lithic-com/lithic-java/commit/aa189f84c9fa9753c28d42a9dca13a53c36ba54d))
* **api:** add merchant location/service fields, SERVICE_LOCATION authorization attributes ([94423c4](https://github.com/lithic-com/lithic-java/commit/94423c4928f5ff4fcf987abf908bc22429bfde29))


### Chores

* **tests:** bump steady to v0.19.4 ([652cb78](https://github.com/lithic-com/lithic-java/commit/652cb7870ecddd6ac42da9eecfcee80e719014e9))
* **tests:** bump steady to v0.19.5 ([acbcb0e](https://github.com/lithic-com/lithic-java/commit/acbcb0e1360e72c1c2aab659d3574a02091ae76b))


### Refactors

* **tests:** switch from prism to steady ([d4a050b](https://github.com/lithic-com/lithic-java/commit/d4a050baf1470935fbaa0e715a3240c035691f2b))

## 0.121.0 (2026-03-17)

Full Changelog: [v0.120.0...v0.121.0](https://github.com/lithic-com/lithic-java/compare/v0.120.0...v0.121.0)
Expand Down
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

<!-- x-release-please-start-version -->

[![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.121.0)
[![javadoc](https://javadoc.io/badge2/com.lithic.api/lithic-java/0.121.0/javadoc.svg)](https://javadoc.io/doc/com.lithic.api/lithic-java/0.121.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.122.0)
[![javadoc](https://javadoc.io/badge2/com.lithic.api/lithic-java/0.122.0/javadoc.svg)](https://javadoc.io/doc/com.lithic.api/lithic-java/0.122.0)

<!-- x-release-please-end -->

Expand All @@ -22,7 +22,7 @@ Use the Lithic MCP Server to enable AI assistants to interact with this API, all

<!-- x-release-please-start-version -->

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.121.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.122.0).

<!-- x-release-please-end -->

Expand All @@ -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.121.0")
implementation("com.lithic.api:lithic-java:0.122.0")
```

### Maven
Expand All @@ -42,7 +42,7 @@ implementation("com.lithic.api:lithic-java:0.121.0")
<dependency>
<groupId>com.lithic.api</groupId>
<artifactId>lithic-java</artifactId>
<version>0.121.0</version>
<version>0.122.0</version>
</dependency>
```

Expand Down
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ repositories {

allprojects {
group = "com.lithic.api"
version = "0.121.0" // x-release-please-version
version = "0.122.0" // x-release-please-version
}

subprojects {
Expand Down
2 changes: 1 addition & 1 deletion buildSrc/src/main/kotlin/lithic.kotlin.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ tasks.withType<Test>().configureEach {

val ktfmt by configurations.creating
dependencies {
ktfmt("com.facebook:ktfmt:0.56")
ktfmt("com.facebook:ktfmt:0.61")
}

fun registerKtfmt(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1780,14 +1780,15 @@ private constructor(
private val cardholderAuthentication: JsonField<CardholderAuthentication>,
private val created: JsonField<OffsetDateTime>,
private val financialAccountToken: JsonField<String>,
private val merchant: JsonField<Merchant>,
private val merchant: JsonField<Transaction.TransactionMerchant>,
private val merchantAmount: JsonField<Long>,
private val merchantAuthorizationAmount: JsonField<Long>,
private val merchantCurrency: JsonField<String>,
private val network: JsonField<Transaction.Network>,
private val networkRiskScore: JsonField<Long>,
private val pos: JsonField<Transaction.Pos>,
private val result: JsonField<Transaction.DeclineResult>,
private val serviceLocation: JsonField<Transaction.ServiceLocation>,
private val settledAmount: JsonField<Long>,
private val status: JsonField<Transaction.Status>,
private val tags: JsonField<Transaction.Tags>,
Expand Down Expand Up @@ -1835,7 +1836,7 @@ private constructor(
financialAccountToken: JsonField<String> = JsonMissing.of(),
@JsonProperty("merchant")
@ExcludeMissing
merchant: JsonField<Merchant> = JsonMissing.of(),
merchant: JsonField<Transaction.TransactionMerchant> = JsonMissing.of(),
@JsonProperty("merchant_amount")
@ExcludeMissing
merchantAmount: JsonField<Long> = JsonMissing.of(),
Expand All @@ -1855,6 +1856,9 @@ private constructor(
@JsonProperty("result")
@ExcludeMissing
result: JsonField<Transaction.DeclineResult> = JsonMissing.of(),
@JsonProperty("service_location")
@ExcludeMissing
serviceLocation: JsonField<Transaction.ServiceLocation> = JsonMissing.of(),
@JsonProperty("settled_amount")
@ExcludeMissing
settledAmount: JsonField<Long> = JsonMissing.of(),
Expand Down Expand Up @@ -1896,6 +1900,7 @@ private constructor(
networkRiskScore,
pos,
result,
serviceLocation,
settledAmount,
status,
tags,
Expand Down Expand Up @@ -1929,6 +1934,7 @@ private constructor(
.networkRiskScore(networkRiskScore)
.pos(pos)
.result(result)
.serviceLocation(serviceLocation)
.settledAmount(settledAmount)
.status(status)
.tags(tags)
Expand Down Expand Up @@ -2048,10 +2054,12 @@ private constructor(
financialAccountToken.getOptional("financial_account_token")

/**
* Merchant information including full location details.
*
* @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).
*/
fun merchant(): Merchant = merchant.getRequired("merchant")
fun merchant(): Transaction.TransactionMerchant = merchant.getRequired("merchant")

/**
* Analogous to the 'amount', but in the merchant currency.
Expand Down Expand Up @@ -2113,6 +2121,17 @@ private constructor(
*/
fun result(): Transaction.DeclineResult = result.getRequired("result")

/**
* Where the cardholder received the service, when different from the card acceptor
* location. This is populated from network data elements such as Mastercard DE-122 SE1
* SF9-14 and Visa F34 DS02.
*
* @throws LithicInvalidDataException if the JSON field has an unexpected type (e.g. if the
* server responded with an unexpected value).
*/
fun serviceLocation(): Optional<Transaction.ServiceLocation> =
serviceLocation.getOptional("service_location")

/**
* The settled amount of the transaction in the settlement currency.
*
Expand Down Expand Up @@ -2291,7 +2310,9 @@ private constructor(
*
* Unlike [merchant], this method doesn't throw if the JSON field has an unexpected type.
*/
@JsonProperty("merchant") @ExcludeMissing fun _merchant(): JsonField<Merchant> = merchant
@JsonProperty("merchant")
@ExcludeMissing
fun _merchant(): JsonField<Transaction.TransactionMerchant> = merchant

/**
* Returns the raw JSON value of [merchantAmount].
Expand Down Expand Up @@ -2361,6 +2382,16 @@ private constructor(
@ExcludeMissing
fun _result(): JsonField<Transaction.DeclineResult> = result

/**
* Returns the raw JSON value of [serviceLocation].
*
* Unlike [serviceLocation], this method doesn't throw if the JSON field has an unexpected
* type.
*/
@JsonProperty("service_location")
@ExcludeMissing
fun _serviceLocation(): JsonField<Transaction.ServiceLocation> = serviceLocation

/**
* Returns the raw JSON value of [settledAmount].
*
Expand Down Expand Up @@ -2460,6 +2491,7 @@ private constructor(
* .networkRiskScore()
* .pos()
* .result()
* .serviceLocation()
* .settledAmount()
* .status()
* .tags()
Expand Down Expand Up @@ -2487,14 +2519,15 @@ private constructor(
private var cardholderAuthentication: JsonField<CardholderAuthentication>? = null
private var created: JsonField<OffsetDateTime>? = null
private var financialAccountToken: JsonField<String>? = null
private var merchant: JsonField<Merchant>? = null
private var merchant: JsonField<Transaction.TransactionMerchant>? = null
private var merchantAmount: JsonField<Long>? = null
private var merchantAuthorizationAmount: JsonField<Long>? = null
private var merchantCurrency: JsonField<String>? = null
private var network: JsonField<Transaction.Network>? = null
private var networkRiskScore: JsonField<Long>? = null
private var pos: JsonField<Transaction.Pos>? = null
private var result: JsonField<Transaction.DeclineResult>? = null
private var serviceLocation: JsonField<Transaction.ServiceLocation>? = null
private var settledAmount: JsonField<Long>? = null
private var status: JsonField<Transaction.Status>? = null
private var tags: JsonField<Transaction.Tags>? = null
Expand Down Expand Up @@ -2527,6 +2560,7 @@ private constructor(
networkRiskScore = cardTransaction.networkRiskScore
pos = cardTransaction.pos
result = cardTransaction.result
serviceLocation = cardTransaction.serviceLocation
settledAmount = cardTransaction.settledAmount
status = cardTransaction.status
tags = cardTransaction.tags
Expand Down Expand Up @@ -2789,16 +2823,20 @@ private constructor(
this.financialAccountToken = financialAccountToken
}

fun merchant(merchant: Merchant) = merchant(JsonField.of(merchant))
/** Merchant information including full location details. */
fun merchant(merchant: Transaction.TransactionMerchant) =
merchant(JsonField.of(merchant))

/**
* Sets [Builder.merchant] to an arbitrary JSON value.
*
* You should usually call [Builder.merchant] with a well-typed [Merchant] value
* instead. This method is primarily for setting the field to an undocumented or not yet
* supported value.
* You should usually call [Builder.merchant] with a well-typed
* [Transaction.TransactionMerchant] value instead. This method is primarily for setting
* the field to an undocumented or not yet supported value.
*/
fun merchant(merchant: JsonField<Merchant>) = apply { this.merchant = merchant }
fun merchant(merchant: JsonField<Transaction.TransactionMerchant>) = apply {
this.merchant = merchant
}

/** Analogous to the 'amount', but in the merchant currency. */
@Deprecated("deprecated")
Expand Down Expand Up @@ -2957,6 +2995,29 @@ private constructor(
this.result = result
}

/**
* Where the cardholder received the service, when different from the card acceptor
* location. This is populated from network data elements such as Mastercard DE-122 SE1
* SF9-14 and Visa F34 DS02.
*/
fun serviceLocation(serviceLocation: Transaction.ServiceLocation?) =
serviceLocation(JsonField.ofNullable(serviceLocation))

/** Alias for calling [Builder.serviceLocation] with `serviceLocation.orElse(null)`. */
fun serviceLocation(serviceLocation: Optional<Transaction.ServiceLocation>) =
serviceLocation(serviceLocation.getOrNull())

/**
* Sets [Builder.serviceLocation] to an arbitrary JSON value.
*
* You should usually call [Builder.serviceLocation] with a well-typed
* [Transaction.ServiceLocation] value instead. This method is primarily for setting the
* field to an undocumented or not yet supported value.
*/
fun serviceLocation(serviceLocation: JsonField<Transaction.ServiceLocation>) = apply {
this.serviceLocation = serviceLocation
}

/** The settled amount of the transaction in the settlement currency. */
@Deprecated("deprecated")
fun settledAmount(settledAmount: Long) = settledAmount(JsonField.of(settledAmount))
Expand Down Expand Up @@ -3110,6 +3171,7 @@ private constructor(
* .networkRiskScore()
* .pos()
* .result()
* .serviceLocation()
* .settledAmount()
* .status()
* .tags()
Expand Down Expand Up @@ -3143,6 +3205,7 @@ private constructor(
checkRequired("networkRiskScore", networkRiskScore),
checkRequired("pos", pos),
checkRequired("result", result),
checkRequired("serviceLocation", serviceLocation),
checkRequired("settledAmount", settledAmount),
checkRequired("status", status),
checkRequired("tags", tags),
Expand Down Expand Up @@ -3182,6 +3245,7 @@ private constructor(
networkRiskScore()
pos().validate()
result().validate()
serviceLocation().ifPresent { it.validate() }
settledAmount()
status().validate()
tags().validate()
Expand Down Expand Up @@ -3229,6 +3293,7 @@ private constructor(
(if (networkRiskScore.asKnown().isPresent) 1 else 0) +
(pos.asKnown().getOrNull()?.validity() ?: 0) +
(result.asKnown().getOrNull()?.validity() ?: 0) +
(serviceLocation.asKnown().getOrNull()?.validity() ?: 0) +
(if (settledAmount.asKnown().isPresent) 1 else 0) +
(status.asKnown().getOrNull()?.validity() ?: 0) +
(tags.asKnown().getOrNull()?.validity() ?: 0) +
Expand Down Expand Up @@ -3546,6 +3611,7 @@ private constructor(
networkRiskScore == other.networkRiskScore &&
pos == other.pos &&
result == other.result &&
serviceLocation == other.serviceLocation &&
settledAmount == other.settledAmount &&
status == other.status &&
tags == other.tags &&
Expand Down Expand Up @@ -3579,6 +3645,7 @@ private constructor(
networkRiskScore,
pos,
result,
serviceLocation,
settledAmount,
status,
tags,
Expand All @@ -3593,6 +3660,6 @@ private constructor(
override fun hashCode(): Int = hashCode

override fun toString() =
"CardTransaction{token=$token, accountToken=$accountToken, acquirerFee=$acquirerFee, acquirerReferenceNumber=$acquirerReferenceNumber, amount=$amount, amounts=$amounts, authorizationAmount=$authorizationAmount, authorizationCode=$authorizationCode, avs=$avs, cardToken=$cardToken, cardholderAuthentication=$cardholderAuthentication, created=$created, financialAccountToken=$financialAccountToken, merchant=$merchant, merchantAmount=$merchantAmount, merchantAuthorizationAmount=$merchantAuthorizationAmount, merchantCurrency=$merchantCurrency, network=$network, networkRiskScore=$networkRiskScore, pos=$pos, result=$result, settledAmount=$settledAmount, status=$status, tags=$tags, tokenInfo=$tokenInfo, updated=$updated, events=$events, family=$family, additionalProperties=$additionalProperties}"
"CardTransaction{token=$token, accountToken=$accountToken, acquirerFee=$acquirerFee, acquirerReferenceNumber=$acquirerReferenceNumber, amount=$amount, amounts=$amounts, authorizationAmount=$authorizationAmount, authorizationCode=$authorizationCode, avs=$avs, cardToken=$cardToken, cardholderAuthentication=$cardholderAuthentication, created=$created, financialAccountToken=$financialAccountToken, merchant=$merchant, merchantAmount=$merchantAmount, merchantAuthorizationAmount=$merchantAuthorizationAmount, merchantCurrency=$merchantCurrency, network=$network, networkRiskScore=$networkRiskScore, pos=$pos, result=$result, serviceLocation=$serviceLocation, settledAmount=$settledAmount, status=$status, tags=$tags, tokenInfo=$tokenInfo, updated=$updated, events=$events, family=$family, additionalProperties=$additionalProperties}"
}
}
Loading
Loading