diff --git a/.release-please-manifest.json b/.release-please-manifest.json index f3343e21..f38100a4 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.125.0" + ".": "0.126.0" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index fd5aad70..e70ac5eb 100644 --- a/.stats.yml +++ b/.stats.yml @@ -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 diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b482a40..8e283c746 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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) diff --git a/pyproject.toml b/pyproject.toml index 2bf23915..bb2dbd26 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -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" diff --git a/src/lithic/_version.py b/src/lithic/_version.py index dd6fbb88..9c42a542 100644 --- a/src/lithic/_version.py +++ b/src/lithic/_version.py @@ -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 diff --git a/src/lithic/resources/cards/cards.py b/src/lithic/resources/cards/cards.py index 0ab13db6..41d0e592 100644 --- a/src/lithic/resources/cards/cards.py +++ b/src/lithic/resources/cards/cards.py @@ -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: @@ -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: diff --git a/src/lithic/types/account.py b/src/lithic/types/account.py index 7cc0f683..94a944b3 100644 --- a/src/lithic/types/account.py +++ b/src/lithic/types/account.py @@ -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. """ diff --git a/src/lithic/types/auth_rules/conditional_authorization_adjustment_parameters.py b/src/lithic/types/auth_rules/conditional_authorization_adjustment_parameters.py index 74c7d1d8..4cf486b8 100644 --- a/src/lithic/types/auth_rules/conditional_authorization_adjustment_parameters.py +++ b/src/lithic/types/auth_rules/conditional_authorization_adjustment_parameters.py @@ -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: @@ -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] diff --git a/src/lithic/types/auth_rules/conditional_authorization_adjustment_parameters_param.py b/src/lithic/types/auth_rules/conditional_authorization_adjustment_parameters_param.py index efd835fc..2a745175 100644 --- a/src/lithic/types/auth_rules/conditional_authorization_adjustment_parameters_param.py +++ b/src/lithic/types/auth_rules/conditional_authorization_adjustment_parameters_param.py @@ -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: @@ -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]] diff --git a/src/lithic/types/card.py b/src/lithic/types/card.py index 99b56ba7..3bb986c2 100644 --- a/src/lithic/types/card.py +++ b/src/lithic/types/card.py @@ -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. """ diff --git a/src/lithic/types/card_authorization.py b/src/lithic/types/card_authorization.py index b477c63f..4b11c293 100644 --- a/src/lithic/types/card_authorization.py +++ b/src/lithic/types/card_authorization.py @@ -20,6 +20,9 @@ "Avs", "Card", "Merchant", + "NameValidation", + "NameValidationName", + "NameValidationNameOnFileMatch", "ServiceLocation", "FleetInfo", "LatestChallenge", @@ -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. @@ -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 @@ -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 @@ -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