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.127.0"
".": "0.128.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: 195
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/lithic/lithic-efe780032e44b3cf0f6914407e43bce6aa7176fa50aa6ec018f93c1f28af8490.yml
openapi_spec_hash: fcb4ca53ca59978f23f21d7c74fcc0b0
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/lithic/lithic-c1cfc621309e4d49899f9b055c399d7ad3eb24c05bad299322c1e03804d3d130.yml
openapi_spec_hash: 799d9da903ff2e4d51fe3f1566d17c92
config_hash: a0a579b0564a5c18568a78f5ba2b6653
13 changes: 13 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,18 @@
# Changelog

## 0.128.0 (2026-05-28)

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

### Features

* **api:** Add created field and make completed_at nullable in latest_challenge ([14f5f3b](https://github.com/lithic-com/lithic-java/commit/14f5f3bb2e2ad05201f3b5553d1d96c82419554d))


### Documentation

* **api:** update support contact from email to URL in account and card ([0df9db9](https://github.com/lithic-com/lithic-java/commit/0df9db999c78ee16730eedd995b96496e96576b9))

## 0.127.0 (2026-05-26)

Full Changelog: [v0.126.0...v0.127.0](https://github.com/lithic-com/lithic-java/compare/v0.126.0...v0.127.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.127.0)
[![javadoc](https://javadoc.io/badge2/com.lithic.api/lithic-java/0.127.0/javadoc.svg)](https://javadoc.io/doc/com.lithic.api/lithic-java/0.127.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.128.0)
[![javadoc](https://javadoc.io/badge2/com.lithic.api/lithic-java/0.128.0/javadoc.svg)](https://javadoc.io/doc/com.lithic.api/lithic-java/0.128.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.127.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.128.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.127.0")
implementation("com.lithic.api:lithic-java:0.128.0")
```

### Maven
Expand All @@ -42,7 +42,7 @@ implementation("com.lithic.api:lithic-java:0.127.0")
<dependency>
<groupId>com.lithic.api</groupId>
<artifactId>lithic-java</artifactId>
<version>0.127.0</version>
<version>0.128.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.127.0" // x-release-please-version
version = "0.128.0" // x-release-please-version
}

subprojects {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,8 +113,8 @@ private constructor(
* * `CLOSED` - Account will not be able to transact or create new cards. `CLOSED` accounts are
* unable to be transitioned to `ACTIVE` or `PAUSED` states. Accounts can be manually set to
* `CLOSED`, or this can be done by Lithic due to failure to pass KYB/KYC or for
* risk/compliance reasons. Please contact [support@lithic.com](mailto:support@lithic.com) if
* you believe this was done by mistake.
* risk/compliance reasons. Please contact [support.lithic.com](https://support.lithic.com/)
* if you believe this was done by mistake.
*
* @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).
Expand Down Expand Up @@ -391,8 +391,9 @@ private constructor(
* * `CLOSED` - Account will not be able to transact or create new cards. `CLOSED` accounts
* are unable to be transitioned to `ACTIVE` or `PAUSED` states. Accounts can be manually
* set to `CLOSED`, or this can be done by Lithic due to failure to pass KYB/KYC or for
* risk/compliance reasons. Please contact [support@lithic.com](mailto:support@lithic.com)
* if you believe this was done by mistake.
* risk/compliance reasons. Please contact
* [support.lithic.com](https://support.lithic.com/) if you believe this was done by
* mistake.
*/
fun state(state: State) = state(JsonField.of(state))

Expand Down Expand Up @@ -898,8 +899,8 @@ private constructor(
* * `CLOSED` - Account will not be able to transact or create new cards. `CLOSED` accounts are
* unable to be transitioned to `ACTIVE` or `PAUSED` states. Accounts can be manually set to
* `CLOSED`, or this can be done by Lithic due to failure to pass KYB/KYC or for
* risk/compliance reasons. Please contact [support@lithic.com](mailto:support@lithic.com) if
* you believe this was done by mistake.
* risk/compliance reasons. Please contact [support.lithic.com](https://support.lithic.com/)
* if you believe this was done by mistake.
*/
class State @JsonCreator private constructor(private val value: JsonField<String>) : Enum {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -443,7 +443,8 @@ private constructor(

/**
* Primary Account Number (PAN) (i.e. the card number). Customers must be PCI compliant to have
* PAN returned as a field in production. Please contact support@lithic.com for questions.
* PAN returned as a field in production. Please contact https://support.lithic.com/ for
* questions.
*
* @throws LithicInvalidDataException if the JSON field has an unexpected type (e.g. if the
* server responded with an unexpected value).
Expand Down Expand Up @@ -1253,8 +1254,8 @@ private constructor(

/**
* Primary Account Number (PAN) (i.e. the card number). Customers must be PCI compliant to
* have PAN returned as a field in production. Please contact support@lithic.com for
* questions.
* have PAN returned as a field in production. Please contact https://support.lithic.com/
* for questions.
*/
fun pan(pan: String) = pan(JsonField.of(pan))

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5638,24 +5638,45 @@ private constructor(
class LatestChallenge
@JsonCreator(mode = JsonCreator.Mode.DISABLED)
private constructor(
private val completedAt: JsonField<OffsetDateTime>,
private val created: JsonField<OffsetDateTime>,
private val method: JsonField<Method>,
private val phoneNumber: JsonField<String>,
private val status: JsonField<Status>,
private val completedAt: JsonField<OffsetDateTime>,
private val additionalProperties: MutableMap<String, JsonValue>,
) {

@JsonCreator
private constructor(
@JsonProperty("completed_at")
@ExcludeMissing
completedAt: JsonField<OffsetDateTime> = JsonMissing.of(),
@JsonProperty("created")
@ExcludeMissing
created: JsonField<OffsetDateTime> = JsonMissing.of(),
@JsonProperty("method") @ExcludeMissing method: JsonField<Method> = JsonMissing.of(),
@JsonProperty("phone_number")
@ExcludeMissing
phoneNumber: JsonField<String> = JsonMissing.of(),
@JsonProperty("status") @ExcludeMissing status: JsonField<Status> = JsonMissing.of(),
@JsonProperty("completed_at")
@ExcludeMissing
completedAt: JsonField<OffsetDateTime> = JsonMissing.of(),
) : this(method, phoneNumber, status, completedAt, mutableMapOf())
) : this(completedAt, created, method, phoneNumber, status, mutableMapOf())

/**
* The date and time when the Authorization Challenge was completed in UTC. Filled only if
* the challenge has been completed.
*
* @throws LithicInvalidDataException if the JSON field has an unexpected type (e.g. if the
* server responded with an unexpected value).
*/
fun completedAt(): Optional<OffsetDateTime> = completedAt.getOptional("completed_at")

/**
* The date and time when the Authorization Challenge was created in UTC
*
* @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 created(): OffsetDateTime = created.getRequired("created")

/**
* The method used to deliver the challenge to the cardholder
Expand Down Expand Up @@ -5690,13 +5711,20 @@ private constructor(
fun status(): Status = status.getRequired("status")

/**
* The date and time when the Authorization Challenge was completed in UTC. Present only if
* the status is `COMPLETED`.
* Returns the raw JSON value of [completedAt].
*
* @throws LithicInvalidDataException if the JSON field has an unexpected type (e.g. if the
* server responded with an unexpected value).
* Unlike [completedAt], this method doesn't throw if the JSON field has an unexpected type.
*/
fun completedAt(): Optional<OffsetDateTime> = completedAt.getOptional("completed_at")
@JsonProperty("completed_at")
@ExcludeMissing
fun _completedAt(): JsonField<OffsetDateTime> = completedAt

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

/**
* Returns the raw JSON value of [method].
Expand All @@ -5721,15 +5749,6 @@ private constructor(
*/
@JsonProperty("status") @ExcludeMissing fun _status(): JsonField<Status> = status

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

@JsonAnySetter
private fun putAdditionalProperty(key: String, value: JsonValue) {
additionalProperties.put(key, value)
Expand All @@ -5749,6 +5768,8 @@ private constructor(
*
* The following fields are required:
* ```java
* .completedAt()
* .created()
* .method()
* .phoneNumber()
* .status()
Expand All @@ -5760,21 +5781,57 @@ private constructor(
/** A builder for [LatestChallenge]. */
class Builder internal constructor() {

private var completedAt: JsonField<OffsetDateTime>? = null
private var created: JsonField<OffsetDateTime>? = null
private var method: JsonField<Method>? = null
private var phoneNumber: JsonField<String>? = null
private var status: JsonField<Status>? = null
private var completedAt: JsonField<OffsetDateTime> = JsonMissing.of()
private var additionalProperties: MutableMap<String, JsonValue> = mutableMapOf()

@JvmSynthetic
internal fun from(latestChallenge: LatestChallenge) = apply {
completedAt = latestChallenge.completedAt
created = latestChallenge.created
method = latestChallenge.method
phoneNumber = latestChallenge.phoneNumber
status = latestChallenge.status
completedAt = latestChallenge.completedAt
additionalProperties = latestChallenge.additionalProperties.toMutableMap()
}

/**
* The date and time when the Authorization Challenge was completed in UTC. Filled only
* if the challenge has been completed.
*/
fun completedAt(completedAt: OffsetDateTime?) =
completedAt(JsonField.ofNullable(completedAt))

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

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

/** The date and time when the Authorization Challenge was created in UTC */
fun created(created: OffsetDateTime) = created(JsonField.of(created))

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

/**
* The method used to deliver the challenge to the cardholder
* * `SMS` - Challenge was delivered via SMS
Expand Down Expand Up @@ -5830,23 +5887,6 @@ private constructor(
*/
fun status(status: JsonField<Status>) = apply { this.status = status }

/**
* The date and time when the Authorization Challenge was completed in UTC. Present only
* if the status is `COMPLETED`.
*/
fun completedAt(completedAt: OffsetDateTime) = completedAt(JsonField.of(completedAt))

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

fun additionalProperties(additionalProperties: Map<String, JsonValue>) = apply {
this.additionalProperties.clear()
putAllAdditionalProperties(additionalProperties)
Expand All @@ -5873,6 +5913,8 @@ private constructor(
*
* The following fields are required:
* ```java
* .completedAt()
* .created()
* .method()
* .phoneNumber()
* .status()
Expand All @@ -5882,10 +5924,11 @@ private constructor(
*/
fun build(): LatestChallenge =
LatestChallenge(
checkRequired("completedAt", completedAt),
checkRequired("created", created),
checkRequired("method", method),
checkRequired("phoneNumber", phoneNumber),
checkRequired("status", status),
completedAt,
additionalProperties.toMutableMap(),
)
}
Expand All @@ -5906,10 +5949,11 @@ private constructor(
return@apply
}

completedAt()
created()
method().validate()
phoneNumber()
status().validate()
completedAt()
validated = true
}

Expand All @@ -5929,10 +5973,11 @@ private constructor(
*/
@JvmSynthetic
internal fun validity(): Int =
(method.asKnown().getOrNull()?.validity() ?: 0) +
(if (completedAt.asKnown().isPresent) 1 else 0) +
(if (created.asKnown().isPresent) 1 else 0) +
(method.asKnown().getOrNull()?.validity() ?: 0) +
(if (phoneNumber.asKnown().isPresent) 1 else 0) +
(status.asKnown().getOrNull()?.validity() ?: 0) +
(if (completedAt.asKnown().isPresent) 1 else 0)
(status.asKnown().getOrNull()?.validity() ?: 0)

/**
* The method used to deliver the challenge to the cardholder
Expand Down Expand Up @@ -6249,21 +6294,22 @@ private constructor(
}

return other is LatestChallenge &&
completedAt == other.completedAt &&
created == other.created &&
method == other.method &&
phoneNumber == other.phoneNumber &&
status == other.status &&
completedAt == other.completedAt &&
additionalProperties == other.additionalProperties
}

private val hashCode: Int by lazy {
Objects.hash(method, phoneNumber, status, completedAt, additionalProperties)
Objects.hash(completedAt, created, method, phoneNumber, status, additionalProperties)
}

override fun hashCode(): Int = hashCode

override fun toString() =
"LatestChallenge{method=$method, phoneNumber=$phoneNumber, status=$status, completedAt=$completedAt, additionalProperties=$additionalProperties}"
"LatestChallenge{completedAt=$completedAt, created=$created, method=$method, phoneNumber=$phoneNumber, status=$status, additionalProperties=$additionalProperties}"
}

/** Card network of the authorization. */
Expand Down
Loading
Loading