Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "0.101.0"
".": "0.102.0"
}
6 changes: 3 additions & 3 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -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
15 changes: 15 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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)
Expand Down
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -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"
Expand Down Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions scripts/mock
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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
2 changes: 1 addition & 1 deletion scripts/test
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion src/lithic/_version.py
Original file line number Diff line number Diff line change
@@ -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
4 changes: 2 additions & 2 deletions src/lithic/resources/account_holders.py
Original file line number Diff line number Diff line change
Expand Up @@ -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`.
Expand Down Expand Up @@ -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`.
Expand Down
2 changes: 1 addition & 1 deletion src/lithic/types/account_holder_create_params.py
Original file line number Diff line number Diff line change
Expand Up @@ -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`.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
6 changes: 6 additions & 0 deletions src/lithic/types/account_holder_update_response.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion src/lithic/types/kyb_param.py
Original file line number Diff line number Diff line change
Expand Up @@ -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`.
Expand Down
29 changes: 29 additions & 0 deletions src/lithic/types/three_ds/authentication_retrieve_response.py
Original file line number Diff line number Diff line change
Expand Up @@ -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."""

Expand Down