diff --git a/.release-please-manifest.json b/.release-please-manifest.json index bd115b20..58ebf7f2 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.122.0" + ".": "0.123.0" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index 4645bd0f..90f4d4f1 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 190 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/lithic%2Flithic-d29b68bb85936070878d8badaa8a7c5991313285e70a990bc812c838eba85373.yml -openapi_spec_hash: 54b44da68df22eb0ea99f2bc564667a2 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/lithic%2Flithic-ab626b78e088455e814b80debc85d420839bc11f95416491fef6a0460f2d95ed.yml +openapi_spec_hash: f6ae1bbed371a5d45927cd63797a9908 config_hash: ac8326134e692f3f3bdec82396bbec80 diff --git a/CHANGELOG.md b/CHANGELOG.md index 3760e200..1fcc1f92 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,23 @@ # Changelog +## 0.123.0 (2026-04-24) + +Full Changelog: [v0.122.0...v0.123.0](https://github.com/lithic-com/lithic-python/compare/v0.122.0...v0.123.0) + +### Features + +* **api:** add AMEX to network enum in settlement reports ([a429a2e](https://github.com/lithic-com/lithic-python/commit/a429a2e6c8915f857d692f567951b03b392791ba)) + + +### Bug Fixes + +* **types:** make substatus/funding optional, add exemption_type enum value ([e424839](https://github.com/lithic-com/lithic-python/commit/e424839de5a127d48086c9dd1ed5ec7146cdfd6a)) + + +### Chores + +* **internal:** more robust bootstrap script ([0df0d6c](https://github.com/lithic-com/lithic-python/commit/0df0d6cf2e2691b4979e5727dd88781229b7e831)) + ## 0.122.0 (2026-04-20) Full Changelog: [v0.121.0...v0.122.0](https://github.com/lithic-com/lithic-python/compare/v0.121.0...v0.122.0) diff --git a/pyproject.toml b/pyproject.toml index d67ac65f..bf4d6bbb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "lithic" -version = "0.122.0" +version = "0.123.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 b430fee3..fe8451e4 100755 --- a/scripts/bootstrap +++ b/scripts/bootstrap @@ -4,7 +4,7 @@ set -e cd "$(dirname "$0")/.." -if [ -f "Brewfile" ] && [ "$(uname -s)" = "Darwin" ] && [ "$SKIP_BREW" != "1" ] && [ -t 0 ]; then +if [ -f "Brewfile" ] && [ "$(uname -s)" = "Darwin" ] && [ "${SKIP_BREW:-}" != "1" ] && [ -t 0 ]; then brew bundle check >/dev/null 2>&1 || { echo -n "==> Install Homebrew dependencies? (y/N): " read -r response diff --git a/src/lithic/_version.py b/src/lithic/_version.py index d7da7751..2236ca43 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.122.0" # x-release-please-version +__version__ = "0.123.0" # x-release-please-version diff --git a/src/lithic/resources/accounts.py b/src/lithic/resources/accounts.py index 703f3b47..073f1320 100644 --- a/src/lithic/resources/accounts.py +++ b/src/lithic/resources/accounts.py @@ -2,7 +2,7 @@ from __future__ import annotations -from typing import Union +from typing import Union, Optional from datetime import datetime from typing_extensions import Literal @@ -85,15 +85,17 @@ def update( lifetime_spend_limit: int | Omit = omit, monthly_spend_limit: int | Omit = omit, state: Literal["ACTIVE", "PAUSED", "CLOSED"] | Omit = omit, - substatus: Literal[ - "FRAUD_IDENTIFIED", - "SUSPICIOUS_ACTIVITY", - "RISK_VIOLATION", - "END_USER_REQUEST", - "ISSUER_REQUEST", - "NOT_ACTIVE", - "INTERNAL_REVIEW", - "OTHER", + substatus: Optional[ + Literal[ + "FRAUD_IDENTIFIED", + "SUSPICIOUS_ACTIVITY", + "RISK_VIOLATION", + "END_USER_REQUEST", + "ISSUER_REQUEST", + "NOT_ACTIVE", + "INTERNAL_REVIEW", + "OTHER", + ] ] | Omit = omit, verification_address: account_update_params.VerificationAddress | Omit = omit, @@ -357,15 +359,17 @@ async def update( lifetime_spend_limit: int | Omit = omit, monthly_spend_limit: int | Omit = omit, state: Literal["ACTIVE", "PAUSED", "CLOSED"] | Omit = omit, - substatus: Literal[ - "FRAUD_IDENTIFIED", - "SUSPICIOUS_ACTIVITY", - "RISK_VIOLATION", - "END_USER_REQUEST", - "ISSUER_REQUEST", - "NOT_ACTIVE", - "INTERNAL_REVIEW", - "OTHER", + substatus: Optional[ + Literal[ + "FRAUD_IDENTIFIED", + "SUSPICIOUS_ACTIVITY", + "RISK_VIOLATION", + "END_USER_REQUEST", + "ISSUER_REQUEST", + "NOT_ACTIVE", + "INTERNAL_REVIEW", + "OTHER", + ] ] | Omit = omit, verification_address: account_update_params.VerificationAddress | Omit = omit, diff --git a/src/lithic/resources/reports/settlement/network_totals.py b/src/lithic/resources/reports/settlement/network_totals.py index 46781eb9..d1491668 100644 --- a/src/lithic/resources/reports/settlement/network_totals.py +++ b/src/lithic/resources/reports/settlement/network_totals.py @@ -83,7 +83,7 @@ def list( end: Union[str, datetime] | Omit = omit, ending_before: str | Omit = omit, institution_id: str | Omit = omit, - network: Literal["VISA", "MASTERCARD", "MAESTRO", "INTERLINK"] | Omit = omit, + network: Literal["AMEX", "VISA", "MASTERCARD", "MAESTRO", "INTERLINK"] | Omit = omit, page_size: int | Omit = omit, report_date: Union[str, date] | Omit = omit, report_date_begin: Union[str, date] | Omit = omit, @@ -227,7 +227,7 @@ def list( end: Union[str, datetime] | Omit = omit, ending_before: str | Omit = omit, institution_id: str | Omit = omit, - network: Literal["VISA", "MASTERCARD", "MAESTRO", "INTERLINK"] | Omit = omit, + network: Literal["AMEX", "VISA", "MASTERCARD", "MAESTRO", "INTERLINK"] | Omit = omit, page_size: int | Omit = omit, report_date: Union[str, date] | Omit = omit, report_date_begin: Union[str, date] | Omit = omit, diff --git a/src/lithic/types/account_holder_simulate_enrollment_review_response.py b/src/lithic/types/account_holder_simulate_enrollment_review_response.py index 7a8e9b73..067cff10 100644 --- a/src/lithic/types/account_holder_simulate_enrollment_review_response.py +++ b/src/lithic/types/account_holder_simulate_enrollment_review_response.py @@ -336,7 +336,7 @@ class AccountHolderSimulateEnrollmentReviewResponse(BaseModel): exemption_type: Optional[Literal["AUTHORIZED_USER", "PREPAID_CARD_USER"]] = None """The type of KYC exemption for a KYC-Exempt Account Holder. - "None" if the account holder is not KYC-Exempt. + `null` if the account holder is not KYC-Exempt. """ external_id: Optional[str] = None diff --git a/src/lithic/types/account_holder_update_response.py b/src/lithic/types/account_holder_update_response.py index e8d3e882..b46b39c2 100644 --- a/src/lithic/types/account_holder_update_response.py +++ b/src/lithic/types/account_holder_update_response.py @@ -339,7 +339,7 @@ class KYBKYCPatchResponse(BaseModel): exemption_type: Optional[Literal["AUTHORIZED_USER", "PREPAID_CARD_USER"]] = None """The type of KYC exemption for a KYC-Exempt Account Holder. - "None" if the account holder is not KYC-Exempt. + `null` if the account holder is not KYC-Exempt. """ external_id: Optional[str] = None diff --git a/src/lithic/types/account_update_params.py b/src/lithic/types/account_update_params.py index 954590e8..b8a12e19 100644 --- a/src/lithic/types/account_update_params.py +++ b/src/lithic/types/account_update_params.py @@ -2,6 +2,7 @@ from __future__ import annotations +from typing import Optional from typing_extensions import Literal, TypedDict __all__ = ["AccountUpdateParams", "VerificationAddress"] @@ -39,15 +40,17 @@ class AccountUpdateParams(TypedDict, total=False): state: Literal["ACTIVE", "PAUSED", "CLOSED"] """Account states.""" - substatus: Literal[ - "FRAUD_IDENTIFIED", - "SUSPICIOUS_ACTIVITY", - "RISK_VIOLATION", - "END_USER_REQUEST", - "ISSUER_REQUEST", - "NOT_ACTIVE", - "INTERNAL_REVIEW", - "OTHER", + substatus: Optional[ + Literal[ + "FRAUD_IDENTIFIED", + "SUSPICIOUS_ACTIVITY", + "RISK_VIOLATION", + "END_USER_REQUEST", + "ISSUER_REQUEST", + "NOT_ACTIVE", + "INTERNAL_REVIEW", + "OTHER", + ] ] """Account state substatus values: diff --git a/src/lithic/types/non_pci_card.py b/src/lithic/types/non_pci_card.py index 9c1897f5..25345315 100644 --- a/src/lithic/types/non_pci_card.py +++ b/src/lithic/types/non_pci_card.py @@ -11,7 +11,7 @@ class Funding(BaseModel): - """Deprecated: Funding account for the card.""" + """Funding account for a card""" token: str """A globally unique identifier for this FundingAccount.""" @@ -65,8 +65,8 @@ class NonPCICard(BaseModel): created: datetime """An RFC 3339 timestamp for when the card was created. UTC time zone.""" - funding: Funding - """Deprecated: Funding account for the card.""" + funding: Optional[Funding] = None + """Funding account for a card""" last_four: str """Last four digits of the card number.""" diff --git a/src/lithic/types/reports/settlement/network_total_list_params.py b/src/lithic/types/reports/settlement/network_total_list_params.py index 82a82c55..cf8234bf 100644 --- a/src/lithic/types/reports/settlement/network_total_list_params.py +++ b/src/lithic/types/reports/settlement/network_total_list_params.py @@ -33,7 +33,7 @@ class NetworkTotalListParams(TypedDict, total=False): institution_id: str """Institution ID to filter on.""" - network: Literal["VISA", "MASTERCARD", "MAESTRO", "INTERLINK"] + network: Literal["AMEX", "VISA", "MASTERCARD", "MAESTRO", "INTERLINK"] """Network to filter on.""" page_size: int diff --git a/src/lithic/types/settlement_detail.py b/src/lithic/types/settlement_detail.py index a8cd5fa3..ea9b2ade 100644 --- a/src/lithic/types/settlement_detail.py +++ b/src/lithic/types/settlement_detail.py @@ -65,7 +65,7 @@ class SettlementDetail(BaseModel): interchange_gross_amount: int """The total amount of interchange.""" - network: Literal["INTERLINK", "MAESTRO", "MASTERCARD", "UNKNOWN", "VISA"] + network: Literal["AMEX", "INTERLINK", "MAESTRO", "MASTERCARD", "UNKNOWN", "VISA"] """Card network where the transaction took place.""" other_fees_details: OtherFeesDetails diff --git a/src/lithic/types/settlement_summary_details.py b/src/lithic/types/settlement_summary_details.py index 1b04c769..86406db4 100644 --- a/src/lithic/types/settlement_summary_details.py +++ b/src/lithic/types/settlement_summary_details.py @@ -24,7 +24,7 @@ class SettlementSummaryDetails(BaseModel): interchange_gross_amount: Optional[int] = None """The total amount of interchange.""" - network: Optional[Literal["INTERLINK", "MAESTRO", "MASTERCARD", "UNKNOWN", "VISA"]] = None + network: Optional[Literal["AMEX", "INTERLINK", "MAESTRO", "MASTERCARD", "UNKNOWN", "VISA"]] = None """Card network where the transaction took place""" other_fees_gross_amount: Optional[int] = None diff --git a/tests/api_resources/reports/settlement/test_network_totals.py b/tests/api_resources/reports/settlement/test_network_totals.py index 256915ae..4b4da6c1 100644 --- a/tests/api_resources/reports/settlement/test_network_totals.py +++ b/tests/api_resources/reports/settlement/test_network_totals.py @@ -69,7 +69,7 @@ def test_method_list_with_all_params(self, client: Lithic) -> None: end=parse_datetime("2019-12-27T18:11:19.117Z"), ending_before="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", institution_id="institution_id", - network="VISA", + network="AMEX", page_size=1, report_date=parse_date("2019-12-27"), report_date_begin=parse_date("2019-12-27"), @@ -155,7 +155,7 @@ async def test_method_list_with_all_params(self, async_client: AsyncLithic) -> N end=parse_datetime("2019-12-27T18:11:19.117Z"), ending_before="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", institution_id="institution_id", - network="VISA", + network="AMEX", page_size=1, report_date=parse_date("2019-12-27"), report_date_begin=parse_date("2019-12-27"),