diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 37e99723..a24ae611 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.130.0" + ".": "0.131.0" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index 39c488a2..34c34ab7 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 213 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/lithic/lithic-59c09c7355b21b663e001d2ee1086ebd0a70d9b5433823282bca296eedff9eb0.yml -openapi_spec_hash: d9c3b932c810809abc6e973d662ad376 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/lithic/lithic-9c9038d362c6a423011de6cfe5bf4a93ca2ea6e6991327583c4dcc47ceb8d7e3.yml +openapi_spec_hash: c2acf17ac5eb3d9e11f86c57a0af3cb3 config_hash: 337a99d8cc30006358b7bc2531401669 diff --git a/CHANGELOG.md b/CHANGELOG.md index 93037f6b..1aa31fd9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,22 @@ # Changelog +## 0.131.0 (2026-08-10) + +Full Changelog: [v0.130.0...v0.131.0](https://github.com/lithic-com/lithic-python/compare/v0.130.0...v0.131.0) + +### Features + +* **api:** add blockchain_addresses field to financial account ([168e194](https://github.com/lithic-com/lithic-python/commit/168e194dce255e6b907a65b3387dffec89ca0426)) +* **api:** Add limit_cash_amount and limit_cash_count to VelocityLimit template ([64068f8](https://github.com/lithic-com/lithic-python/commit/64068f89bd9400b4e684b8eb1fdf5bdede893a36)) +* **api:** add PROGRAM scope to auth_rules and case entity types ([7d67d35](https://github.com/lithic-com/lithic-python/commit/7d67d35bafb84f3cb24fade78214478bcc3204f2)) +* **api:** add stablecoin event types to payment/statement/financial_event ([9c1cfe4](https://github.com/lithic-com/lithic-python/commit/9c1cfe46e6538c2429653dd65bf72938544f1fe4)) +* **api:** Add STABLECOIN to approvals request and transfer type enums ([8c277b5](https://github.com/lithic-com/lithic-python/commit/8c277b59aefd35e571026c97177a50223fd0622d)) + + +### Documentation + +* **api:** clarify CVV format in tokenizations and card ([8980c52](https://github.com/lithic-com/lithic-python/commit/8980c5219db6e83e4cc8e9d2445fbd223c24a728)) + ## 0.130.0 (2026-07-30) Full Changelog: [v0.129.0...v0.130.0](https://github.com/lithic-com/lithic-python/compare/v0.129.0...v0.130.0) diff --git a/pyproject.toml b/pyproject.toml index beb88420..0df4f166 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "lithic" -version = "0.130.0" +version = "0.131.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 a8fc2b35..5e23cbfb 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.130.0" # x-release-please-version +__version__ = "0.131.0" # x-release-please-version diff --git a/src/lithic/resources/tokenizations.py b/src/lithic/resources/tokenizations.py index 34c28a48..7791b518 100644 --- a/src/lithic/resources/tokenizations.py +++ b/src/lithic/resources/tokenizations.py @@ -354,7 +354,7 @@ def simulate( and merchant tokenization ecosystem. Args: - cvv: The three digit cvv for the card. + cvv: The three or four digit CVV for the card. AMEX cards use four digit CVVs. expiration_date: The expiration date of the card in 'MM/YY' format. @@ -822,7 +822,7 @@ async def simulate( and merchant tokenization ecosystem. Args: - cvv: The three digit cvv for the card. + cvv: The three or four digit CVV for the card. AMEX cards use four digit CVVs. expiration_date: The expiration date of the card in 'MM/YY' format. diff --git a/src/lithic/resources/transaction_monitoring/cases/cases.py b/src/lithic/resources/transaction_monitoring/cases/cases.py index f203ed6d..416fca7d 100644 --- a/src/lithic/resources/transaction_monitoring/cases/cases.py +++ b/src/lithic/resources/transaction_monitoring/cases/cases.py @@ -243,7 +243,9 @@ def list( ending_before: A cursor representing an item's token before which a page of results should end. Used to retrieve the previous page of results before this item. - entity_token: Only return cases associated with the provided entity. + entity_token: Only return cases associated with the provided entity. Accepts a card, account, + or financial account token. Cases with a `PROGRAM` entity have no entity token + and are never returned by this filter. page_size: Page size (for pagination). @@ -637,7 +639,9 @@ def list( ending_before: A cursor representing an item's token before which a page of results should end. Used to retrieve the previous page of results before this item. - entity_token: Only return cases associated with the provided entity. + entity_token: Only return cases associated with the provided entity. Accepts a card, account, + or financial account token. Cases with a `PROGRAM` entity have no entity token + and are never returned by this filter. page_size: Page size (for pagination). diff --git a/src/lithic/types/auth_rules/ach_payment_update_action.py b/src/lithic/types/auth_rules/ach_payment_update_action.py index 841dc939..4726290c 100644 --- a/src/lithic/types/auth_rules/ach_payment_update_action.py +++ b/src/lithic/types/auth_rules/ach_payment_update_action.py @@ -23,7 +23,7 @@ class CreateCaseAction(BaseModel): queue_token: str """The token of the queue to create the case in""" - scope: Literal["FINANCIAL_ACCOUNT"] + scope: Literal["FINANCIAL_ACCOUNT", "PROGRAM"] """The scope of the case to create""" type: Literal["CREATE_CASE"] diff --git a/src/lithic/types/auth_rules/ach_payment_update_action_param.py b/src/lithic/types/auth_rules/ach_payment_update_action_param.py index b4625d5c..08ae0f25 100644 --- a/src/lithic/types/auth_rules/ach_payment_update_action_param.py +++ b/src/lithic/types/auth_rules/ach_payment_update_action_param.py @@ -23,7 +23,7 @@ class CreateCaseAction(TypedDict, total=False): queue_token: Required[str] """The token of the queue to create the case in""" - scope: Required[Literal["FINANCIAL_ACCOUNT"]] + scope: Required[Literal["FINANCIAL_ACCOUNT", "PROGRAM"]] """The scope of the case to create""" type: Required[Literal["CREATE_CASE"]] diff --git a/src/lithic/types/auth_rules/card_transaction_update_action.py b/src/lithic/types/auth_rules/card_transaction_update_action.py index 902af1fc..9f366ba9 100644 --- a/src/lithic/types/auth_rules/card_transaction_update_action.py +++ b/src/lithic/types/auth_rules/card_transaction_update_action.py @@ -23,7 +23,7 @@ class CreateCaseAction(BaseModel): queue_token: str """The token of the queue to create the case in""" - scope: Literal["CARD", "ACCOUNT"] + scope: Literal["CARD", "ACCOUNT", "PROGRAM"] """The scope of the case to create""" type: Literal["CREATE_CASE"] diff --git a/src/lithic/types/auth_rules/card_transaction_update_action_param.py b/src/lithic/types/auth_rules/card_transaction_update_action_param.py index 9eb27dea..edce44cf 100644 --- a/src/lithic/types/auth_rules/card_transaction_update_action_param.py +++ b/src/lithic/types/auth_rules/card_transaction_update_action_param.py @@ -23,7 +23,7 @@ class CreateCaseAction(TypedDict, total=False): queue_token: Required[str] """The token of the queue to create the case in""" - scope: Required[Literal["CARD", "ACCOUNT"]] + scope: Required[Literal["CARD", "ACCOUNT", "PROGRAM"]] """The scope of the case to create""" type: Required[Literal["CREATE_CASE"]] diff --git a/src/lithic/types/auth_rules/v2_list_results_response.py b/src/lithic/types/auth_rules/v2_list_results_response.py index 2cc038bb..c42048e1 100644 --- a/src/lithic/types/auth_rules/v2_list_results_response.py +++ b/src/lithic/types/auth_rules/v2_list_results_response.py @@ -412,7 +412,7 @@ class CardTransactionUpdateResultActionCreateCaseAction(BaseModel): queue_token: str """The token of the queue to create the case in""" - scope: Literal["CARD", "ACCOUNT"] + scope: Literal["CARD", "ACCOUNT", "PROGRAM"] """The scope of the case to create""" type: Literal["CREATE_CASE"] @@ -474,7 +474,7 @@ class ACHPaymentUpdateResultActionCreateCaseAction(BaseModel): queue_token: str """The token of the queue to create the case in""" - scope: Literal["FINANCIAL_ACCOUNT"] + scope: Literal["FINANCIAL_ACCOUNT", "PROGRAM"] """The scope of the case to create""" type: Literal["CREATE_CASE"] diff --git a/src/lithic/types/auth_rules/velocity_limit_params.py b/src/lithic/types/auth_rules/velocity_limit_params.py index 061a8de7..6914b7d9 100644 --- a/src/lithic/types/auth_rules/velocity_limit_params.py +++ b/src/lithic/types/auth_rules/velocity_limit_params.py @@ -26,6 +26,23 @@ class VelocityLimitParams(BaseModel): limit will be declined. """ + limit_cash_amount: Optional[int] = None + """ + The maximum amount of cash spend velocity allowed in the period in minor units + (the smallest unit of a currency, e.g. cents for USD). Cash spend covers ATM + withdrawals, cash disbursements, and purchases with cashback. Transactions + exceeding this limit will be declined. + """ + + limit_cash_count: Optional[int] = None + """ + The number of cash spend velocity impacting transactions may not exceed this + limit in the period. Transactions exceeding this limit will be declined. A cash + velocity impacting transaction is an ATM withdrawal, cash disbursement, or + purchase with cashback that has been authorized, and optionally settled, or a + force post (a transaction that settled without prior authorization). + """ + limit_count: Optional[int] = None """ The number of spend velocity impacting transactions may not exceed this limit in diff --git a/src/lithic/types/auth_rules/velocity_limit_params_param.py b/src/lithic/types/auth_rules/velocity_limit_params_param.py index e91557fa..8fe6b058 100644 --- a/src/lithic/types/auth_rules/velocity_limit_params_param.py +++ b/src/lithic/types/auth_rules/velocity_limit_params_param.py @@ -27,6 +27,23 @@ class VelocityLimitParamsParam(TypedDict, total=False): limit will be declined. """ + limit_cash_amount: Optional[int] + """ + The maximum amount of cash spend velocity allowed in the period in minor units + (the smallest unit of a currency, e.g. cents for USD). Cash spend covers ATM + withdrawals, cash disbursements, and purchases with cashback. Transactions + exceeding this limit will be declined. + """ + + limit_cash_count: Optional[int] + """ + The number of cash spend velocity impacting transactions may not exceed this + limit in the period. Transactions exceeding this limit will be declined. A cash + velocity impacting transaction is an ATM withdrawal, cash disbursement, or + purchase with cashback that has been authorized, and optionally settled, or a + force post (a transaction that settled without prior authorization). + """ + limit_count: Optional[int] """ The number of spend velocity impacting transactions may not exceed this limit in diff --git a/src/lithic/types/card.py b/src/lithic/types/card.py index 3bb986c2..53c1eae0 100644 --- a/src/lithic/types/card.py +++ b/src/lithic/types/card.py @@ -13,7 +13,7 @@ class Card(NonPCICard): """ cvv: Optional[str] = None - """Three digit cvv printed on the back of the card.""" + """Three or four digit CVV printed on the card. Amex cards use four digit CVVs""" pan: Optional[str] = None """Primary Account Number (PAN) (i.e. diff --git a/src/lithic/types/financial_account.py b/src/lithic/types/financial_account.py index 28502aef..c738d406 100644 --- a/src/lithic/types/financial_account.py +++ b/src/lithic/types/financial_account.py @@ -1,6 +1,6 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. -from typing import Optional +from typing import Dict, Optional from datetime import datetime from typing_extensions import Literal @@ -80,4 +80,11 @@ class FinancialAccount(BaseModel): account_number: Optional[str] = None + blockchain_addresses: Optional[Dict[str, str]] = None + """ + Provisioned blockchain deposit addresses for this financial account, keyed by + the full name of the blockchain network that each address belongs to (e.g. + `ETHEREUM`) + """ + routing_number: Optional[str] = None diff --git a/src/lithic/types/financial_accounts/statements/statement_line_items.py b/src/lithic/types/financial_accounts/statements/statement_line_items.py index 10740060..d62c53bf 100644 --- a/src/lithic/types/financial_accounts/statements/statement_line_items.py +++ b/src/lithic/types/financial_accounts/statements/statement_line_items.py @@ -152,8 +152,11 @@ class Data(BaseModel): "MONTHLY_REVERSAL", "ACCOUNT_TO_ACCOUNT", "STABLECOIN_RECEIVED", + "STABLECOIN_INITIATED", "STABLECOIN_REVIEWED", + "STABLECOIN_SENT", "STABLECOIN_SETTLED", + "STABLECOIN_REJECTED", ] financial_account_token: str diff --git a/src/lithic/types/payment.py b/src/lithic/types/payment.py index ee223791..a690dca8 100644 --- a/src/lithic/types/payment.py +++ b/src/lithic/types/payment.py @@ -66,8 +66,11 @@ class Event(BaseModel): "WIRE_RETURN_OUTBOUND_SETTLED", "WIRE_RETURN_OUTBOUND_REJECTED", "STABLECOIN_RECEIVED", + "STABLECOIN_INITIATED", "STABLECOIN_REVIEWED", + "STABLECOIN_SENT", "STABLECOIN_SETTLED", + "STABLECOIN_REJECTED", ] """ Note: Inbound wire transfers are coming soon (availability varies by partner @@ -127,8 +130,16 @@ class Event(BaseModel): - `STABLECOIN_RECEIVED` - Stablecoin pay-in received on-chain and pending release to available balance. - - `STABLECOIN_REVIEWED` - Stablecoin pay-in has completed the review process. - - `STABLECOIN_SETTLED` - Stablecoin pay-in funds released to available balance. + - `STABLECOIN_INITIATED` - Stablecoin withdrawal initiated, with the funds + placed on hold. + - `STABLECOIN_REVIEWED` - Stablecoin pay-in or withdrawal has completed the + review process. + - `STABLECOIN_SENT` - Stablecoin withdrawal accepted for on-chain submission to + the destination address, and pending confirmation. + - `STABLECOIN_SETTLED` - Stablecoin pay-in funds released to available balance, + or stablecoin withdrawal confirmed on-chain. + - `STABLECOIN_REJECTED` - Stablecoin withdrawal failed and the hold placed at + initiation has been reversed. """ detailed_results: Optional[ @@ -150,7 +161,9 @@ class Event(BaseModel): """Payment event external ID. For ACH transactions, this is the ACH trace number. For inbound wire transfers, - this is the IMAD (Input Message Accountability Data). + this is the IMAD (Input Message Accountability Data). For stablecoin payments, + this is the on-chain transaction hash of the transfer; it is present on events + that reflect on-chain activity and null on internal lifecycle events. """ @@ -329,6 +342,7 @@ class Payment(BaseModel): "WIRE_OUTBOUND_PAYMENT", "WIRE_OUTBOUND_ADMIN", "WIRE_INBOUND_DRAWDOWN_REQUEST", + "STABLECOIN", ] ] = None diff --git a/src/lithic/types/shared/financial_event.py b/src/lithic/types/shared/financial_event.py index 2ad57159..9d677eb0 100644 --- a/src/lithic/types/shared/financial_event.py +++ b/src/lithic/types/shared/financial_event.py @@ -123,7 +123,10 @@ class FinancialEvent(BaseModel): "MONTHLY_REVERSAL", "ACCOUNT_TO_ACCOUNT", "STABLECOIN_RECEIVED", + "STABLECOIN_INITIATED", "STABLECOIN_REVIEWED", + "STABLECOIN_SENT", "STABLECOIN_SETTLED", + "STABLECOIN_REJECTED", ] ] = None diff --git a/src/lithic/types/tokenization_simulate_params.py b/src/lithic/types/tokenization_simulate_params.py index 1b04cf6e..560cda31 100644 --- a/src/lithic/types/tokenization_simulate_params.py +++ b/src/lithic/types/tokenization_simulate_params.py @@ -9,7 +9,7 @@ class TokenizationSimulateParams(TypedDict, total=False): cvv: Required[str] - """The three digit cvv for the card.""" + """The three or four digit CVV for the card. AMEX cards use four digit CVVs.""" expiration_date: Required[str] """The expiration date of the card in 'MM/YY' format.""" diff --git a/src/lithic/types/transaction_monitoring/case_entity.py b/src/lithic/types/transaction_monitoring/case_entity.py index a85b9e3f..b03bfa3e 100644 --- a/src/lithic/types/transaction_monitoring/case_entity.py +++ b/src/lithic/types/transaction_monitoring/case_entity.py @@ -1,5 +1,6 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. +from typing import Optional from typing_extensions import Literal from ..._models import BaseModel @@ -10,12 +11,19 @@ class CaseEntity(BaseModel): """The entity a case is associated with""" - entity_token: str - """Globally unique identifier for the associated entity""" + entity_token: Optional[str] = None + """ + Globally unique identifier for the associated entity: the card token for `CARD`, + the account token for `ACCOUNT`, and the financial account token for + `FINANCIAL_ACCOUNT`. Null for `PROGRAM`, which is not scoped to an individual + entity + """ - entity_type: Literal["CARD", "ACCOUNT"] + entity_type: Literal["CARD", "ACCOUNT", "FINANCIAL_ACCOUNT", "PROGRAM"] """The type of entity a case is associated with: - `CARD` - The case is associated with a card - `ACCOUNT` - The case is associated with an account + - `FINANCIAL_ACCOUNT` - The case is associated with a financial account + - `PROGRAM` - The case is associated with the whole program """ diff --git a/src/lithic/types/transaction_monitoring/case_list_params.py b/src/lithic/types/transaction_monitoring/case_list_params.py index 7265c87b..2712be44 100644 --- a/src/lithic/types/transaction_monitoring/case_list_params.py +++ b/src/lithic/types/transaction_monitoring/case_list_params.py @@ -45,7 +45,11 @@ class CaseListParams(TypedDict, total=False): """ entity_token: str - """Only return cases associated with the provided entity.""" + """Only return cases associated with the provided entity. + + Accepts a card, account, or financial account token. Cases with a `PROGRAM` + entity have no entity token and are never returned by this filter. + """ page_size: int """Page size (for pagination)."""