diff --git a/.release-please-manifest.json b/.release-please-manifest.json index f24634e6..d34cd697 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.82.0" + ".": "0.83.0" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index c2e506e9..4dc8439b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## 0.83.0 (2025-01-24) + +Full Changelog: [v0.82.0...v0.83.0](https://github.com/lithic-com/lithic-python/compare/v0.82.0...v0.83.0) + +### Features + +* **api:** adds additional fields to TransactionEvents ([#684](https://github.com/lithic-com/lithic-python/issues/684)) ([90da354](https://github.com/lithic-com/lithic-python/commit/90da35429ab778882fac77ba4e886c017d5f5b78)) + + +### Chores + +* **api:** additional field added to 3DS Responses and Tokenization ([#681](https://github.com/lithic-com/lithic-python/issues/681)) ([08d4bad](https://github.com/lithic-com/lithic-python/commit/08d4bade198e712e59a598fdb35bab06907d05a8)) +* **internal:** minor formatting changes ([#683](https://github.com/lithic-com/lithic-python/issues/683)) ([3fd3619](https://github.com/lithic-com/lithic-python/commit/3fd3619639a433be49b8cdf27d0e92f8caaf0fe7)) + ## 0.82.0 (2025-01-21) Full Changelog: [v0.81.1...v0.82.0](https://github.com/lithic-com/lithic-python/compare/v0.81.1...v0.82.0) diff --git a/pyproject.toml b/pyproject.toml index 34cf57b6..50b0f9ab 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "lithic" -version = "0.82.0" +version = "0.83.0" description = "The official Python library for the lithic API" dynamic = ["readme"] license = "Apache-2.0" diff --git a/scripts/bootstrap b/scripts/bootstrap index 8c5c60eb..e84fe62c 100755 --- a/scripts/bootstrap +++ b/scripts/bootstrap @@ -4,7 +4,7 @@ set -e cd "$(dirname "$0")/.." -if [ -f "Brewfile" ] && [ "$(uname -s)" = "Darwin" ]; then +if ! command -v rye >/dev/null 2>&1 && [ -f "Brewfile" ] && [ "$(uname -s)" = "Darwin" ]; then brew bundle check >/dev/null 2>&1 || { echo "==> Installing Homebrew dependencies…" brew bundle diff --git a/scripts/lint b/scripts/lint index bb210338..c997f8ca 100755 --- a/scripts/lint +++ b/scripts/lint @@ -9,4 +9,3 @@ rye run lint echo "==> Making sure it imports" rye run python -c 'import lithic' - diff --git a/src/lithic/_version.py b/src/lithic/_version.py index 6f19e9cf..8b510cb6 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.82.0" # x-release-please-version +__version__ = "0.83.0" # x-release-please-version diff --git a/src/lithic/types/three_ds/authentication_retrieve_response.py b/src/lithic/types/three_ds/authentication_retrieve_response.py index 3b5a068e..dae4cc66 100644 --- a/src/lithic/types/three_ds/authentication_retrieve_response.py +++ b/src/lithic/types/three_ds/authentication_retrieve_response.py @@ -368,6 +368,27 @@ class AuthenticationRetrieveResponse(BaseModel): populated. """ + three_ds_requestor_challenge_indicator: Literal[ + "NO_PREFERENCE", + "NO_CHALLENGE_REQUESTED", + "CHALLENGE_PREFERENCE", + "CHALLENGE_MANDATE", + "NO_CHALLENGE_RISK_ALREADY_ASSESSED", + "DATA_SHARE_ONLY", + "OTHER", + ] + """Indicates whether a challenge is requested for this transaction + + - `NO_PREFERENCE` - No Preference + - `NO_CHALLENGE_REQUESTED` - No Challenge Requested + - `CHALLENGE_PREFERENCE` - Challenge requested (3DS Requestor preference) + - `CHALLENGE_MANDATE` - Challenge requested (Mandate) + - `NO_CHALLENGE_RISK_ALREADY_ASSESSED` - No Challenge requested (Transactional + risk analysis is already performed) + - `DATA_SHARE_ONLY` - No Challenge requested (Data Share Only) + - `OTHER` - Other indicators not captured by above. These are rarely used + """ + additional_data: Optional[AdditionalData] = None """ Object containing additional data about the 3DS request that is beyond the EMV diff --git a/src/lithic/types/tokenization.py b/src/lithic/types/tokenization.py index 477fab91..e267cbef 100644 --- a/src/lithic/types/tokenization.py +++ b/src/lithic/types/tokenization.py @@ -98,3 +98,6 @@ class Tokenization(BaseModel): events: Optional[List[Event]] = None """A list of events related to the tokenization.""" + + payment_account_reference_id: Optional[str] = None + """The network's unique reference for the card that is tokenized.""" diff --git a/src/lithic/types/transaction.py b/src/lithic/types/transaction.py index 4b824902..080f1d6b 100644 --- a/src/lithic/types/transaction.py +++ b/src/lithic/types/transaction.py @@ -397,11 +397,42 @@ class EventNetworkInfoMastercard(BaseModel): only. """ + original_banknet_reference_number: Optional[str] = None + """[Available on January 28th] Identifier assigned by Mastercard. + + Matches the `banknet_reference_number` of a prior related event. May be + populated in authorization reversals, incremental authorizations (authorization + requests that augment a previously authorized amount), automated fuel dispenser + authorization advices and clearings, and financial authorizations. If the + original banknet reference number contains all zeroes, then no actual reference + number could be found by the network or acquirer. If Mastercard converts a + transaction from dual-message to single-message, such as for certain ATM + transactions, it will populate the original banknet reference number in the + resulting financial authorization with the banknet reference number of the + initial authorization, which Lithic does not receive. + """ + + original_switch_serial_number: Optional[str] = None + """[Available on January 28th] Identifier assigned by Mastercard. + + Matches the `switch_serial_number` of a prior related event. May be populated in + returns and return reversals. Applicable to single-message transactions only. + """ + class EventNetworkInfoVisa(BaseModel): transaction_id: Optional[str] = None """Identifier assigned by Visa.""" + original_transaction_id: Optional[str] = None + """[Available on January 28th] Identifier assigned by Visa. + + Matches the `transaction_id` of a prior related event. May be populated in + incremental authorizations (authorization requests that augment a previously + authorized amount), authorization advices, financial authorizations, and + clearings. + """ + class EventNetworkInfo(BaseModel): acquirer: Optional[EventNetworkInfoAcquirer] = None @@ -563,7 +594,9 @@ class Event(BaseModel): within the same transaction lifecycle and can be used to locate a particular transaction, such as during processing of disputes. Not all fields are available in all events, and the presence of these fields is dependent on the card network - and the event type. + and the event type. If the field is populated by the network, we will pass it + through as is unless otherwise specified. Please consult the official network + documentation for more details about these fields and how to use them. """ result: Literal[