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.125.0"
".": "0.126.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: 194
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-93254f6abf9fab9e687be2f48198b5126c298b634e2ad626abf413f560f1cbe1.yml
openapi_spec_hash: 6aaac55fbf96d785ca3867adc3c7ca0e
config_hash: a0a579b0564a5c18568a78f5ba2b6653
15 changes: 15 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,20 @@
# Changelog

## 0.126.0 (2026-06-05)

Full Changelog: [v0.125.0...v0.126.0](https://github.com/lithic-com/lithic-python/compare/v0.125.0...v0.126.0)

### Features

* **api:** Add created field and make completed_at nullable in latest_challenge ([126641d](https://github.com/lithic-com/lithic-python/commit/126641d827512c68dfef741d7a6a053cbfe94f12))
* **api:** add hold_adjustment action type to auth rules ([dc58d95](https://github.com/lithic-com/lithic-python/commit/dc58d95543aa7723246f81b6d836512f19bc02a0))
* **api:** add name_validation field to card_authorization ([5bde4bc](https://github.com/lithic-com/lithic-python/commit/5bde4bcae161d20561ed1be62e636462018365e7))


### Documentation

* **api:** update support contact URL in cards/account/card documentation ([71b5283](https://github.com/lithic-com/lithic-python/commit/71b5283efe22257a9a706ebc41ba51c523775d5c))

## 0.125.0 (2026-05-26)

Full Changelog: [v0.124.0...v0.125.0](https://github.com/lithic-com/lithic-python/compare/v0.124.0...v0.125.0)
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "lithic"
version = "0.125.0"
version = "0.126.0"
description = "The official Python library for the lithic API"
dynamic = ["readme"]
license = "Apache-2.0"
Expand Down
2 changes: 1 addition & 1 deletion src/lithic/_version.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

__title__ = "lithic"
__version__ = "0.125.0" # x-release-please-version
__version__ = "0.126.0" # x-release-please-version
8 changes: 4 additions & 4 deletions src/lithic/resources/cards/cards.py
Original file line number Diff line number Diff line change
Expand Up @@ -1200,8 +1200,8 @@ def search_by_pan(

Customers must be PCI
compliant to use this endpoint. Please contact
[support@lithic.com](mailto:support@lithic.com) for questions. _Note: this is a
`POST` endpoint because it is more secure to send sensitive data in a request
[support.lithic.com](https://support.lithic.com/) for questions. _Note: this is
a `POST` endpoint because it is more secure to send sensitive data in a request
body than in a URL._

Args:
Expand Down Expand Up @@ -2428,8 +2428,8 @@ async def search_by_pan(

Customers must be PCI
compliant to use this endpoint. Please contact
[support@lithic.com](mailto:support@lithic.com) for questions. _Note: this is a
`POST` endpoint because it is more secure to send sensitive data in a request
[support.lithic.com](https://support.lithic.com/) for questions. _Note: this is
a `POST` endpoint because it is more secure to send sensitive data in a request
body than in a URL._

Args:
Expand Down
2 changes: 1 addition & 1 deletion src/lithic/types/account.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ class Account(BaseModel):
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
[support.lithic.com](https://support.lithic.com/) if you believe this was done
by mistake.
"""

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@
from .conditional_value import ConditionalValue
from .conditional_operation import ConditionalOperation

__all__ = ["ConditionalAuthorizationAdjustmentParameters", "Adjustment", "Condition", "ConditionParameters"]
__all__ = ["ConditionalAuthorizationAdjustmentParameters", "Action", "Condition", "ConditionParameters"]


class Adjustment(BaseModel):
"""The hold adjustment to apply if the conditions are met"""
class Action(BaseModel):
"""The hold adjustment to apply if the conditions are met."""

mode: Literal["REPLACE_WITH_AMOUNT", "ADD_PERCENTAGE", "ADD_AMOUNT"]
"""The mode of the hold adjustment, determining how the value is interpreted:
Expand Down Expand Up @@ -244,7 +244,7 @@ class Condition(BaseModel):


class ConditionalAuthorizationAdjustmentParameters(BaseModel):
adjustment: Adjustment
"""The hold adjustment to apply if the conditions are met"""
action: Action
"""The hold adjustment to apply if the conditions are met."""

conditions: List[Condition]
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@
from .conditional_operation import ConditionalOperation
from .conditional_value_param import ConditionalValueParam

__all__ = ["ConditionalAuthorizationAdjustmentParametersParam", "Adjustment", "Condition", "ConditionParameters"]
__all__ = ["ConditionalAuthorizationAdjustmentParametersParam", "Action", "Condition", "ConditionParameters"]


class Adjustment(TypedDict, total=False):
"""The hold adjustment to apply if the conditions are met"""
class Action(TypedDict, total=False):
"""The hold adjustment to apply if the conditions are met."""

mode: Required[Literal["REPLACE_WITH_AMOUNT", "ADD_PERCENTAGE", "ADD_AMOUNT"]]
"""The mode of the hold adjustment, determining how the value is interpreted:
Expand Down Expand Up @@ -248,7 +248,7 @@ class Condition(TypedDict, total=False):


class ConditionalAuthorizationAdjustmentParametersParam(TypedDict, total=False):
adjustment: Required[Adjustment]
"""The hold adjustment to apply if the conditions are met"""
action: Required[Action]
"""The hold adjustment to apply if the conditions are met."""

conditions: Required[Iterable[Condition]]
2 changes: 1 addition & 1 deletion src/lithic/types/card.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,5 @@ class Card(NonPCICard):
"""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.
field in production. Please contact https://support.lithic.com/ for questions.
"""
62 changes: 56 additions & 6 deletions src/lithic/types/card_authorization.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@
"Avs",
"Card",
"Merchant",
"NameValidation",
"NameValidationName",
"NameValidationNameOnFileMatch",
"ServiceLocation",
"FleetInfo",
"LatestChallenge",
Expand Down Expand Up @@ -149,6 +152,43 @@ class Merchant(merchant.Merchant):
"""Street address of card acceptor."""


class NameValidationName(BaseModel):
"""Cardholder name as provided by the card network."""

first: str
"""First name"""

last: str
"""Last name"""

middle: Optional[str] = None
"""Middle name"""


class NameValidationNameOnFileMatch(BaseModel):
"""
Lithic's computed match result comparing the network-provided name to the name on file.
"""

full_name: Literal["MATCH", "PARTIAL_MATCH", "NO_MATCH", "UNVERIFIED"]
"""Overall name match result."""


class NameValidation(BaseModel):
"""
Network name validation data, present when the card network requested name validation for this transaction. Contains the cardholder name provided by the network and Lithic's computed match result against KYC data on file.
"""

name: NameValidationName
"""Cardholder name as provided by the card network."""

name_on_file_match: NameValidationNameOnFileMatch
"""
Lithic's computed match result comparing the network-provided name to the name
on file.
"""


class ServiceLocation(BaseModel):
"""
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.
Expand Down Expand Up @@ -201,6 +241,15 @@ class LatestChallenge(BaseModel):
The latest Authorization Challenge that was issued to the cardholder for this merchant.
"""

completed_at: Optional[datetime] = None
"""The date and time when the Authorization Challenge was completed in UTC.

Filled only if the challenge has been completed.
"""

created: datetime
"""The date and time when the Authorization Challenge was created in UTC"""

method: Literal["SMS", "OUT_OF_BAND"]
"""The method used to deliver the challenge to the cardholder

Expand All @@ -224,12 +273,6 @@ class LatestChallenge(BaseModel):
- `ERROR` - There was an error processing the challenge
"""

completed_at: Optional[datetime] = None
"""The date and time when the Authorization Challenge was completed in UTC.

Present only if the status is `COMPLETED`.
"""


class NetworkSpecificDataMastercardOnBehalfServiceResult(BaseModel):
result_1: str
Expand Down Expand Up @@ -467,6 +510,13 @@ class CardAuthorization(BaseModel):
merchant_currency: str
"""3-character alphabetic ISO 4217 code for the local currency of the transaction."""

name_validation: Optional[NameValidation] = None
"""
Network name validation data, present when the card network requested name
validation for this transaction. Contains the cardholder name provided by the
network and Lithic's computed match result against KYC data on file.
"""

service_location: Optional[ServiceLocation] = None
"""
Where the cardholder received the service, when different from the card acceptor
Expand Down