diff --git a/.release-please-manifest.json b/.release-please-manifest.json index aebbc8bc..f70d9978 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.101.0" + ".": "0.102.0" } \ No newline at end of file diff --git a/.stats.yml b/.stats.yml index 4f6855e4..c41d7639 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 168 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/lithic%2Flithic-529662462c00af160f74568fe26dbe576cf1fdc9f427e11bb1939bd8acdcb43f.yml -openapi_spec_hash: a98631dfc66716d41ada4ddb199f7028 -config_hash: 2d501901f343d00775037fcec4121983 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/lithic%2Flithic-aca56b6e4da5b97e586e66392dd3cf433208cb964e25081a661dd41cf456a88a.yml +openapi_spec_hash: 297b9f330d31db8e5832463a0ce455ba +config_hash: 99dad20b4a7d4a1390670762b9da4231 diff --git a/CHANGELOG.md b/CHANGELOG.md index 8e80fdc2..e0694b18 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,20 @@ # Changelog +## 0.102.0 (2025-08-13) + +Full Changelog: [v0.101.0...v0.102.0](https://github.com/lithic-com/lithic-python/compare/v0.101.0...v0.102.0) + +### Features + +* **api:** adds detailed 3DS challenge statuses ([c08b37a](https://github.com/lithic-com/lithic-python/commit/c08b37ad7fdbf81f76df2bf5b7714c9cc8c4eb60)) + + +### Chores + +* **internal:** fix ruff target version ([5c7644d](https://github.com/lithic-com/lithic-python/commit/5c7644d6d1a3bb820c12a0f5d85c2479c659879c)) +* **internal:** update comment in script ([88dcc8c](https://github.com/lithic-com/lithic-python/commit/88dcc8c88838f024ed2d8538a0832aa3fe038864)) +* update @stainless-api/prism-cli to v5.15.0 ([9d53118](https://github.com/lithic-com/lithic-python/commit/9d53118b6ef04ab98b1bda7b76f312f69d2d83a7)) + ## 0.101.0 (2025-08-04) Full Changelog: [v0.100.0...v0.101.0](https://github.com/lithic-com/lithic-python/compare/v0.100.0...v0.101.0) diff --git a/pyproject.toml b/pyproject.toml index e2e16fca..646fa7ab 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "lithic" -version = "0.101.0" +version = "0.102.0" description = "The official Python library for the lithic API" dynamic = ["readme"] license = "Apache-2.0" @@ -159,7 +159,7 @@ reportPrivateUsage = false [tool.ruff] line-length = 120 output-format = "grouped" -target-version = "py37" +target-version = "py38" [tool.ruff.format] docstring-code-format = true diff --git a/scripts/mock b/scripts/mock index d2814ae6..0b28f6ea 100755 --- a/scripts/mock +++ b/scripts/mock @@ -21,7 +21,7 @@ echo "==> Starting mock server with URL ${URL}" # Run prism mock on the given spec if [ "$1" == "--daemon" ]; then - npm exec --package=@stainless-api/prism-cli@5.8.5 -- prism mock "$URL" &> .prism.log & + npm exec --package=@stainless-api/prism-cli@5.15.0 -- prism mock "$URL" &> .prism.log & # Wait for server to come online echo -n "Waiting for server" @@ -37,5 +37,5 @@ if [ "$1" == "--daemon" ]; then echo else - npm exec --package=@stainless-api/prism-cli@5.8.5 -- prism mock "$URL" + npm exec --package=@stainless-api/prism-cli@5.15.0 -- prism mock "$URL" fi diff --git a/scripts/test b/scripts/test index 2b878456..dbeda2d2 100755 --- a/scripts/test +++ b/scripts/test @@ -43,7 +43,7 @@ elif ! prism_is_running ; then echo -e "To run the server, pass in the path or url of your OpenAPI" echo -e "spec to the prism command:" echo - echo -e " \$ ${YELLOW}npm exec --package=@stoplight/prism-cli@~5.3.2 -- prism mock path/to/your.openapi.yml${NC}" + echo -e " \$ ${YELLOW}npm exec --package=@stainless-api/prism-cli@5.15.0 -- prism mock path/to/your.openapi.yml${NC}" echo exit 1 diff --git a/src/lithic/_version.py b/src/lithic/_version.py index 8fd6a8f9..7b3ec7b5 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.101.0" # x-release-please-version +__version__ = "0.102.0" # x-release-please-version diff --git a/src/lithic/resources/account_holders.py b/src/lithic/resources/account_holders.py index 785e258f..728609a7 100644 --- a/src/lithic/resources/account_holders.py +++ b/src/lithic/resources/account_holders.py @@ -123,7 +123,7 @@ def create( external_id: A user provided id that can be used to link an account holder with an external system - kyb_passed_timestamp: An RFC 3339 timestamp indicating when precomputed KYC was completed on the + kyb_passed_timestamp: An RFC 3339 timestamp indicating when precomputed KYB was completed on the business with a pass result. This field is required only if workflow type is `KYB_BYO`. @@ -1112,7 +1112,7 @@ async def create( external_id: A user provided id that can be used to link an account holder with an external system - kyb_passed_timestamp: An RFC 3339 timestamp indicating when precomputed KYC was completed on the + kyb_passed_timestamp: An RFC 3339 timestamp indicating when precomputed KYB was completed on the business with a pass result. This field is required only if workflow type is `KYB_BYO`. diff --git a/src/lithic/types/account_holder_create_params.py b/src/lithic/types/account_holder_create_params.py index bc242c85..bfa6d1b3 100644 --- a/src/lithic/types/account_holder_create_params.py +++ b/src/lithic/types/account_holder_create_params.py @@ -76,7 +76,7 @@ class KYB(TypedDict, total=False): kyb_passed_timestamp: str """ - An RFC 3339 timestamp indicating when precomputed KYC was completed on the + An RFC 3339 timestamp indicating when precomputed KYB was completed on the business with a pass result. This field is required only if workflow type is `KYB_BYO`. 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 cdf84631..a8af35c4 100644 --- a/src/lithic/types/account_holder_simulate_enrollment_review_response.py +++ b/src/lithic/types/account_holder_simulate_enrollment_review_response.py @@ -241,6 +241,12 @@ class VerificationApplication(BaseModel): updated: datetime """Timestamp of when the application was last updated.""" + ky_passed_at: Optional[datetime] = None + """Timestamp of when the application passed the verification process. + + Only present if `status` is `ACCEPTED` + """ + class AccountHolderSimulateEnrollmentReviewResponse(BaseModel): token: Optional[str] = None diff --git a/src/lithic/types/account_holder_update_response.py b/src/lithic/types/account_holder_update_response.py index e97edf3e..bbe58a3d 100644 --- a/src/lithic/types/account_holder_update_response.py +++ b/src/lithic/types/account_holder_update_response.py @@ -244,6 +244,12 @@ class KYBKYCPatchResponseVerificationApplication(BaseModel): updated: datetime """Timestamp of when the application was last updated.""" + ky_passed_at: Optional[datetime] = None + """Timestamp of when the application passed the verification process. + + Only present if `status` is `ACCEPTED` + """ + class KYBKYCPatchResponse(BaseModel): token: Optional[str] = None diff --git a/src/lithic/types/kyb_param.py b/src/lithic/types/kyb_param.py index a799e1f7..78e04e29 100644 --- a/src/lithic/types/kyb_param.py +++ b/src/lithic/types/kyb_param.py @@ -200,7 +200,7 @@ class KYBParam(TypedDict, total=False): kyb_passed_timestamp: str """ - An RFC 3339 timestamp indicating when precomputed KYC was completed on the + An RFC 3339 timestamp indicating when precomputed KYB was completed on the business with a pass result. This field is required only if workflow type is `KYB_BYO`. diff --git a/src/lithic/types/three_ds/authentication_retrieve_response.py b/src/lithic/types/three_ds/authentication_retrieve_response.py index 98e22a19..d202af6c 100644 --- a/src/lithic/types/three_ds/authentication_retrieve_response.py +++ b/src/lithic/types/three_ds/authentication_retrieve_response.py @@ -295,6 +295,35 @@ class ChallengeMetadata(BaseModel): method_type: Literal["SMS_OTP", "OUT_OF_BAND"] """The type of challenge method used for authentication.""" + status: Literal[ + "SUCCESS", + "PENDING", + "SMS_DELIVERY_FAILED", + "CARDHOLDER_TIMEOUT", + "CANCELED_VIA_CHALLENGE_UI", + "CANCELED_OOB", + "ATTEMPTS_EXCEEDED", + "ABORTED", + "ERROR", + ] + """Indicates the status of the challenge + + - SUCCESS - Cardholder completed the challenge successfully + - PENDING - Challenge was issued to the cardholder and was not completed yet + - SMS_DELIVERY_FAILED - Lithic confirmed undeliverability of the SMS to the + provided phone number. Relevant only for SMS_OTP method + - CARDHOLDER_TIMEOUT - Cardholder failed to complete the challenge within the + given challenge TTL + - CANCELED_VIA_CHALLENGE_UI - Cardholder canceled the challenge by selecting + "cancel" on the challenge UI + - CANCELED_OOB - Cardholder canceled the challenge out of band + - ATTEMPTS_EXCEEDED - Cardholder failed the challenge by either entering an + incorrect OTP more than the allowed number of times or requesting a new OTP + more than the allowed number of times + - ABORTED - Merchant aborted authentication after a challenge was requested + - ERROR - The challenge failed for a reason different than those documented + """ + phone_number: Optional[str] = None """The phone number used for delivering the OTP. Relevant only for SMS_OTP method."""
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: