diff --git a/.stats.yml b/.stats.yml
index 3a1f747..2aae27b 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1 +1 @@
-configured_endpoints: 137
+configured_endpoints: 145
diff --git a/api.md b/api.md
index da089a6..7e63232 100644
--- a/api.md
+++ b/api.md
@@ -38,6 +38,8 @@ from dodopayments.types import (
CustomerLimitedDetails,
CustomerRequest,
IntentStatus,
+ ManualRetry,
+ ManualRetryState,
NewCustomer,
OneTimeProductCartItem,
Payment,
@@ -56,6 +58,8 @@ Methods:
- client.payments.retrieve(payment_id) -> Payment
- client.payments.list(\*\*params) -> SyncDefaultPageNumberPagination[PaymentListResponse]
- client.payments.retrieve_line_items(payment_id) -> PaymentRetrieveLineItemsResponse
+- client.payments.retrieve_retry_state(payment_id) -> ManualRetryState
+- client.payments.retry(payment_id) -> ManualRetry
# Subscriptions
@@ -210,6 +214,43 @@ Methods:
- client.customers.wallets.ledger_entries.create(customer_id, \*\*params) -> CustomerWallet
- client.customers.wallets.ledger_entries.list(customer_id, \*\*params) -> SyncDefaultPageNumberPagination[CustomerWalletTransaction]
+# Blocklist
+
+## Customers
+
+Types:
+
+```python
+from dodopayments.types.blocklist import (
+ BlockByCustomerID,
+ BlockByEmail,
+ BlockIdentifier,
+ BlockedCustomer,
+ BlockedCustomerSource,
+ CreateBlockedCustomerRequest,
+)
+```
+
+Methods:
+
+- client.blocklist.customers.create(\*\*params) -> BlockedCustomer
+- client.blocklist.customers.retrieve(entry_id) -> BlockedCustomer
+- client.blocklist.customers.list(\*\*params) -> SyncDefaultPageNumberPagination[BlockedCustomer]
+- client.blocklist.customers.delete(entry_id) -> None
+
+### Notes
+
+Types:
+
+```python
+from dodopayments.types.blocklist.customers import BlockedCustomerNote, NoteRequest
+```
+
+Methods:
+
+- client.blocklist.customers.notes.create(entry_id, \*\*params) -> BlockedCustomerNote
+- client.blocklist.customers.notes.update(note_id, \*, entry_id, \*\*params) -> BlockedCustomerNote
+
# Refunds
Types:
@@ -469,6 +510,7 @@ from dodopayments.types import (
SubscriptionExpiredWebhookEvent,
SubscriptionFailedWebhookEvent,
SubscriptionOnHoldWebhookEvent,
+ SubscriptionPastDueWebhookEvent,
SubscriptionPausedWebhookEvent,
SubscriptionPlanChangedWebhookEvent,
SubscriptionRenewedWebhookEvent,
@@ -516,6 +558,7 @@ from dodopayments.types import (
SubscriptionExpiredWebhookEvent,
SubscriptionFailedWebhookEvent,
SubscriptionOnHoldWebhookEvent,
+ SubscriptionPastDueWebhookEvent,
SubscriptionPausedWebhookEvent,
SubscriptionPlanChangedWebhookEvent,
SubscriptionRenewedWebhookEvent,
diff --git a/scripts/mock b/scripts/mock
index 6f4ad4c..e104f29 100755
--- a/scripts/mock
+++ b/scripts/mock
@@ -11,7 +11,7 @@ elif [ -n "$STAINLESS_OPENAPI_SPEC_URL" ]; then
URL="$STAINLESS_OPENAPI_SPEC_URL"
else
# Embedded OpenAPI spec (base64-encoded, gzipped)
- EMBEDDED_SPEC="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"
+ EMBEDDED_SPEC="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"
SPEC_TMPFILE="$(mktemp)"
trap 'rm -f "$SPEC_TMPFILE"' EXIT
echo "$EMBEDDED_SPEC" | base64 --decode | gunzip > "$SPEC_TMPFILE"
diff --git a/src/dodopayments/_client.py b/src/dodopayments/_client.py
index 8df6d59..da57509 100644
--- a/src/dodopayments/_client.py
+++ b/src/dodopayments/_client.py
@@ -49,6 +49,7 @@
payments,
products,
webhooks,
+ blocklist,
customers,
discounts,
entitlements,
@@ -78,6 +79,7 @@
from .resources.invoices.invoices import InvoicesResource, AsyncInvoicesResource
from .resources.products.products import ProductsResource, AsyncProductsResource
from .resources.webhooks.webhooks import WebhooksResource, AsyncWebhooksResource
+ from .resources.blocklist.blocklist import BlocklistResource, AsyncBlocklistResource
from .resources.customers.customers import CustomersResource, AsyncCustomersResource
from .resources.license_key_instances import LicenseKeyInstancesResource, AsyncLicenseKeyInstancesResource
from .resources.entitlements.entitlements import EntitlementsResource, AsyncEntitlementsResource
@@ -252,6 +254,12 @@ def customers(self) -> CustomersResource:
return CustomersResource(self)
+ @cached_property
+ def blocklist(self) -> BlocklistResource:
+ from .resources.blocklist import BlocklistResource
+
+ return BlocklistResource(self)
+
@cached_property
def refunds(self) -> RefundsResource:
from .resources.refunds import RefundsResource
@@ -603,6 +611,12 @@ def customers(self) -> AsyncCustomersResource:
return AsyncCustomersResource(self)
+ @cached_property
+ def blocklist(self) -> AsyncBlocklistResource:
+ from .resources.blocklist import AsyncBlocklistResource
+
+ return AsyncBlocklistResource(self)
+
@cached_property
def refunds(self) -> AsyncRefundsResource:
from .resources.refunds import AsyncRefundsResource
@@ -864,6 +878,12 @@ def customers(self) -> customers.CustomersResourceWithRawResponse:
return CustomersResourceWithRawResponse(self._client.customers)
+ @cached_property
+ def blocklist(self) -> blocklist.BlocklistResourceWithRawResponse:
+ from .resources.blocklist import BlocklistResourceWithRawResponse
+
+ return BlocklistResourceWithRawResponse(self._client.blocklist)
+
@cached_property
def refunds(self) -> refunds.RefundsResourceWithRawResponse:
from .resources.refunds import RefundsResourceWithRawResponse
@@ -1009,6 +1029,12 @@ def customers(self) -> customers.AsyncCustomersResourceWithRawResponse:
return AsyncCustomersResourceWithRawResponse(self._client.customers)
+ @cached_property
+ def blocklist(self) -> blocklist.AsyncBlocklistResourceWithRawResponse:
+ from .resources.blocklist import AsyncBlocklistResourceWithRawResponse
+
+ return AsyncBlocklistResourceWithRawResponse(self._client.blocklist)
+
@cached_property
def refunds(self) -> refunds.AsyncRefundsResourceWithRawResponse:
from .resources.refunds import AsyncRefundsResourceWithRawResponse
@@ -1154,6 +1180,12 @@ def customers(self) -> customers.CustomersResourceWithStreamingResponse:
return CustomersResourceWithStreamingResponse(self._client.customers)
+ @cached_property
+ def blocklist(self) -> blocklist.BlocklistResourceWithStreamingResponse:
+ from .resources.blocklist import BlocklistResourceWithStreamingResponse
+
+ return BlocklistResourceWithStreamingResponse(self._client.blocklist)
+
@cached_property
def refunds(self) -> refunds.RefundsResourceWithStreamingResponse:
from .resources.refunds import RefundsResourceWithStreamingResponse
@@ -1299,6 +1331,12 @@ def customers(self) -> customers.AsyncCustomersResourceWithStreamingResponse:
return AsyncCustomersResourceWithStreamingResponse(self._client.customers)
+ @cached_property
+ def blocklist(self) -> blocklist.AsyncBlocklistResourceWithStreamingResponse:
+ from .resources.blocklist import AsyncBlocklistResourceWithStreamingResponse
+
+ return AsyncBlocklistResourceWithStreamingResponse(self._client.blocklist)
+
@cached_property
def refunds(self) -> refunds.AsyncRefundsResourceWithStreamingResponse:
from .resources.refunds import AsyncRefundsResourceWithStreamingResponse
diff --git a/src/dodopayments/resources/__init__.py b/src/dodopayments/resources/__init__.py
index d6fd6e6..e3e3466 100644
--- a/src/dodopayments/resources/__init__.py
+++ b/src/dodopayments/resources/__init__.py
@@ -104,6 +104,14 @@
WebhooksResourceWithStreamingResponse,
AsyncWebhooksResourceWithStreamingResponse,
)
+from .blocklist import (
+ BlocklistResource,
+ AsyncBlocklistResource,
+ BlocklistResourceWithRawResponse,
+ AsyncBlocklistResourceWithRawResponse,
+ BlocklistResourceWithStreamingResponse,
+ AsyncBlocklistResourceWithStreamingResponse,
+)
from .customers import (
CustomersResource,
AsyncCustomersResource,
@@ -234,6 +242,12 @@
"AsyncCustomersResourceWithRawResponse",
"CustomersResourceWithStreamingResponse",
"AsyncCustomersResourceWithStreamingResponse",
+ "BlocklistResource",
+ "AsyncBlocklistResource",
+ "BlocklistResourceWithRawResponse",
+ "AsyncBlocklistResourceWithRawResponse",
+ "BlocklistResourceWithStreamingResponse",
+ "AsyncBlocklistResourceWithStreamingResponse",
"RefundsResource",
"AsyncRefundsResource",
"RefundsResourceWithRawResponse",
diff --git a/src/dodopayments/resources/blocklist/__init__.py b/src/dodopayments/resources/blocklist/__init__.py
new file mode 100644
index 0000000..4a83572
--- /dev/null
+++ b/src/dodopayments/resources/blocklist/__init__.py
@@ -0,0 +1,33 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from .blocklist import (
+ BlocklistResource,
+ AsyncBlocklistResource,
+ BlocklistResourceWithRawResponse,
+ AsyncBlocklistResourceWithRawResponse,
+ BlocklistResourceWithStreamingResponse,
+ AsyncBlocklistResourceWithStreamingResponse,
+)
+from .customers import (
+ CustomersResource,
+ AsyncCustomersResource,
+ CustomersResourceWithRawResponse,
+ AsyncCustomersResourceWithRawResponse,
+ CustomersResourceWithStreamingResponse,
+ AsyncCustomersResourceWithStreamingResponse,
+)
+
+__all__ = [
+ "CustomersResource",
+ "AsyncCustomersResource",
+ "CustomersResourceWithRawResponse",
+ "AsyncCustomersResourceWithRawResponse",
+ "CustomersResourceWithStreamingResponse",
+ "AsyncCustomersResourceWithStreamingResponse",
+ "BlocklistResource",
+ "AsyncBlocklistResource",
+ "BlocklistResourceWithRawResponse",
+ "AsyncBlocklistResourceWithRawResponse",
+ "BlocklistResourceWithStreamingResponse",
+ "AsyncBlocklistResourceWithStreamingResponse",
+]
diff --git a/src/dodopayments/resources/blocklist/blocklist.py b/src/dodopayments/resources/blocklist/blocklist.py
new file mode 100644
index 0000000..4855785
--- /dev/null
+++ b/src/dodopayments/resources/blocklist/blocklist.py
@@ -0,0 +1,102 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+from ..._compat import cached_property
+from ..._resource import SyncAPIResource, AsyncAPIResource
+from .customers.customers import (
+ CustomersResource,
+ AsyncCustomersResource,
+ CustomersResourceWithRawResponse,
+ AsyncCustomersResourceWithRawResponse,
+ CustomersResourceWithStreamingResponse,
+ AsyncCustomersResourceWithStreamingResponse,
+)
+
+__all__ = ["BlocklistResource", "AsyncBlocklistResource"]
+
+
+class BlocklistResource(SyncAPIResource):
+ @cached_property
+ def customers(self) -> CustomersResource:
+ return CustomersResource(self._client)
+
+ @cached_property
+ def with_raw_response(self) -> BlocklistResourceWithRawResponse:
+ """
+ This property can be used as a prefix for any HTTP method call to return
+ the raw response object instead of the parsed content.
+
+ For more information, see https://www.github.com/dodopayments/dodopayments-python#accessing-raw-response-data-eg-headers
+ """
+ return BlocklistResourceWithRawResponse(self)
+
+ @cached_property
+ def with_streaming_response(self) -> BlocklistResourceWithStreamingResponse:
+ """
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
+
+ For more information, see https://www.github.com/dodopayments/dodopayments-python#with_streaming_response
+ """
+ return BlocklistResourceWithStreamingResponse(self)
+
+
+class AsyncBlocklistResource(AsyncAPIResource):
+ @cached_property
+ def customers(self) -> AsyncCustomersResource:
+ return AsyncCustomersResource(self._client)
+
+ @cached_property
+ def with_raw_response(self) -> AsyncBlocklistResourceWithRawResponse:
+ """
+ This property can be used as a prefix for any HTTP method call to return
+ the raw response object instead of the parsed content.
+
+ For more information, see https://www.github.com/dodopayments/dodopayments-python#accessing-raw-response-data-eg-headers
+ """
+ return AsyncBlocklistResourceWithRawResponse(self)
+
+ @cached_property
+ def with_streaming_response(self) -> AsyncBlocklistResourceWithStreamingResponse:
+ """
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
+
+ For more information, see https://www.github.com/dodopayments/dodopayments-python#with_streaming_response
+ """
+ return AsyncBlocklistResourceWithStreamingResponse(self)
+
+
+class BlocklistResourceWithRawResponse:
+ def __init__(self, blocklist: BlocklistResource) -> None:
+ self._blocklist = blocklist
+
+ @cached_property
+ def customers(self) -> CustomersResourceWithRawResponse:
+ return CustomersResourceWithRawResponse(self._blocklist.customers)
+
+
+class AsyncBlocklistResourceWithRawResponse:
+ def __init__(self, blocklist: AsyncBlocklistResource) -> None:
+ self._blocklist = blocklist
+
+ @cached_property
+ def customers(self) -> AsyncCustomersResourceWithRawResponse:
+ return AsyncCustomersResourceWithRawResponse(self._blocklist.customers)
+
+
+class BlocklistResourceWithStreamingResponse:
+ def __init__(self, blocklist: BlocklistResource) -> None:
+ self._blocklist = blocklist
+
+ @cached_property
+ def customers(self) -> CustomersResourceWithStreamingResponse:
+ return CustomersResourceWithStreamingResponse(self._blocklist.customers)
+
+
+class AsyncBlocklistResourceWithStreamingResponse:
+ def __init__(self, blocklist: AsyncBlocklistResource) -> None:
+ self._blocklist = blocklist
+
+ @cached_property
+ def customers(self) -> AsyncCustomersResourceWithStreamingResponse:
+ return AsyncCustomersResourceWithStreamingResponse(self._blocklist.customers)
diff --git a/src/dodopayments/resources/blocklist/customers/__init__.py b/src/dodopayments/resources/blocklist/customers/__init__.py
new file mode 100644
index 0000000..368ace2
--- /dev/null
+++ b/src/dodopayments/resources/blocklist/customers/__init__.py
@@ -0,0 +1,33 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from .notes import (
+ NotesResource,
+ AsyncNotesResource,
+ NotesResourceWithRawResponse,
+ AsyncNotesResourceWithRawResponse,
+ NotesResourceWithStreamingResponse,
+ AsyncNotesResourceWithStreamingResponse,
+)
+from .customers import (
+ CustomersResource,
+ AsyncCustomersResource,
+ CustomersResourceWithRawResponse,
+ AsyncCustomersResourceWithRawResponse,
+ CustomersResourceWithStreamingResponse,
+ AsyncCustomersResourceWithStreamingResponse,
+)
+
+__all__ = [
+ "NotesResource",
+ "AsyncNotesResource",
+ "NotesResourceWithRawResponse",
+ "AsyncNotesResourceWithRawResponse",
+ "NotesResourceWithStreamingResponse",
+ "AsyncNotesResourceWithStreamingResponse",
+ "CustomersResource",
+ "AsyncCustomersResource",
+ "CustomersResourceWithRawResponse",
+ "AsyncCustomersResourceWithRawResponse",
+ "CustomersResourceWithStreamingResponse",
+ "AsyncCustomersResourceWithStreamingResponse",
+]
diff --git a/src/dodopayments/resources/blocklist/customers/customers.py b/src/dodopayments/resources/blocklist/customers/customers.py
new file mode 100644
index 0000000..4ad2714
--- /dev/null
+++ b/src/dodopayments/resources/blocklist/customers/customers.py
@@ -0,0 +1,621 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+from typing import Union, Optional
+from datetime import datetime
+from typing_extensions import overload
+
+import httpx
+
+from .notes import (
+ NotesResource,
+ AsyncNotesResource,
+ NotesResourceWithRawResponse,
+ AsyncNotesResourceWithRawResponse,
+ NotesResourceWithStreamingResponse,
+ AsyncNotesResourceWithStreamingResponse,
+)
+from ...._types import Body, Omit, Query, Headers, NoneType, NotGiven, omit, not_given
+from ...._utils import path_template, required_args, maybe_transform, async_maybe_transform
+from ...._compat import cached_property
+from ...._resource import SyncAPIResource, AsyncAPIResource
+from ...._response import (
+ to_raw_response_wrapper,
+ to_streamed_response_wrapper,
+ async_to_raw_response_wrapper,
+ async_to_streamed_response_wrapper,
+)
+from ....pagination import SyncDefaultPageNumberPagination, AsyncDefaultPageNumberPagination
+from ...._base_client import AsyncPaginator, make_request_options
+from ....types.blocklist import BlockedCustomerSource, customer_list_params, customer_create_params
+from ....types.blocklist.blocked_customer import BlockedCustomer
+from ....types.blocklist.blocked_customer_source import BlockedCustomerSource
+
+__all__ = ["CustomersResource", "AsyncCustomersResource"]
+
+
+class CustomersResource(SyncAPIResource):
+ @cached_property
+ def notes(self) -> NotesResource:
+ return NotesResource(self._client)
+
+ @cached_property
+ def with_raw_response(self) -> CustomersResourceWithRawResponse:
+ """
+ This property can be used as a prefix for any HTTP method call to return
+ the raw response object instead of the parsed content.
+
+ For more information, see https://www.github.com/dodopayments/dodopayments-python#accessing-raw-response-data-eg-headers
+ """
+ return CustomersResourceWithRawResponse(self)
+
+ @cached_property
+ def with_streaming_response(self) -> CustomersResourceWithStreamingResponse:
+ """
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
+
+ For more information, see https://www.github.com/dodopayments/dodopayments-python#with_streaming_response
+ """
+ return CustomersResourceWithStreamingResponse(self)
+
+ @overload
+ def create(
+ self,
+ *,
+ customer_id: str,
+ reason: Optional[str] | Omit = omit,
+ source: Optional[BlockedCustomerSource] | Omit = omit,
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
+ ) -> BlockedCustomer:
+ """Args:
+ customer_id: Customer to block.
+
+ The block still applies to that customer's email.
+
+ reason: Why the merchant blocked this customer. The entry page shows it.
+
+ source: Screen the merchant blocked from. Ignored for an API-key caller, whose entry
+ always records `api`. A dashboard caller that omits it records `blocklist_page`.
+
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ ...
+
+ @overload
+ def create(
+ self,
+ *,
+ email: str,
+ reason: Optional[str] | Omit = omit,
+ source: Optional[BlockedCustomerSource] | Omit = omit,
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
+ ) -> BlockedCustomer:
+ """Args:
+ email: Email to block.
+
+ It must belong to an existing customer of this business.
+
+ reason: Why the merchant blocked this customer. The entry page shows it.
+
+ source: Screen the merchant blocked from. Ignored for an API-key caller, whose entry
+ always records `api`. A dashboard caller that omits it records `blocklist_page`.
+
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ ...
+
+ @required_args(["customer_id"], ["email"])
+ def create(
+ self,
+ *,
+ customer_id: str | Omit = omit,
+ reason: Optional[str] | Omit = omit,
+ source: Optional[BlockedCustomerSource] | Omit = omit,
+ email: str | Omit = omit,
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
+ ) -> BlockedCustomer:
+ return self._post(
+ "/blocklist/customers",
+ body=maybe_transform(
+ {
+ "customer_id": customer_id,
+ "reason": reason,
+ "source": source,
+ "email": email,
+ },
+ customer_create_params.CustomerCreateParams,
+ ),
+ options=make_request_options(
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
+ ),
+ cast_to=BlockedCustomer,
+ )
+
+ def retrieve(
+ self,
+ entry_id: str,
+ *,
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
+ ) -> BlockedCustomer:
+ """
+ Args:
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if not entry_id:
+ raise ValueError(f"Expected a non-empty value for `entry_id` but received {entry_id!r}")
+ return self._get(
+ path_template("/blocklist/customers/{entry_id}", entry_id=entry_id),
+ options=make_request_options(
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
+ ),
+ cast_to=BlockedCustomer,
+ )
+
+ def list(
+ self,
+ *,
+ blocked_by_email: Optional[str] | Omit = omit,
+ created_at_gte: Union[str, datetime, None] | Omit = omit,
+ created_at_lte: Union[str, datetime, None] | Omit = omit,
+ identifier: Optional[str] | Omit = omit,
+ page_number: Optional[int] | Omit = omit,
+ page_size: Optional[int] | Omit = omit,
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
+ ) -> SyncDefaultPageNumberPagination[BlockedCustomer]:
+ """
+ Args:
+ blocked_by_email: Filter by the dashboard user who blocked the customer.
+
+ created_at_gte: Blocked on or after this time.
+
+ created_at_lte: Blocked on or before this time.
+
+ identifier: Partial, case-insensitive match on the email and on the customer id.
+
+ page_number: Page number. Default 0.
+
+ page_size: Page size. Default 10, maximum 100.
+
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ return self._get_api_list(
+ "/blocklist/customers",
+ page=SyncDefaultPageNumberPagination[BlockedCustomer],
+ options=make_request_options(
+ extra_headers=extra_headers,
+ extra_query=extra_query,
+ extra_body=extra_body,
+ timeout=timeout,
+ query=maybe_transform(
+ {
+ "blocked_by_email": blocked_by_email,
+ "created_at_gte": created_at_gte,
+ "created_at_lte": created_at_lte,
+ "identifier": identifier,
+ "page_number": page_number,
+ "page_size": page_size,
+ },
+ customer_list_params.CustomerListParams,
+ ),
+ ),
+ model=BlockedCustomer,
+ )
+
+ def delete(
+ self,
+ entry_id: str,
+ *,
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
+ ) -> None:
+ """
+ Args:
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if not entry_id:
+ raise ValueError(f"Expected a non-empty value for `entry_id` but received {entry_id!r}")
+ extra_headers = {"Accept": "*/*", **(extra_headers or {})}
+ return self._delete(
+ path_template("/blocklist/customers/{entry_id}", entry_id=entry_id),
+ options=make_request_options(
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
+ ),
+ cast_to=NoneType,
+ )
+
+
+class AsyncCustomersResource(AsyncAPIResource):
+ @cached_property
+ def notes(self) -> AsyncNotesResource:
+ return AsyncNotesResource(self._client)
+
+ @cached_property
+ def with_raw_response(self) -> AsyncCustomersResourceWithRawResponse:
+ """
+ This property can be used as a prefix for any HTTP method call to return
+ the raw response object instead of the parsed content.
+
+ For more information, see https://www.github.com/dodopayments/dodopayments-python#accessing-raw-response-data-eg-headers
+ """
+ return AsyncCustomersResourceWithRawResponse(self)
+
+ @cached_property
+ def with_streaming_response(self) -> AsyncCustomersResourceWithStreamingResponse:
+ """
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
+
+ For more information, see https://www.github.com/dodopayments/dodopayments-python#with_streaming_response
+ """
+ return AsyncCustomersResourceWithStreamingResponse(self)
+
+ @overload
+ async def create(
+ self,
+ *,
+ customer_id: str,
+ reason: Optional[str] | Omit = omit,
+ source: Optional[BlockedCustomerSource] | Omit = omit,
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
+ ) -> BlockedCustomer:
+ """Args:
+ customer_id: Customer to block.
+
+ The block still applies to that customer's email.
+
+ reason: Why the merchant blocked this customer. The entry page shows it.
+
+ source: Screen the merchant blocked from. Ignored for an API-key caller, whose entry
+ always records `api`. A dashboard caller that omits it records `blocklist_page`.
+
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ ...
+
+ @overload
+ async def create(
+ self,
+ *,
+ email: str,
+ reason: Optional[str] | Omit = omit,
+ source: Optional[BlockedCustomerSource] | Omit = omit,
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
+ ) -> BlockedCustomer:
+ """Args:
+ email: Email to block.
+
+ It must belong to an existing customer of this business.
+
+ reason: Why the merchant blocked this customer. The entry page shows it.
+
+ source: Screen the merchant blocked from. Ignored for an API-key caller, whose entry
+ always records `api`. A dashboard caller that omits it records `blocklist_page`.
+
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ ...
+
+ @required_args(["customer_id"], ["email"])
+ async def create(
+ self,
+ *,
+ customer_id: str | Omit = omit,
+ reason: Optional[str] | Omit = omit,
+ source: Optional[BlockedCustomerSource] | Omit = omit,
+ email: str | Omit = omit,
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
+ ) -> BlockedCustomer:
+ return await self._post(
+ "/blocklist/customers",
+ body=await async_maybe_transform(
+ {
+ "customer_id": customer_id,
+ "reason": reason,
+ "source": source,
+ "email": email,
+ },
+ customer_create_params.CustomerCreateParams,
+ ),
+ options=make_request_options(
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
+ ),
+ cast_to=BlockedCustomer,
+ )
+
+ async def retrieve(
+ self,
+ entry_id: str,
+ *,
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
+ ) -> BlockedCustomer:
+ """
+ Args:
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if not entry_id:
+ raise ValueError(f"Expected a non-empty value for `entry_id` but received {entry_id!r}")
+ return await self._get(
+ path_template("/blocklist/customers/{entry_id}", entry_id=entry_id),
+ options=make_request_options(
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
+ ),
+ cast_to=BlockedCustomer,
+ )
+
+ def list(
+ self,
+ *,
+ blocked_by_email: Optional[str] | Omit = omit,
+ created_at_gte: Union[str, datetime, None] | Omit = omit,
+ created_at_lte: Union[str, datetime, None] | Omit = omit,
+ identifier: Optional[str] | Omit = omit,
+ page_number: Optional[int] | Omit = omit,
+ page_size: Optional[int] | Omit = omit,
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
+ ) -> AsyncPaginator[BlockedCustomer, AsyncDefaultPageNumberPagination[BlockedCustomer]]:
+ """
+ Args:
+ blocked_by_email: Filter by the dashboard user who blocked the customer.
+
+ created_at_gte: Blocked on or after this time.
+
+ created_at_lte: Blocked on or before this time.
+
+ identifier: Partial, case-insensitive match on the email and on the customer id.
+
+ page_number: Page number. Default 0.
+
+ page_size: Page size. Default 10, maximum 100.
+
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ return self._get_api_list(
+ "/blocklist/customers",
+ page=AsyncDefaultPageNumberPagination[BlockedCustomer],
+ options=make_request_options(
+ extra_headers=extra_headers,
+ extra_query=extra_query,
+ extra_body=extra_body,
+ timeout=timeout,
+ query=maybe_transform(
+ {
+ "blocked_by_email": blocked_by_email,
+ "created_at_gte": created_at_gte,
+ "created_at_lte": created_at_lte,
+ "identifier": identifier,
+ "page_number": page_number,
+ "page_size": page_size,
+ },
+ customer_list_params.CustomerListParams,
+ ),
+ ),
+ model=BlockedCustomer,
+ )
+
+ async def delete(
+ self,
+ entry_id: str,
+ *,
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
+ ) -> None:
+ """
+ Args:
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if not entry_id:
+ raise ValueError(f"Expected a non-empty value for `entry_id` but received {entry_id!r}")
+ extra_headers = {"Accept": "*/*", **(extra_headers or {})}
+ return await self._delete(
+ path_template("/blocklist/customers/{entry_id}", entry_id=entry_id),
+ options=make_request_options(
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
+ ),
+ cast_to=NoneType,
+ )
+
+
+class CustomersResourceWithRawResponse:
+ def __init__(self, customers: CustomersResource) -> None:
+ self._customers = customers
+
+ self.create = to_raw_response_wrapper(
+ customers.create,
+ )
+ self.retrieve = to_raw_response_wrapper(
+ customers.retrieve,
+ )
+ self.list = to_raw_response_wrapper(
+ customers.list,
+ )
+ self.delete = to_raw_response_wrapper(
+ customers.delete,
+ )
+
+ @cached_property
+ def notes(self) -> NotesResourceWithRawResponse:
+ return NotesResourceWithRawResponse(self._customers.notes)
+
+
+class AsyncCustomersResourceWithRawResponse:
+ def __init__(self, customers: AsyncCustomersResource) -> None:
+ self._customers = customers
+
+ self.create = async_to_raw_response_wrapper(
+ customers.create,
+ )
+ self.retrieve = async_to_raw_response_wrapper(
+ customers.retrieve,
+ )
+ self.list = async_to_raw_response_wrapper(
+ customers.list,
+ )
+ self.delete = async_to_raw_response_wrapper(
+ customers.delete,
+ )
+
+ @cached_property
+ def notes(self) -> AsyncNotesResourceWithRawResponse:
+ return AsyncNotesResourceWithRawResponse(self._customers.notes)
+
+
+class CustomersResourceWithStreamingResponse:
+ def __init__(self, customers: CustomersResource) -> None:
+ self._customers = customers
+
+ self.create = to_streamed_response_wrapper(
+ customers.create,
+ )
+ self.retrieve = to_streamed_response_wrapper(
+ customers.retrieve,
+ )
+ self.list = to_streamed_response_wrapper(
+ customers.list,
+ )
+ self.delete = to_streamed_response_wrapper(
+ customers.delete,
+ )
+
+ @cached_property
+ def notes(self) -> NotesResourceWithStreamingResponse:
+ return NotesResourceWithStreamingResponse(self._customers.notes)
+
+
+class AsyncCustomersResourceWithStreamingResponse:
+ def __init__(self, customers: AsyncCustomersResource) -> None:
+ self._customers = customers
+
+ self.create = async_to_streamed_response_wrapper(
+ customers.create,
+ )
+ self.retrieve = async_to_streamed_response_wrapper(
+ customers.retrieve,
+ )
+ self.list = async_to_streamed_response_wrapper(
+ customers.list,
+ )
+ self.delete = async_to_streamed_response_wrapper(
+ customers.delete,
+ )
+
+ @cached_property
+ def notes(self) -> AsyncNotesResourceWithStreamingResponse:
+ return AsyncNotesResourceWithStreamingResponse(self._customers.notes)
diff --git a/src/dodopayments/resources/blocklist/customers/notes.py b/src/dodopayments/resources/blocklist/customers/notes.py
new file mode 100644
index 0000000..5ca2e40
--- /dev/null
+++ b/src/dodopayments/resources/blocklist/customers/notes.py
@@ -0,0 +1,249 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+import httpx
+
+from ...._types import Body, Query, Headers, NotGiven, not_given
+from ...._utils import path_template, maybe_transform, async_maybe_transform
+from ...._compat import cached_property
+from ...._resource import SyncAPIResource, AsyncAPIResource
+from ...._response import (
+ to_raw_response_wrapper,
+ to_streamed_response_wrapper,
+ async_to_raw_response_wrapper,
+ async_to_streamed_response_wrapper,
+)
+from ...._base_client import make_request_options
+from ....types.blocklist.customers import note_create_params, note_update_params
+from ....types.blocklist.customers.blocked_customer_note import BlockedCustomerNote
+
+__all__ = ["NotesResource", "AsyncNotesResource"]
+
+
+class NotesResource(SyncAPIResource):
+ @cached_property
+ def with_raw_response(self) -> NotesResourceWithRawResponse:
+ """
+ This property can be used as a prefix for any HTTP method call to return
+ the raw response object instead of the parsed content.
+
+ For more information, see https://www.github.com/dodopayments/dodopayments-python#accessing-raw-response-data-eg-headers
+ """
+ return NotesResourceWithRawResponse(self)
+
+ @cached_property
+ def with_streaming_response(self) -> NotesResourceWithStreamingResponse:
+ """
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
+
+ For more information, see https://www.github.com/dodopayments/dodopayments-python#with_streaming_response
+ """
+ return NotesResourceWithStreamingResponse(self)
+
+ def create(
+ self,
+ entry_id: str,
+ *,
+ note: str,
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
+ ) -> BlockedCustomerNote:
+ """
+ Args:
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if not entry_id:
+ raise ValueError(f"Expected a non-empty value for `entry_id` but received {entry_id!r}")
+ return self._post(
+ path_template("/blocklist/customers/{entry_id}/notes", entry_id=entry_id),
+ body=maybe_transform({"note": note}, note_create_params.NoteCreateParams),
+ options=make_request_options(
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
+ ),
+ cast_to=BlockedCustomerNote,
+ )
+
+ def update(
+ self,
+ note_id: str,
+ *,
+ entry_id: str,
+ note: str,
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
+ ) -> BlockedCustomerNote:
+ """
+ Args:
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if not entry_id:
+ raise ValueError(f"Expected a non-empty value for `entry_id` but received {entry_id!r}")
+ if not note_id:
+ raise ValueError(f"Expected a non-empty value for `note_id` but received {note_id!r}")
+ return self._patch(
+ path_template("/blocklist/customers/{entry_id}/notes/{note_id}", entry_id=entry_id, note_id=note_id),
+ body=maybe_transform({"note": note}, note_update_params.NoteUpdateParams),
+ options=make_request_options(
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
+ ),
+ cast_to=BlockedCustomerNote,
+ )
+
+
+class AsyncNotesResource(AsyncAPIResource):
+ @cached_property
+ def with_raw_response(self) -> AsyncNotesResourceWithRawResponse:
+ """
+ This property can be used as a prefix for any HTTP method call to return
+ the raw response object instead of the parsed content.
+
+ For more information, see https://www.github.com/dodopayments/dodopayments-python#accessing-raw-response-data-eg-headers
+ """
+ return AsyncNotesResourceWithRawResponse(self)
+
+ @cached_property
+ def with_streaming_response(self) -> AsyncNotesResourceWithStreamingResponse:
+ """
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
+
+ For more information, see https://www.github.com/dodopayments/dodopayments-python#with_streaming_response
+ """
+ return AsyncNotesResourceWithStreamingResponse(self)
+
+ async def create(
+ self,
+ entry_id: str,
+ *,
+ note: str,
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
+ ) -> BlockedCustomerNote:
+ """
+ Args:
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if not entry_id:
+ raise ValueError(f"Expected a non-empty value for `entry_id` but received {entry_id!r}")
+ return await self._post(
+ path_template("/blocklist/customers/{entry_id}/notes", entry_id=entry_id),
+ body=await async_maybe_transform({"note": note}, note_create_params.NoteCreateParams),
+ options=make_request_options(
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
+ ),
+ cast_to=BlockedCustomerNote,
+ )
+
+ async def update(
+ self,
+ note_id: str,
+ *,
+ entry_id: str,
+ note: str,
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
+ ) -> BlockedCustomerNote:
+ """
+ Args:
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if not entry_id:
+ raise ValueError(f"Expected a non-empty value for `entry_id` but received {entry_id!r}")
+ if not note_id:
+ raise ValueError(f"Expected a non-empty value for `note_id` but received {note_id!r}")
+ return await self._patch(
+ path_template("/blocklist/customers/{entry_id}/notes/{note_id}", entry_id=entry_id, note_id=note_id),
+ body=await async_maybe_transform({"note": note}, note_update_params.NoteUpdateParams),
+ options=make_request_options(
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
+ ),
+ cast_to=BlockedCustomerNote,
+ )
+
+
+class NotesResourceWithRawResponse:
+ def __init__(self, notes: NotesResource) -> None:
+ self._notes = notes
+
+ self.create = to_raw_response_wrapper(
+ notes.create,
+ )
+ self.update = to_raw_response_wrapper(
+ notes.update,
+ )
+
+
+class AsyncNotesResourceWithRawResponse:
+ def __init__(self, notes: AsyncNotesResource) -> None:
+ self._notes = notes
+
+ self.create = async_to_raw_response_wrapper(
+ notes.create,
+ )
+ self.update = async_to_raw_response_wrapper(
+ notes.update,
+ )
+
+
+class NotesResourceWithStreamingResponse:
+ def __init__(self, notes: NotesResource) -> None:
+ self._notes = notes
+
+ self.create = to_streamed_response_wrapper(
+ notes.create,
+ )
+ self.update = to_streamed_response_wrapper(
+ notes.update,
+ )
+
+
+class AsyncNotesResourceWithStreamingResponse:
+ def __init__(self, notes: AsyncNotesResource) -> None:
+ self._notes = notes
+
+ self.create = async_to_streamed_response_wrapper(
+ notes.create,
+ )
+ self.update = async_to_streamed_response_wrapper(
+ notes.update,
+ )
diff --git a/src/dodopayments/resources/payments.py b/src/dodopayments/resources/payments.py
index c475dd2..5acde03 100644
--- a/src/dodopayments/resources/payments.py
+++ b/src/dodopayments/resources/payments.py
@@ -24,7 +24,9 @@
from .._base_client import AsyncPaginator, make_request_options
from ..types.payment import Payment
from ..types.currency import Currency
+from ..types.manual_retry import ManualRetry
from ..types.metadata_param import MetadataParam
+from ..types.manual_retry_state import ManualRetryState
from ..types.payment_method_types import PaymentMethodTypes
from ..types.billing_address_param import BillingAddressParam
from ..types.payment_list_response import PaymentListResponse
@@ -485,6 +487,68 @@ def retrieve_line_items(
cast_to=PaymentRetrieveLineItemsResponse,
)
+ def retrieve_retry_state(
+ self,
+ payment_id: str,
+ *,
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
+ ) -> ManualRetryState:
+ """
+ Args:
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if not payment_id:
+ raise ValueError(f"Expected a non-empty value for `payment_id` but received {payment_id!r}")
+ return self._get(
+ path_template("/payments/{payment_id}/retry", payment_id=payment_id),
+ options=make_request_options(
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
+ ),
+ cast_to=ManualRetryState,
+ )
+
+ def retry(
+ self,
+ payment_id: str,
+ *,
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
+ ) -> ManualRetry:
+ """
+ Args:
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if not payment_id:
+ raise ValueError(f"Expected a non-empty value for `payment_id` but received {payment_id!r}")
+ return self._post(
+ path_template("/payments/{payment_id}/retry", payment_id=payment_id),
+ options=make_request_options(
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
+ ),
+ cast_to=ManualRetry,
+ )
+
class AsyncPaymentsResource(AsyncAPIResource):
@cached_property
@@ -935,6 +999,68 @@ async def retrieve_line_items(
cast_to=PaymentRetrieveLineItemsResponse,
)
+ async def retrieve_retry_state(
+ self,
+ payment_id: str,
+ *,
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
+ ) -> ManualRetryState:
+ """
+ Args:
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if not payment_id:
+ raise ValueError(f"Expected a non-empty value for `payment_id` but received {payment_id!r}")
+ return await self._get(
+ path_template("/payments/{payment_id}/retry", payment_id=payment_id),
+ options=make_request_options(
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
+ ),
+ cast_to=ManualRetryState,
+ )
+
+ async def retry(
+ self,
+ payment_id: str,
+ *,
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
+ # The extra values given here take precedence over values defined on the client or passed to this method.
+ extra_headers: Headers | None = None,
+ extra_query: Query | None = None,
+ extra_body: Body | None = None,
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
+ ) -> ManualRetry:
+ """
+ Args:
+ extra_headers: Send extra headers
+
+ extra_query: Add additional query parameters to the request
+
+ extra_body: Add additional JSON properties to the request
+
+ timeout: Override the client-level default timeout for this request, in seconds
+ """
+ if not payment_id:
+ raise ValueError(f"Expected a non-empty value for `payment_id` but received {payment_id!r}")
+ return await self._post(
+ path_template("/payments/{payment_id}/retry", payment_id=payment_id),
+ options=make_request_options(
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
+ ),
+ cast_to=ManualRetry,
+ )
+
class PaymentsResourceWithRawResponse:
def __init__(self, payments: PaymentsResource) -> None:
@@ -954,6 +1080,12 @@ def __init__(self, payments: PaymentsResource) -> None:
self.retrieve_line_items = to_raw_response_wrapper(
payments.retrieve_line_items,
)
+ self.retrieve_retry_state = to_raw_response_wrapper(
+ payments.retrieve_retry_state,
+ )
+ self.retry = to_raw_response_wrapper(
+ payments.retry,
+ )
class AsyncPaymentsResourceWithRawResponse:
@@ -974,6 +1106,12 @@ def __init__(self, payments: AsyncPaymentsResource) -> None:
self.retrieve_line_items = async_to_raw_response_wrapper(
payments.retrieve_line_items,
)
+ self.retrieve_retry_state = async_to_raw_response_wrapper(
+ payments.retrieve_retry_state,
+ )
+ self.retry = async_to_raw_response_wrapper(
+ payments.retry,
+ )
class PaymentsResourceWithStreamingResponse:
@@ -994,6 +1132,12 @@ def __init__(self, payments: PaymentsResource) -> None:
self.retrieve_line_items = to_streamed_response_wrapper(
payments.retrieve_line_items,
)
+ self.retrieve_retry_state = to_streamed_response_wrapper(
+ payments.retrieve_retry_state,
+ )
+ self.retry = to_streamed_response_wrapper(
+ payments.retry,
+ )
class AsyncPaymentsResourceWithStreamingResponse:
@@ -1014,3 +1158,9 @@ def __init__(self, payments: AsyncPaymentsResource) -> None:
self.retrieve_line_items = async_to_streamed_response_wrapper(
payments.retrieve_line_items,
)
+ self.retrieve_retry_state = async_to_streamed_response_wrapper(
+ payments.retrieve_retry_state,
+ )
+ self.retry = async_to_streamed_response_wrapper(
+ payments.retry,
+ )
diff --git a/src/dodopayments/resources/subscriptions.py b/src/dodopayments/resources/subscriptions.py
index 2c8bbe0..aa0551f 100644
--- a/src/dodopayments/resources/subscriptions.py
+++ b/src/dodopayments/resources/subscriptions.py
@@ -268,7 +268,13 @@ def update(
billing: Optional[BillingAddressParam] | Omit = omit,
cancel_at_next_billing_date: Optional[bool] | Omit = omit,
cancel_reason: Optional[
- Literal["cancelled_by_customer", "cancelled_by_merchant", "cancelled_by_merchant_send_dunning", "dodo_team"]
+ Literal[
+ "cancelled_by_customer",
+ "cancelled_by_merchant",
+ "cancelled_by_merchant_send_dunning",
+ "cancelled_by_merchant_grace_period_expired",
+ "dodo_team",
+ ]
]
| Omit = omit,
cancellation_comment: Optional[str] | Omit = omit,
@@ -385,7 +391,8 @@ def list(
page_number: int | Omit = omit,
page_size: int | Omit = omit,
product_id: str | Omit = omit,
- status: Literal["pending", "active", "on_hold", "paused", "cancelled", "failed", "expired"] | Omit = omit,
+ status: Literal["pending", "active", "on_hold", "paused", "cancelled", "failed", "expired", "past_due"]
+ | Omit = omit,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
extra_headers: Headers | None = None,
@@ -1165,7 +1172,13 @@ async def update(
billing: Optional[BillingAddressParam] | Omit = omit,
cancel_at_next_billing_date: Optional[bool] | Omit = omit,
cancel_reason: Optional[
- Literal["cancelled_by_customer", "cancelled_by_merchant", "cancelled_by_merchant_send_dunning", "dodo_team"]
+ Literal[
+ "cancelled_by_customer",
+ "cancelled_by_merchant",
+ "cancelled_by_merchant_send_dunning",
+ "cancelled_by_merchant_grace_period_expired",
+ "dodo_team",
+ ]
]
| Omit = omit,
cancellation_comment: Optional[str] | Omit = omit,
@@ -1282,7 +1295,8 @@ def list(
page_number: int | Omit = omit,
page_size: int | Omit = omit,
product_id: str | Omit = omit,
- status: Literal["pending", "active", "on_hold", "paused", "cancelled", "failed", "expired"] | Omit = omit,
+ status: Literal["pending", "active", "on_hold", "paused", "cancelled", "failed", "expired", "past_due"]
+ | Omit = omit,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
extra_headers: Headers | None = None,
diff --git a/src/dodopayments/types/__init__.py b/src/dodopayments/types/__init__.py
index efa58b9..365bec9 100644
--- a/src/dodopayments/types/__init__.py
+++ b/src/dodopayments/types/__init__.py
@@ -25,6 +25,7 @@
from .price_param import PriceParam as PriceParam
from .country_code import CountryCode as CountryCode
from .feature_type import FeatureType as FeatureType
+from .manual_retry import ManualRetry as ManualRetry
from .meter_filter import MeterFilter as MeterFilter
from .subscription import Subscription as Subscription
from .tax_category import TaxCategory as TaxCategory
@@ -53,6 +54,7 @@
from .credit_entitlement import CreditEntitlement as CreditEntitlement
from .custom_field_param import CustomFieldParam as CustomFieldParam
from .license_key_status import LicenseKeyStatus as LicenseKeyStatus
+from .manual_retry_state import ManualRetryState as ManualRetryState
from .meter_filter_param import MeterFilterParam as MeterFilterParam
from .new_customer_param import NewCustomerParam as NewCustomerParam
from .payout_list_params import PayoutListParams as PayoutListParams
@@ -207,6 +209,7 @@
from .subscription_updated_webhook_event import SubscriptionUpdatedWebhookEvent as SubscriptionUpdatedWebhookEvent
from .credit_entitlement_mapping_response import CreditEntitlementMappingResponse as CreditEntitlementMappingResponse
from .customer_list_entitlements_response import CustomerListEntitlementsResponse as CustomerListEntitlementsResponse
+from .subscription_past_due_webhook_event import SubscriptionPastDueWebhookEvent as SubscriptionPastDueWebhookEvent
from .subscription_unpaused_webhook_event import SubscriptionUnpausedWebhookEvent as SubscriptionUnpausedWebhookEvent
from .checkout_session_customization_param import CheckoutSessionCustomizationParam as CheckoutSessionCustomizationParam
from .credit_overage_charged_webhook_event import CreditOverageChargedWebhookEvent as CreditOverageChargedWebhookEvent
diff --git a/src/dodopayments/types/balance_ledger_entry.py b/src/dodopayments/types/balance_ledger_entry.py
index 900f64f..9e98fa0 100644
--- a/src/dodopayments/types/balance_ledger_entry.py
+++ b/src/dodopayments/types/balance_ledger_entry.py
@@ -56,4 +56,6 @@ class BalanceLedgerEntry(BaseModel):
description: Optional[str] = None
+ payout_id: Optional[str] = None
+
reference_object_id: Optional[str] = None
diff --git a/src/dodopayments/types/blocklist/__init__.py b/src/dodopayments/types/blocklist/__init__.py
new file mode 100644
index 0000000..c27100d
--- /dev/null
+++ b/src/dodopayments/types/blocklist/__init__.py
@@ -0,0 +1,13 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+from .blocked_customer import BlockedCustomer as BlockedCustomer
+from .block_by_email_param import BlockByEmailParam as BlockByEmailParam
+from .customer_list_params import CustomerListParams as CustomerListParams
+from .customer_create_params import CustomerCreateParams as CustomerCreateParams
+from .blocked_customer_source import BlockedCustomerSource as BlockedCustomerSource
+from .block_by_customer_id_param import BlockByCustomerIDParam as BlockByCustomerIDParam
+from .create_blocked_customer_request_param import (
+ CreateBlockedCustomerRequestParam as CreateBlockedCustomerRequestParam,
+)
diff --git a/src/dodopayments/types/blocklist/block_by_customer_id_param.py b/src/dodopayments/types/blocklist/block_by_customer_id_param.py
new file mode 100644
index 0000000..d50b13c
--- /dev/null
+++ b/src/dodopayments/types/blocklist/block_by_customer_id_param.py
@@ -0,0 +1,12 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+from typing_extensions import Required, TypedDict
+
+__all__ = ["BlockByCustomerIDParam"]
+
+
+class BlockByCustomerIDParam(TypedDict, total=False):
+ customer_id: Required[str]
+ """Customer to block. The block still applies to that customer's email."""
diff --git a/src/dodopayments/types/blocklist/block_by_email_param.py b/src/dodopayments/types/blocklist/block_by_email_param.py
new file mode 100644
index 0000000..5c1f8df
--- /dev/null
+++ b/src/dodopayments/types/blocklist/block_by_email_param.py
@@ -0,0 +1,12 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+from typing_extensions import Required, TypedDict
+
+__all__ = ["BlockByEmailParam"]
+
+
+class BlockByEmailParam(TypedDict, total=False):
+ email: Required[str]
+ """Email to block. It must belong to an existing customer of this business."""
diff --git a/src/dodopayments/types/blocklist/blocked_customer.py b/src/dodopayments/types/blocklist/blocked_customer.py
new file mode 100644
index 0000000..3946466
--- /dev/null
+++ b/src/dodopayments/types/blocklist/blocked_customer.py
@@ -0,0 +1,59 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from typing import List, Optional
+from datetime import datetime
+
+from ..._models import BaseModel
+from .blocked_customer_source import BlockedCustomerSource
+from .customers.blocked_customer_note import BlockedCustomerNote
+
+__all__ = ["BlockedCustomer"]
+
+
+class BlockedCustomer(BaseModel):
+ id: str
+
+ created_at: datetime
+
+ customer_email: str
+
+ customer_id: str
+
+ customer_name: str
+
+ identifier: str
+ """Customer id or email that the merchant supplied."""
+
+ source: BlockedCustomerSource
+ """Where a block came from.
+
+ `Api` marks an API-key caller, which carries no dashboard actor. The other
+ values name the screen the merchant used.
+ """
+
+ blocked_by_email: Optional[str] = None
+ """Dashboard user who blocked the customer. `null` for an API-key caller."""
+
+ cancelled_subscription_ids: Optional[List[str]] = None
+ """Subscriptions this block cancelled. Present on the create response only."""
+
+ notes: Optional[List[BlockedCustomerNote]] = None
+ """Activity log. Present on the detail response only."""
+
+ reason: Optional[str] = None
+
+ remaining_subscription_ids: Optional[List[str]] = None
+ """
+ Subscriptions this block left live, because the cancel failed or the inline
+ batch filled up. Repeat the create call to continue; the block itself is already
+ in force.
+ """
+
+ subscriptions_swept: Optional[bool] = None
+ """
+ False when the block left live subscriptions behind, including the case where
+ the sweep could not list them and `remaining_subscription_ids` is therefore
+ unknown. Repeat the create call until it reads true.
+ """
+
+ unblocked_at: Optional[datetime] = None
diff --git a/src/dodopayments/types/blocklist/blocked_customer_source.py b/src/dodopayments/types/blocklist/blocked_customer_source.py
new file mode 100644
index 0000000..fd20f21
--- /dev/null
+++ b/src/dodopayments/types/blocklist/blocked_customer_source.py
@@ -0,0 +1,7 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from typing_extensions import Literal, TypeAlias
+
+__all__ = ["BlockedCustomerSource"]
+
+BlockedCustomerSource: TypeAlias = Literal["blocklist_page", "customer_page", "payment_page", "dispute_page", "api"]
diff --git a/src/dodopayments/types/blocklist/create_blocked_customer_request_param.py b/src/dodopayments/types/blocklist/create_blocked_customer_request_param.py
new file mode 100644
index 0000000..154c344
--- /dev/null
+++ b/src/dodopayments/types/blocklist/create_blocked_customer_request_param.py
@@ -0,0 +1,41 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+from typing import Union, Optional
+from typing_extensions import TypeAlias
+
+from .block_by_email_param import BlockByEmailParam
+from .blocked_customer_source import BlockedCustomerSource
+from .block_by_customer_id_param import BlockByCustomerIDParam
+
+__all__ = ["CreateBlockedCustomerRequestParam", "BlocklistCustomersBlockByCustomerID", "BlocklistCustomersBlockByEmail"]
+
+
+class BlocklistCustomersBlockByCustomerID(BlockByCustomerIDParam, total=False):
+ reason: Optional[str]
+ """Why the merchant blocked this customer. The entry page shows it."""
+
+ source: Optional[BlockedCustomerSource]
+ """Screen the merchant blocked from.
+
+ Ignored for an API-key caller, whose entry always records `api`. A dashboard
+ caller that omits it records `blocklist_page`.
+ """
+
+
+class BlocklistCustomersBlockByEmail(BlockByEmailParam, total=False):
+ reason: Optional[str]
+ """Why the merchant blocked this customer. The entry page shows it."""
+
+ source: Optional[BlockedCustomerSource]
+ """Screen the merchant blocked from.
+
+ Ignored for an API-key caller, whose entry always records `api`. A dashboard
+ caller that omits it records `blocklist_page`.
+ """
+
+
+CreateBlockedCustomerRequestParam: TypeAlias = Union[
+ BlocklistCustomersBlockByCustomerID, BlocklistCustomersBlockByEmail
+]
diff --git a/src/dodopayments/types/blocklist/customer_create_params.py b/src/dodopayments/types/blocklist/customer_create_params.py
new file mode 100644
index 0000000..159a05f
--- /dev/null
+++ b/src/dodopayments/types/blocklist/customer_create_params.py
@@ -0,0 +1,43 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+from typing import Union, Optional
+from typing_extensions import Required, TypeAlias, TypedDict
+
+from .blocked_customer_source import BlockedCustomerSource
+
+__all__ = ["CustomerCreateParams", "BlocklistCustomersBlockByCustomerID", "BlocklistCustomersBlockByEmail"]
+
+
+class BlocklistCustomersBlockByCustomerID(TypedDict, total=False):
+ customer_id: Required[str]
+ """Customer to block. The block still applies to that customer's email."""
+
+ reason: Optional[str]
+ """Why the merchant blocked this customer. The entry page shows it."""
+
+ source: Optional[BlockedCustomerSource]
+ """Screen the merchant blocked from.
+
+ Ignored for an API-key caller, whose entry always records `api`. A dashboard
+ caller that omits it records `blocklist_page`.
+ """
+
+
+class BlocklistCustomersBlockByEmail(TypedDict, total=False):
+ email: Required[str]
+ """Email to block. It must belong to an existing customer of this business."""
+
+ reason: Optional[str]
+ """Why the merchant blocked this customer. The entry page shows it."""
+
+ source: Optional[BlockedCustomerSource]
+ """Screen the merchant blocked from.
+
+ Ignored for an API-key caller, whose entry always records `api`. A dashboard
+ caller that omits it records `blocklist_page`.
+ """
+
+
+CustomerCreateParams: TypeAlias = Union[BlocklistCustomersBlockByCustomerID, BlocklistCustomersBlockByEmail]
diff --git a/src/dodopayments/types/blocklist/customer_list_params.py b/src/dodopayments/types/blocklist/customer_list_params.py
new file mode 100644
index 0000000..a851f37
--- /dev/null
+++ b/src/dodopayments/types/blocklist/customer_list_params.py
@@ -0,0 +1,31 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+from typing import Union, Optional
+from datetime import datetime
+from typing_extensions import Annotated, TypedDict
+
+from ..._utils import PropertyInfo
+
+__all__ = ["CustomerListParams"]
+
+
+class CustomerListParams(TypedDict, total=False):
+ blocked_by_email: Optional[str]
+ """Filter by the dashboard user who blocked the customer."""
+
+ created_at_gte: Annotated[Union[str, datetime, None], PropertyInfo(format="iso8601")]
+ """Blocked on or after this time."""
+
+ created_at_lte: Annotated[Union[str, datetime, None], PropertyInfo(format="iso8601")]
+ """Blocked on or before this time."""
+
+ identifier: Optional[str]
+ """Partial, case-insensitive match on the email and on the customer id."""
+
+ page_number: Optional[int]
+ """Page number. Default 0."""
+
+ page_size: Optional[int]
+ """Page size. Default 10, maximum 100."""
diff --git a/src/dodopayments/types/blocklist/customers/__init__.py b/src/dodopayments/types/blocklist/customers/__init__.py
new file mode 100644
index 0000000..0d23c9f
--- /dev/null
+++ b/src/dodopayments/types/blocklist/customers/__init__.py
@@ -0,0 +1,7 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+from .note_create_params import NoteCreateParams as NoteCreateParams
+from .note_update_params import NoteUpdateParams as NoteUpdateParams
+from .blocked_customer_note import BlockedCustomerNote as BlockedCustomerNote
diff --git a/src/dodopayments/types/blocklist/customers/blocked_customer_note.py b/src/dodopayments/types/blocklist/customers/blocked_customer_note.py
new file mode 100644
index 0000000..3e66a69
--- /dev/null
+++ b/src/dodopayments/types/blocklist/customers/blocked_customer_note.py
@@ -0,0 +1,20 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from typing import Optional
+from datetime import datetime
+
+from ...._models import BaseModel
+
+__all__ = ["BlockedCustomerNote"]
+
+
+class BlockedCustomerNote(BaseModel):
+ id: str
+
+ created_at: datetime
+
+ note: str
+
+ author_email: Optional[str] = None
+
+ updated_at: Optional[datetime] = None
diff --git a/src/dodopayments/types/blocklist/customers/note_create_params.py b/src/dodopayments/types/blocklist/customers/note_create_params.py
new file mode 100644
index 0000000..4af7c17
--- /dev/null
+++ b/src/dodopayments/types/blocklist/customers/note_create_params.py
@@ -0,0 +1,11 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+from typing_extensions import Required, TypedDict
+
+__all__ = ["NoteCreateParams"]
+
+
+class NoteCreateParams(TypedDict, total=False):
+ note: Required[str]
diff --git a/src/dodopayments/types/blocklist/customers/note_update_params.py b/src/dodopayments/types/blocklist/customers/note_update_params.py
new file mode 100644
index 0000000..df3917e
--- /dev/null
+++ b/src/dodopayments/types/blocklist/customers/note_update_params.py
@@ -0,0 +1,13 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+from typing_extensions import Required, TypedDict
+
+__all__ = ["NoteUpdateParams"]
+
+
+class NoteUpdateParams(TypedDict, total=False):
+ entry_id: Required[str]
+
+ note: Required[str]
diff --git a/src/dodopayments/types/customer.py b/src/dodopayments/types/customer.py
index e5b9d83..dc5eac3 100644
--- a/src/dodopayments/types/customer.py
+++ b/src/dodopayments/types/customer.py
@@ -20,6 +20,16 @@ class Customer(BaseModel):
name: str
+ blocked_at: Optional[datetime] = None
+ """When the merchant blocked this customer.
+
+ The dashboard shows the "Blocked" badge and the unblock action from it. The list
+ route leaves it empty; only the single-customer route resolves it.
+ """
+
+ blocklist_entry_id: Optional[str] = None
+ """Blocklist entry behind `blocked_at`, so the dashboard can link to it."""
+
metadata: Optional[Metadata] = None
"""Additional metadata for the customer"""
diff --git a/src/dodopayments/types/dunning_recovered_webhook_event.py b/src/dodopayments/types/dunning_recovered_webhook_event.py
index 2626ec6..d2d7f2e 100644
--- a/src/dodopayments/types/dunning_recovered_webhook_event.py
+++ b/src/dodopayments/types/dunning_recovered_webhook_event.py
@@ -23,7 +23,7 @@ class Data(BaseModel):
subscription_id: str
- trigger_state: Literal["on_hold", "cancelled"]
+ trigger_state: Literal["on_hold", "cancelled", "past_due"]
payment_id: Optional[str] = None
diff --git a/src/dodopayments/types/dunning_recovered_webhook_event1.py b/src/dodopayments/types/dunning_recovered_webhook_event1.py
index 2626ec6..d2d7f2e 100644
--- a/src/dodopayments/types/dunning_recovered_webhook_event1.py
+++ b/src/dodopayments/types/dunning_recovered_webhook_event1.py
@@ -23,7 +23,7 @@ class Data(BaseModel):
subscription_id: str
- trigger_state: Literal["on_hold", "cancelled"]
+ trigger_state: Literal["on_hold", "cancelled", "past_due"]
payment_id: Optional[str] = None
diff --git a/src/dodopayments/types/dunning_started_webhook_event.py b/src/dodopayments/types/dunning_started_webhook_event.py
index 177b7f6..2a37654 100644
--- a/src/dodopayments/types/dunning_started_webhook_event.py
+++ b/src/dodopayments/types/dunning_started_webhook_event.py
@@ -23,7 +23,7 @@ class Data(BaseModel):
subscription_id: str
- trigger_state: Literal["on_hold", "cancelled"]
+ trigger_state: Literal["on_hold", "cancelled", "past_due"]
payment_id: Optional[str] = None
diff --git a/src/dodopayments/types/dunning_started_webhook_event1.py b/src/dodopayments/types/dunning_started_webhook_event1.py
index 177b7f6..2a37654 100644
--- a/src/dodopayments/types/dunning_started_webhook_event1.py
+++ b/src/dodopayments/types/dunning_started_webhook_event1.py
@@ -23,7 +23,7 @@ class Data(BaseModel):
subscription_id: str
- trigger_state: Literal["on_hold", "cancelled"]
+ trigger_state: Literal["on_hold", "cancelled", "past_due"]
payment_id: Optional[str] = None
diff --git a/src/dodopayments/types/manual_retry.py b/src/dodopayments/types/manual_retry.py
new file mode 100644
index 0000000..d698aeb
--- /dev/null
+++ b/src/dodopayments/types/manual_retry.py
@@ -0,0 +1,38 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from typing import Optional
+from datetime import datetime
+
+from .._models import BaseModel
+from .intent_status import IntentStatus
+
+__all__ = ["ManualRetry"]
+
+
+class ManualRetry(BaseModel):
+ invoice_id: str
+ """The invoice the send charged."""
+
+ is_manual_retry: bool
+ """Always true on this route. Tells the row apart from an automatic attempt."""
+
+ payment_id: str
+ """The payment row this send created."""
+
+ retry_attempt: int
+ """Which attempt this send is, counting manual sends on the invoice."""
+
+ sends_allowed: int
+
+ sends_used: int
+ """Manual sends spent on this invoice, including this one."""
+
+ retry_available_at: Optional[datetime] = None
+ """When the next send becomes available. Null when no send is left."""
+
+ status: Optional[IntentStatus] = None
+ """Outcome of the charge.
+
+ `processing` means the processor has not settled it yet, and the payment
+ webhooks report the result.
+ """
diff --git a/src/dodopayments/types/manual_retry_state.py b/src/dodopayments/types/manual_retry_state.py
new file mode 100644
index 0000000..c2c945f
--- /dev/null
+++ b/src/dodopayments/types/manual_retry_state.py
@@ -0,0 +1,26 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from typing import Optional
+from datetime import datetime
+
+from .._models import BaseModel
+
+__all__ = ["ManualRetryState"]
+
+
+class ManualRetryState(BaseModel):
+ can_retry: bool
+
+ sends_allowed: int
+
+ sends_used: int
+
+ reason: Optional[str] = None
+ """The code `POST` would fail with. Null when `can_retry` is true."""
+
+ retry_available_at: Optional[datetime] = None
+ """When the next send becomes available.
+
+ Null when no send is left, or when the block has nothing to do with the
+ cooldown.
+ """
diff --git a/src/dodopayments/types/subscription_active_webhook_event.py b/src/dodopayments/types/subscription_active_webhook_event.py
index 5007c36..5720b4b 100644
--- a/src/dodopayments/types/subscription_active_webhook_event.py
+++ b/src/dodopayments/types/subscription_active_webhook_event.py
@@ -1,20 +1,44 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+from typing import Optional
from datetime import datetime
from typing_extensions import Literal
from .._models import BaseModel
from .subscription import Subscription
-__all__ = ["SubscriptionActiveWebhookEvent"]
+__all__ = ["SubscriptionActiveWebhookEvent", "Data"]
+
+
+class Data(Subscription):
+ """Subscription payload sent on a webhook.
+
+ It carries every field of
+ `SubscriptionResponse`, plus the grace-period deadline.
+ """
+
+ past_due_ends_at: Optional[datetime] = None
+ """Time when the grace period ends.
+
+ The subscription moves to `on_hold` or to `cancelled` at this time.
+
+ Read in the same query as the rest of the payload, so it always comes from the
+ row snapshot that produced `status`. It is set whenever the subscription sits in
+ a window at that moment. A delayed event of another type therefore carries the
+ deadline too, next to a `past_due` status.
+ """
class SubscriptionActiveWebhookEvent(BaseModel):
business_id: str
"""The business identifier"""
- data: Subscription
- """Response struct representing subscription details"""
+ data: Data
+ """Subscription payload sent on a webhook.
+
+ It carries every field of `SubscriptionResponse`, plus the grace-period
+ deadline.
+ """
timestamp: datetime
"""The timestamp of when the event occurred"""
diff --git a/src/dodopayments/types/subscription_active_webhook_event1.py b/src/dodopayments/types/subscription_active_webhook_event1.py
index 5007c36..5720b4b 100644
--- a/src/dodopayments/types/subscription_active_webhook_event1.py
+++ b/src/dodopayments/types/subscription_active_webhook_event1.py
@@ -1,20 +1,44 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+from typing import Optional
from datetime import datetime
from typing_extensions import Literal
from .._models import BaseModel
from .subscription import Subscription
-__all__ = ["SubscriptionActiveWebhookEvent"]
+__all__ = ["SubscriptionActiveWebhookEvent", "Data"]
+
+
+class Data(Subscription):
+ """Subscription payload sent on a webhook.
+
+ It carries every field of
+ `SubscriptionResponse`, plus the grace-period deadline.
+ """
+
+ past_due_ends_at: Optional[datetime] = None
+ """Time when the grace period ends.
+
+ The subscription moves to `on_hold` or to `cancelled` at this time.
+
+ Read in the same query as the rest of the payload, so it always comes from the
+ row snapshot that produced `status`. It is set whenever the subscription sits in
+ a window at that moment. A delayed event of another type therefore carries the
+ deadline too, next to a `past_due` status.
+ """
class SubscriptionActiveWebhookEvent(BaseModel):
business_id: str
"""The business identifier"""
- data: Subscription
- """Response struct representing subscription details"""
+ data: Data
+ """Subscription payload sent on a webhook.
+
+ It carries every field of `SubscriptionResponse`, plus the grace-period
+ deadline.
+ """
timestamp: datetime
"""The timestamp of when the event occurred"""
diff --git a/src/dodopayments/types/subscription_cancelled_webhook_event.py b/src/dodopayments/types/subscription_cancelled_webhook_event.py
index 31f6fe2..989f271 100644
--- a/src/dodopayments/types/subscription_cancelled_webhook_event.py
+++ b/src/dodopayments/types/subscription_cancelled_webhook_event.py
@@ -1,20 +1,44 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+from typing import Optional
from datetime import datetime
from typing_extensions import Literal
from .._models import BaseModel
from .subscription import Subscription
-__all__ = ["SubscriptionCancelledWebhookEvent"]
+__all__ = ["SubscriptionCancelledWebhookEvent", "Data"]
+
+
+class Data(Subscription):
+ """Subscription payload sent on a webhook.
+
+ It carries every field of
+ `SubscriptionResponse`, plus the grace-period deadline.
+ """
+
+ past_due_ends_at: Optional[datetime] = None
+ """Time when the grace period ends.
+
+ The subscription moves to `on_hold` or to `cancelled` at this time.
+
+ Read in the same query as the rest of the payload, so it always comes from the
+ row snapshot that produced `status`. It is set whenever the subscription sits in
+ a window at that moment. A delayed event of another type therefore carries the
+ deadline too, next to a `past_due` status.
+ """
class SubscriptionCancelledWebhookEvent(BaseModel):
business_id: str
"""The business identifier"""
- data: Subscription
- """Response struct representing subscription details"""
+ data: Data
+ """Subscription payload sent on a webhook.
+
+ It carries every field of `SubscriptionResponse`, plus the grace-period
+ deadline.
+ """
timestamp: datetime
"""The timestamp of when the event occurred"""
diff --git a/src/dodopayments/types/subscription_cancelled_webhook_event1.py b/src/dodopayments/types/subscription_cancelled_webhook_event1.py
index 31f6fe2..989f271 100644
--- a/src/dodopayments/types/subscription_cancelled_webhook_event1.py
+++ b/src/dodopayments/types/subscription_cancelled_webhook_event1.py
@@ -1,20 +1,44 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+from typing import Optional
from datetime import datetime
from typing_extensions import Literal
from .._models import BaseModel
from .subscription import Subscription
-__all__ = ["SubscriptionCancelledWebhookEvent"]
+__all__ = ["SubscriptionCancelledWebhookEvent", "Data"]
+
+
+class Data(Subscription):
+ """Subscription payload sent on a webhook.
+
+ It carries every field of
+ `SubscriptionResponse`, plus the grace-period deadline.
+ """
+
+ past_due_ends_at: Optional[datetime] = None
+ """Time when the grace period ends.
+
+ The subscription moves to `on_hold` or to `cancelled` at this time.
+
+ Read in the same query as the rest of the payload, so it always comes from the
+ row snapshot that produced `status`. It is set whenever the subscription sits in
+ a window at that moment. A delayed event of another type therefore carries the
+ deadline too, next to a `past_due` status.
+ """
class SubscriptionCancelledWebhookEvent(BaseModel):
business_id: str
"""The business identifier"""
- data: Subscription
- """Response struct representing subscription details"""
+ data: Data
+ """Subscription payload sent on a webhook.
+
+ It carries every field of `SubscriptionResponse`, plus the grace-period
+ deadline.
+ """
timestamp: datetime
"""The timestamp of when the event occurred"""
diff --git a/src/dodopayments/types/subscription_expired_webhook_event.py b/src/dodopayments/types/subscription_expired_webhook_event.py
index f02c400..b1df404 100644
--- a/src/dodopayments/types/subscription_expired_webhook_event.py
+++ b/src/dodopayments/types/subscription_expired_webhook_event.py
@@ -1,20 +1,44 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+from typing import Optional
from datetime import datetime
from typing_extensions import Literal
from .._models import BaseModel
from .subscription import Subscription
-__all__ = ["SubscriptionExpiredWebhookEvent"]
+__all__ = ["SubscriptionExpiredWebhookEvent", "Data"]
+
+
+class Data(Subscription):
+ """Subscription payload sent on a webhook.
+
+ It carries every field of
+ `SubscriptionResponse`, plus the grace-period deadline.
+ """
+
+ past_due_ends_at: Optional[datetime] = None
+ """Time when the grace period ends.
+
+ The subscription moves to `on_hold` or to `cancelled` at this time.
+
+ Read in the same query as the rest of the payload, so it always comes from the
+ row snapshot that produced `status`. It is set whenever the subscription sits in
+ a window at that moment. A delayed event of another type therefore carries the
+ deadline too, next to a `past_due` status.
+ """
class SubscriptionExpiredWebhookEvent(BaseModel):
business_id: str
"""The business identifier"""
- data: Subscription
- """Response struct representing subscription details"""
+ data: Data
+ """Subscription payload sent on a webhook.
+
+ It carries every field of `SubscriptionResponse`, plus the grace-period
+ deadline.
+ """
timestamp: datetime
"""The timestamp of when the event occurred"""
diff --git a/src/dodopayments/types/subscription_expired_webhook_event1.py b/src/dodopayments/types/subscription_expired_webhook_event1.py
index f02c400..b1df404 100644
--- a/src/dodopayments/types/subscription_expired_webhook_event1.py
+++ b/src/dodopayments/types/subscription_expired_webhook_event1.py
@@ -1,20 +1,44 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+from typing import Optional
from datetime import datetime
from typing_extensions import Literal
from .._models import BaseModel
from .subscription import Subscription
-__all__ = ["SubscriptionExpiredWebhookEvent"]
+__all__ = ["SubscriptionExpiredWebhookEvent", "Data"]
+
+
+class Data(Subscription):
+ """Subscription payload sent on a webhook.
+
+ It carries every field of
+ `SubscriptionResponse`, plus the grace-period deadline.
+ """
+
+ past_due_ends_at: Optional[datetime] = None
+ """Time when the grace period ends.
+
+ The subscription moves to `on_hold` or to `cancelled` at this time.
+
+ Read in the same query as the rest of the payload, so it always comes from the
+ row snapshot that produced `status`. It is set whenever the subscription sits in
+ a window at that moment. A delayed event of another type therefore carries the
+ deadline too, next to a `past_due` status.
+ """
class SubscriptionExpiredWebhookEvent(BaseModel):
business_id: str
"""The business identifier"""
- data: Subscription
- """Response struct representing subscription details"""
+ data: Data
+ """Subscription payload sent on a webhook.
+
+ It carries every field of `SubscriptionResponse`, plus the grace-period
+ deadline.
+ """
timestamp: datetime
"""The timestamp of when the event occurred"""
diff --git a/src/dodopayments/types/subscription_failed_webhook_event.py b/src/dodopayments/types/subscription_failed_webhook_event.py
index 0a4e0ea..a62694a 100644
--- a/src/dodopayments/types/subscription_failed_webhook_event.py
+++ b/src/dodopayments/types/subscription_failed_webhook_event.py
@@ -1,20 +1,44 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+from typing import Optional
from datetime import datetime
from typing_extensions import Literal
from .._models import BaseModel
from .subscription import Subscription
-__all__ = ["SubscriptionFailedWebhookEvent"]
+__all__ = ["SubscriptionFailedWebhookEvent", "Data"]
+
+
+class Data(Subscription):
+ """Subscription payload sent on a webhook.
+
+ It carries every field of
+ `SubscriptionResponse`, plus the grace-period deadline.
+ """
+
+ past_due_ends_at: Optional[datetime] = None
+ """Time when the grace period ends.
+
+ The subscription moves to `on_hold` or to `cancelled` at this time.
+
+ Read in the same query as the rest of the payload, so it always comes from the
+ row snapshot that produced `status`. It is set whenever the subscription sits in
+ a window at that moment. A delayed event of another type therefore carries the
+ deadline too, next to a `past_due` status.
+ """
class SubscriptionFailedWebhookEvent(BaseModel):
business_id: str
"""The business identifier"""
- data: Subscription
- """Response struct representing subscription details"""
+ data: Data
+ """Subscription payload sent on a webhook.
+
+ It carries every field of `SubscriptionResponse`, plus the grace-period
+ deadline.
+ """
timestamp: datetime
"""The timestamp of when the event occurred"""
diff --git a/src/dodopayments/types/subscription_failed_webhook_event1.py b/src/dodopayments/types/subscription_failed_webhook_event1.py
index 0a4e0ea..a62694a 100644
--- a/src/dodopayments/types/subscription_failed_webhook_event1.py
+++ b/src/dodopayments/types/subscription_failed_webhook_event1.py
@@ -1,20 +1,44 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+from typing import Optional
from datetime import datetime
from typing_extensions import Literal
from .._models import BaseModel
from .subscription import Subscription
-__all__ = ["SubscriptionFailedWebhookEvent"]
+__all__ = ["SubscriptionFailedWebhookEvent", "Data"]
+
+
+class Data(Subscription):
+ """Subscription payload sent on a webhook.
+
+ It carries every field of
+ `SubscriptionResponse`, plus the grace-period deadline.
+ """
+
+ past_due_ends_at: Optional[datetime] = None
+ """Time when the grace period ends.
+
+ The subscription moves to `on_hold` or to `cancelled` at this time.
+
+ Read in the same query as the rest of the payload, so it always comes from the
+ row snapshot that produced `status`. It is set whenever the subscription sits in
+ a window at that moment. A delayed event of another type therefore carries the
+ deadline too, next to a `past_due` status.
+ """
class SubscriptionFailedWebhookEvent(BaseModel):
business_id: str
"""The business identifier"""
- data: Subscription
- """Response struct representing subscription details"""
+ data: Data
+ """Subscription payload sent on a webhook.
+
+ It carries every field of `SubscriptionResponse`, plus the grace-period
+ deadline.
+ """
timestamp: datetime
"""The timestamp of when the event occurred"""
diff --git a/src/dodopayments/types/subscription_list_params.py b/src/dodopayments/types/subscription_list_params.py
index 9e238c0..704e5eb 100644
--- a/src/dodopayments/types/subscription_list_params.py
+++ b/src/dodopayments/types/subscription_list_params.py
@@ -38,5 +38,5 @@ class SubscriptionListParams(TypedDict, total=False):
product_id: str
"""Filter by product id"""
- status: Literal["pending", "active", "on_hold", "paused", "cancelled", "failed", "expired"]
+ status: Literal["pending", "active", "on_hold", "paused", "cancelled", "failed", "expired", "past_due"]
"""Filter by status"""
diff --git a/src/dodopayments/types/subscription_on_hold_webhook_event.py b/src/dodopayments/types/subscription_on_hold_webhook_event.py
index 7201ef8..d40a783 100644
--- a/src/dodopayments/types/subscription_on_hold_webhook_event.py
+++ b/src/dodopayments/types/subscription_on_hold_webhook_event.py
@@ -1,20 +1,44 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+from typing import Optional
from datetime import datetime
from typing_extensions import Literal
from .._models import BaseModel
from .subscription import Subscription
-__all__ = ["SubscriptionOnHoldWebhookEvent"]
+__all__ = ["SubscriptionOnHoldWebhookEvent", "Data"]
+
+
+class Data(Subscription):
+ """Subscription payload sent on a webhook.
+
+ It carries every field of
+ `SubscriptionResponse`, plus the grace-period deadline.
+ """
+
+ past_due_ends_at: Optional[datetime] = None
+ """Time when the grace period ends.
+
+ The subscription moves to `on_hold` or to `cancelled` at this time.
+
+ Read in the same query as the rest of the payload, so it always comes from the
+ row snapshot that produced `status`. It is set whenever the subscription sits in
+ a window at that moment. A delayed event of another type therefore carries the
+ deadline too, next to a `past_due` status.
+ """
class SubscriptionOnHoldWebhookEvent(BaseModel):
business_id: str
"""The business identifier"""
- data: Subscription
- """Response struct representing subscription details"""
+ data: Data
+ """Subscription payload sent on a webhook.
+
+ It carries every field of `SubscriptionResponse`, plus the grace-period
+ deadline.
+ """
timestamp: datetime
"""The timestamp of when the event occurred"""
diff --git a/src/dodopayments/types/subscription_on_hold_webhook_event1.py b/src/dodopayments/types/subscription_on_hold_webhook_event1.py
index 7201ef8..d40a783 100644
--- a/src/dodopayments/types/subscription_on_hold_webhook_event1.py
+++ b/src/dodopayments/types/subscription_on_hold_webhook_event1.py
@@ -1,20 +1,44 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+from typing import Optional
from datetime import datetime
from typing_extensions import Literal
from .._models import BaseModel
from .subscription import Subscription
-__all__ = ["SubscriptionOnHoldWebhookEvent"]
+__all__ = ["SubscriptionOnHoldWebhookEvent", "Data"]
+
+
+class Data(Subscription):
+ """Subscription payload sent on a webhook.
+
+ It carries every field of
+ `SubscriptionResponse`, plus the grace-period deadline.
+ """
+
+ past_due_ends_at: Optional[datetime] = None
+ """Time when the grace period ends.
+
+ The subscription moves to `on_hold` or to `cancelled` at this time.
+
+ Read in the same query as the rest of the payload, so it always comes from the
+ row snapshot that produced `status`. It is set whenever the subscription sits in
+ a window at that moment. A delayed event of another type therefore carries the
+ deadline too, next to a `past_due` status.
+ """
class SubscriptionOnHoldWebhookEvent(BaseModel):
business_id: str
"""The business identifier"""
- data: Subscription
- """Response struct representing subscription details"""
+ data: Data
+ """Subscription payload sent on a webhook.
+
+ It carries every field of `SubscriptionResponse`, plus the grace-period
+ deadline.
+ """
timestamp: datetime
"""The timestamp of when the event occurred"""
diff --git a/src/dodopayments/types/subscription_past_due_webhook_event.py b/src/dodopayments/types/subscription_past_due_webhook_event.py
new file mode 100644
index 0000000..88ff8a4
--- /dev/null
+++ b/src/dodopayments/types/subscription_past_due_webhook_event.py
@@ -0,0 +1,47 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from typing import Optional
+from datetime import datetime
+from typing_extensions import Literal
+
+from .._models import BaseModel
+from .subscription import Subscription
+
+__all__ = ["SubscriptionPastDueWebhookEvent", "Data"]
+
+
+class Data(Subscription):
+ """Subscription payload sent on a webhook.
+
+ It carries every field of
+ `SubscriptionResponse`, plus the grace-period deadline.
+ """
+
+ past_due_ends_at: Optional[datetime] = None
+ """Time when the grace period ends.
+
+ The subscription moves to `on_hold` or to `cancelled` at this time.
+
+ Read in the same query as the rest of the payload, so it always comes from the
+ row snapshot that produced `status`. It is set whenever the subscription sits in
+ a window at that moment. A delayed event of another type therefore carries the
+ deadline too, next to a `past_due` status.
+ """
+
+
+class SubscriptionPastDueWebhookEvent(BaseModel):
+ business_id: str
+ """The business identifier"""
+
+ data: Data
+ """Subscription payload sent on a webhook.
+
+ It carries every field of `SubscriptionResponse`, plus the grace-period
+ deadline.
+ """
+
+ timestamp: datetime
+ """The timestamp of when the event occurred"""
+
+ type: Literal["subscription.past_due"]
+ """The event type"""
diff --git a/src/dodopayments/types/subscription_past_due_webhook_event1.py b/src/dodopayments/types/subscription_past_due_webhook_event1.py
new file mode 100644
index 0000000..88ff8a4
--- /dev/null
+++ b/src/dodopayments/types/subscription_past_due_webhook_event1.py
@@ -0,0 +1,47 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from typing import Optional
+from datetime import datetime
+from typing_extensions import Literal
+
+from .._models import BaseModel
+from .subscription import Subscription
+
+__all__ = ["SubscriptionPastDueWebhookEvent", "Data"]
+
+
+class Data(Subscription):
+ """Subscription payload sent on a webhook.
+
+ It carries every field of
+ `SubscriptionResponse`, plus the grace-period deadline.
+ """
+
+ past_due_ends_at: Optional[datetime] = None
+ """Time when the grace period ends.
+
+ The subscription moves to `on_hold` or to `cancelled` at this time.
+
+ Read in the same query as the rest of the payload, so it always comes from the
+ row snapshot that produced `status`. It is set whenever the subscription sits in
+ a window at that moment. A delayed event of another type therefore carries the
+ deadline too, next to a `past_due` status.
+ """
+
+
+class SubscriptionPastDueWebhookEvent(BaseModel):
+ business_id: str
+ """The business identifier"""
+
+ data: Data
+ """Subscription payload sent on a webhook.
+
+ It carries every field of `SubscriptionResponse`, plus the grace-period
+ deadline.
+ """
+
+ timestamp: datetime
+ """The timestamp of when the event occurred"""
+
+ type: Literal["subscription.past_due"]
+ """The event type"""
diff --git a/src/dodopayments/types/subscription_paused_webhook_event.py b/src/dodopayments/types/subscription_paused_webhook_event.py
index 8083ffd..ac4b591 100644
--- a/src/dodopayments/types/subscription_paused_webhook_event.py
+++ b/src/dodopayments/types/subscription_paused_webhook_event.py
@@ -1,20 +1,44 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+from typing import Optional
from datetime import datetime
from typing_extensions import Literal
from .._models import BaseModel
from .subscription import Subscription
-__all__ = ["SubscriptionPausedWebhookEvent"]
+__all__ = ["SubscriptionPausedWebhookEvent", "Data"]
+
+
+class Data(Subscription):
+ """Subscription payload sent on a webhook.
+
+ It carries every field of
+ `SubscriptionResponse`, plus the grace-period deadline.
+ """
+
+ past_due_ends_at: Optional[datetime] = None
+ """Time when the grace period ends.
+
+ The subscription moves to `on_hold` or to `cancelled` at this time.
+
+ Read in the same query as the rest of the payload, so it always comes from the
+ row snapshot that produced `status`. It is set whenever the subscription sits in
+ a window at that moment. A delayed event of another type therefore carries the
+ deadline too, next to a `past_due` status.
+ """
class SubscriptionPausedWebhookEvent(BaseModel):
business_id: str
"""The business identifier"""
- data: Subscription
- """Response struct representing subscription details"""
+ data: Data
+ """Subscription payload sent on a webhook.
+
+ It carries every field of `SubscriptionResponse`, plus the grace-period
+ deadline.
+ """
timestamp: datetime
"""The timestamp of when the event occurred"""
diff --git a/src/dodopayments/types/subscription_paused_webhook_event1.py b/src/dodopayments/types/subscription_paused_webhook_event1.py
index 8083ffd..ac4b591 100644
--- a/src/dodopayments/types/subscription_paused_webhook_event1.py
+++ b/src/dodopayments/types/subscription_paused_webhook_event1.py
@@ -1,20 +1,44 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+from typing import Optional
from datetime import datetime
from typing_extensions import Literal
from .._models import BaseModel
from .subscription import Subscription
-__all__ = ["SubscriptionPausedWebhookEvent"]
+__all__ = ["SubscriptionPausedWebhookEvent", "Data"]
+
+
+class Data(Subscription):
+ """Subscription payload sent on a webhook.
+
+ It carries every field of
+ `SubscriptionResponse`, plus the grace-period deadline.
+ """
+
+ past_due_ends_at: Optional[datetime] = None
+ """Time when the grace period ends.
+
+ The subscription moves to `on_hold` or to `cancelled` at this time.
+
+ Read in the same query as the rest of the payload, so it always comes from the
+ row snapshot that produced `status`. It is set whenever the subscription sits in
+ a window at that moment. A delayed event of another type therefore carries the
+ deadline too, next to a `past_due` status.
+ """
class SubscriptionPausedWebhookEvent(BaseModel):
business_id: str
"""The business identifier"""
- data: Subscription
- """Response struct representing subscription details"""
+ data: Data
+ """Subscription payload sent on a webhook.
+
+ It carries every field of `SubscriptionResponse`, plus the grace-period
+ deadline.
+ """
timestamp: datetime
"""The timestamp of when the event occurred"""
diff --git a/src/dodopayments/types/subscription_plan_changed_webhook_event.py b/src/dodopayments/types/subscription_plan_changed_webhook_event.py
index 75e5889..784af62 100644
--- a/src/dodopayments/types/subscription_plan_changed_webhook_event.py
+++ b/src/dodopayments/types/subscription_plan_changed_webhook_event.py
@@ -1,20 +1,44 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+from typing import Optional
from datetime import datetime
from typing_extensions import Literal
from .._models import BaseModel
from .subscription import Subscription
-__all__ = ["SubscriptionPlanChangedWebhookEvent"]
+__all__ = ["SubscriptionPlanChangedWebhookEvent", "Data"]
+
+
+class Data(Subscription):
+ """Subscription payload sent on a webhook.
+
+ It carries every field of
+ `SubscriptionResponse`, plus the grace-period deadline.
+ """
+
+ past_due_ends_at: Optional[datetime] = None
+ """Time when the grace period ends.
+
+ The subscription moves to `on_hold` or to `cancelled` at this time.
+
+ Read in the same query as the rest of the payload, so it always comes from the
+ row snapshot that produced `status`. It is set whenever the subscription sits in
+ a window at that moment. A delayed event of another type therefore carries the
+ deadline too, next to a `past_due` status.
+ """
class SubscriptionPlanChangedWebhookEvent(BaseModel):
business_id: str
"""The business identifier"""
- data: Subscription
- """Response struct representing subscription details"""
+ data: Data
+ """Subscription payload sent on a webhook.
+
+ It carries every field of `SubscriptionResponse`, plus the grace-period
+ deadline.
+ """
timestamp: datetime
"""The timestamp of when the event occurred"""
diff --git a/src/dodopayments/types/subscription_plan_changed_webhook_event1.py b/src/dodopayments/types/subscription_plan_changed_webhook_event1.py
index 75e5889..784af62 100644
--- a/src/dodopayments/types/subscription_plan_changed_webhook_event1.py
+++ b/src/dodopayments/types/subscription_plan_changed_webhook_event1.py
@@ -1,20 +1,44 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+from typing import Optional
from datetime import datetime
from typing_extensions import Literal
from .._models import BaseModel
from .subscription import Subscription
-__all__ = ["SubscriptionPlanChangedWebhookEvent"]
+__all__ = ["SubscriptionPlanChangedWebhookEvent", "Data"]
+
+
+class Data(Subscription):
+ """Subscription payload sent on a webhook.
+
+ It carries every field of
+ `SubscriptionResponse`, plus the grace-period deadline.
+ """
+
+ past_due_ends_at: Optional[datetime] = None
+ """Time when the grace period ends.
+
+ The subscription moves to `on_hold` or to `cancelled` at this time.
+
+ Read in the same query as the rest of the payload, so it always comes from the
+ row snapshot that produced `status`. It is set whenever the subscription sits in
+ a window at that moment. A delayed event of another type therefore carries the
+ deadline too, next to a `past_due` status.
+ """
class SubscriptionPlanChangedWebhookEvent(BaseModel):
business_id: str
"""The business identifier"""
- data: Subscription
- """Response struct representing subscription details"""
+ data: Data
+ """Subscription payload sent on a webhook.
+
+ It carries every field of `SubscriptionResponse`, plus the grace-period
+ deadline.
+ """
timestamp: datetime
"""The timestamp of when the event occurred"""
diff --git a/src/dodopayments/types/subscription_renewed_webhook_event.py b/src/dodopayments/types/subscription_renewed_webhook_event.py
index d39b331..beffbf9 100644
--- a/src/dodopayments/types/subscription_renewed_webhook_event.py
+++ b/src/dodopayments/types/subscription_renewed_webhook_event.py
@@ -1,20 +1,44 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+from typing import Optional
from datetime import datetime
from typing_extensions import Literal
from .._models import BaseModel
from .subscription import Subscription
-__all__ = ["SubscriptionRenewedWebhookEvent"]
+__all__ = ["SubscriptionRenewedWebhookEvent", "Data"]
+
+
+class Data(Subscription):
+ """Subscription payload sent on a webhook.
+
+ It carries every field of
+ `SubscriptionResponse`, plus the grace-period deadline.
+ """
+
+ past_due_ends_at: Optional[datetime] = None
+ """Time when the grace period ends.
+
+ The subscription moves to `on_hold` or to `cancelled` at this time.
+
+ Read in the same query as the rest of the payload, so it always comes from the
+ row snapshot that produced `status`. It is set whenever the subscription sits in
+ a window at that moment. A delayed event of another type therefore carries the
+ deadline too, next to a `past_due` status.
+ """
class SubscriptionRenewedWebhookEvent(BaseModel):
business_id: str
"""The business identifier"""
- data: Subscription
- """Response struct representing subscription details"""
+ data: Data
+ """Subscription payload sent on a webhook.
+
+ It carries every field of `SubscriptionResponse`, plus the grace-period
+ deadline.
+ """
timestamp: datetime
"""The timestamp of when the event occurred"""
diff --git a/src/dodopayments/types/subscription_renewed_webhook_event1.py b/src/dodopayments/types/subscription_renewed_webhook_event1.py
index d39b331..beffbf9 100644
--- a/src/dodopayments/types/subscription_renewed_webhook_event1.py
+++ b/src/dodopayments/types/subscription_renewed_webhook_event1.py
@@ -1,20 +1,44 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+from typing import Optional
from datetime import datetime
from typing_extensions import Literal
from .._models import BaseModel
from .subscription import Subscription
-__all__ = ["SubscriptionRenewedWebhookEvent"]
+__all__ = ["SubscriptionRenewedWebhookEvent", "Data"]
+
+
+class Data(Subscription):
+ """Subscription payload sent on a webhook.
+
+ It carries every field of
+ `SubscriptionResponse`, plus the grace-period deadline.
+ """
+
+ past_due_ends_at: Optional[datetime] = None
+ """Time when the grace period ends.
+
+ The subscription moves to `on_hold` or to `cancelled` at this time.
+
+ Read in the same query as the rest of the payload, so it always comes from the
+ row snapshot that produced `status`. It is set whenever the subscription sits in
+ a window at that moment. A delayed event of another type therefore carries the
+ deadline too, next to a `past_due` status.
+ """
class SubscriptionRenewedWebhookEvent(BaseModel):
business_id: str
"""The business identifier"""
- data: Subscription
- """Response struct representing subscription details"""
+ data: Data
+ """Subscription payload sent on a webhook.
+
+ It carries every field of `SubscriptionResponse`, plus the grace-period
+ deadline.
+ """
timestamp: datetime
"""The timestamp of when the event occurred"""
diff --git a/src/dodopayments/types/subscription_status.py b/src/dodopayments/types/subscription_status.py
index 553be24..a3db55c 100644
--- a/src/dodopayments/types/subscription_status.py
+++ b/src/dodopayments/types/subscription_status.py
@@ -4,4 +4,6 @@
__all__ = ["SubscriptionStatus"]
-SubscriptionStatus: TypeAlias = Literal["pending", "active", "on_hold", "paused", "cancelled", "failed", "expired"]
+SubscriptionStatus: TypeAlias = Literal[
+ "pending", "active", "on_hold", "paused", "cancelled", "failed", "expired", "past_due"
+]
diff --git a/src/dodopayments/types/subscription_unpaused_webhook_event.py b/src/dodopayments/types/subscription_unpaused_webhook_event.py
index 02e6edd..f2bdd96 100644
--- a/src/dodopayments/types/subscription_unpaused_webhook_event.py
+++ b/src/dodopayments/types/subscription_unpaused_webhook_event.py
@@ -1,20 +1,44 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+from typing import Optional
from datetime import datetime
from typing_extensions import Literal
from .._models import BaseModel
from .subscription import Subscription
-__all__ = ["SubscriptionUnpausedWebhookEvent"]
+__all__ = ["SubscriptionUnpausedWebhookEvent", "Data"]
+
+
+class Data(Subscription):
+ """Subscription payload sent on a webhook.
+
+ It carries every field of
+ `SubscriptionResponse`, plus the grace-period deadline.
+ """
+
+ past_due_ends_at: Optional[datetime] = None
+ """Time when the grace period ends.
+
+ The subscription moves to `on_hold` or to `cancelled` at this time.
+
+ Read in the same query as the rest of the payload, so it always comes from the
+ row snapshot that produced `status`. It is set whenever the subscription sits in
+ a window at that moment. A delayed event of another type therefore carries the
+ deadline too, next to a `past_due` status.
+ """
class SubscriptionUnpausedWebhookEvent(BaseModel):
business_id: str
"""The business identifier"""
- data: Subscription
- """Response struct representing subscription details"""
+ data: Data
+ """Subscription payload sent on a webhook.
+
+ It carries every field of `SubscriptionResponse`, plus the grace-period
+ deadline.
+ """
timestamp: datetime
"""The timestamp of when the event occurred"""
diff --git a/src/dodopayments/types/subscription_unpaused_webhook_event1.py b/src/dodopayments/types/subscription_unpaused_webhook_event1.py
index 02e6edd..f2bdd96 100644
--- a/src/dodopayments/types/subscription_unpaused_webhook_event1.py
+++ b/src/dodopayments/types/subscription_unpaused_webhook_event1.py
@@ -1,20 +1,44 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+from typing import Optional
from datetime import datetime
from typing_extensions import Literal
from .._models import BaseModel
from .subscription import Subscription
-__all__ = ["SubscriptionUnpausedWebhookEvent"]
+__all__ = ["SubscriptionUnpausedWebhookEvent", "Data"]
+
+
+class Data(Subscription):
+ """Subscription payload sent on a webhook.
+
+ It carries every field of
+ `SubscriptionResponse`, plus the grace-period deadline.
+ """
+
+ past_due_ends_at: Optional[datetime] = None
+ """Time when the grace period ends.
+
+ The subscription moves to `on_hold` or to `cancelled` at this time.
+
+ Read in the same query as the rest of the payload, so it always comes from the
+ row snapshot that produced `status`. It is set whenever the subscription sits in
+ a window at that moment. A delayed event of another type therefore carries the
+ deadline too, next to a `past_due` status.
+ """
class SubscriptionUnpausedWebhookEvent(BaseModel):
business_id: str
"""The business identifier"""
- data: Subscription
- """Response struct representing subscription details"""
+ data: Data
+ """Subscription payload sent on a webhook.
+
+ It carries every field of `SubscriptionResponse`, plus the grace-period
+ deadline.
+ """
timestamp: datetime
"""The timestamp of when the event occurred"""
diff --git a/src/dodopayments/types/subscription_update_params.py b/src/dodopayments/types/subscription_update_params.py
index 4e64b89..e34bda4 100644
--- a/src/dodopayments/types/subscription_update_params.py
+++ b/src/dodopayments/types/subscription_update_params.py
@@ -23,7 +23,13 @@ class SubscriptionUpdateParams(TypedDict, total=False):
"""When set, the subscription will remain active until the end of billing period"""
cancel_reason: Optional[
- Literal["cancelled_by_customer", "cancelled_by_merchant", "cancelled_by_merchant_send_dunning", "dodo_team"]
+ Literal[
+ "cancelled_by_customer",
+ "cancelled_by_merchant",
+ "cancelled_by_merchant_send_dunning",
+ "cancelled_by_merchant_grace_period_expired",
+ "dodo_team",
+ ]
]
cancellation_comment: Optional[str]
diff --git a/src/dodopayments/types/subscription_update_payment_method_webhook_event.py b/src/dodopayments/types/subscription_update_payment_method_webhook_event.py
index 572b3b9..d045121 100644
--- a/src/dodopayments/types/subscription_update_payment_method_webhook_event.py
+++ b/src/dodopayments/types/subscription_update_payment_method_webhook_event.py
@@ -1,20 +1,44 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+from typing import Optional
from datetime import datetime
from typing_extensions import Literal
from .._models import BaseModel
from .subscription import Subscription
-__all__ = ["SubscriptionUpdatePaymentMethodWebhookEvent"]
+__all__ = ["SubscriptionUpdatePaymentMethodWebhookEvent", "Data"]
+
+
+class Data(Subscription):
+ """Subscription payload sent on a webhook.
+
+ It carries every field of
+ `SubscriptionResponse`, plus the grace-period deadline.
+ """
+
+ past_due_ends_at: Optional[datetime] = None
+ """Time when the grace period ends.
+
+ The subscription moves to `on_hold` or to `cancelled` at this time.
+
+ Read in the same query as the rest of the payload, so it always comes from the
+ row snapshot that produced `status`. It is set whenever the subscription sits in
+ a window at that moment. A delayed event of another type therefore carries the
+ deadline too, next to a `past_due` status.
+ """
class SubscriptionUpdatePaymentMethodWebhookEvent(BaseModel):
business_id: str
"""The business identifier"""
- data: Subscription
- """Response struct representing subscription details"""
+ data: Data
+ """Subscription payload sent on a webhook.
+
+ It carries every field of `SubscriptionResponse`, plus the grace-period
+ deadline.
+ """
timestamp: datetime
"""The timestamp of when the event occurred"""
diff --git a/src/dodopayments/types/subscription_update_payment_method_webhook_event1.py b/src/dodopayments/types/subscription_update_payment_method_webhook_event1.py
index 572b3b9..d045121 100644
--- a/src/dodopayments/types/subscription_update_payment_method_webhook_event1.py
+++ b/src/dodopayments/types/subscription_update_payment_method_webhook_event1.py
@@ -1,20 +1,44 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+from typing import Optional
from datetime import datetime
from typing_extensions import Literal
from .._models import BaseModel
from .subscription import Subscription
-__all__ = ["SubscriptionUpdatePaymentMethodWebhookEvent"]
+__all__ = ["SubscriptionUpdatePaymentMethodWebhookEvent", "Data"]
+
+
+class Data(Subscription):
+ """Subscription payload sent on a webhook.
+
+ It carries every field of
+ `SubscriptionResponse`, plus the grace-period deadline.
+ """
+
+ past_due_ends_at: Optional[datetime] = None
+ """Time when the grace period ends.
+
+ The subscription moves to `on_hold` or to `cancelled` at this time.
+
+ Read in the same query as the rest of the payload, so it always comes from the
+ row snapshot that produced `status`. It is set whenever the subscription sits in
+ a window at that moment. A delayed event of another type therefore carries the
+ deadline too, next to a `past_due` status.
+ """
class SubscriptionUpdatePaymentMethodWebhookEvent(BaseModel):
business_id: str
"""The business identifier"""
- data: Subscription
- """Response struct representing subscription details"""
+ data: Data
+ """Subscription payload sent on a webhook.
+
+ It carries every field of `SubscriptionResponse`, plus the grace-period
+ deadline.
+ """
timestamp: datetime
"""The timestamp of when the event occurred"""
diff --git a/src/dodopayments/types/subscription_updated_webhook_event.py b/src/dodopayments/types/subscription_updated_webhook_event.py
index d09cf76..3393cc9 100644
--- a/src/dodopayments/types/subscription_updated_webhook_event.py
+++ b/src/dodopayments/types/subscription_updated_webhook_event.py
@@ -1,20 +1,44 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+from typing import Optional
from datetime import datetime
from typing_extensions import Literal
from .._models import BaseModel
from .subscription import Subscription
-__all__ = ["SubscriptionUpdatedWebhookEvent"]
+__all__ = ["SubscriptionUpdatedWebhookEvent", "Data"]
+
+
+class Data(Subscription):
+ """Subscription payload sent on a webhook.
+
+ It carries every field of
+ `SubscriptionResponse`, plus the grace-period deadline.
+ """
+
+ past_due_ends_at: Optional[datetime] = None
+ """Time when the grace period ends.
+
+ The subscription moves to `on_hold` or to `cancelled` at this time.
+
+ Read in the same query as the rest of the payload, so it always comes from the
+ row snapshot that produced `status`. It is set whenever the subscription sits in
+ a window at that moment. A delayed event of another type therefore carries the
+ deadline too, next to a `past_due` status.
+ """
class SubscriptionUpdatedWebhookEvent(BaseModel):
business_id: str
"""The business identifier"""
- data: Subscription
- """Response struct representing subscription details"""
+ data: Data
+ """Subscription payload sent on a webhook.
+
+ It carries every field of `SubscriptionResponse`, plus the grace-period
+ deadline.
+ """
timestamp: datetime
"""The timestamp of when the event occurred"""
diff --git a/src/dodopayments/types/subscription_updated_webhook_event1.py b/src/dodopayments/types/subscription_updated_webhook_event1.py
index d09cf76..3393cc9 100644
--- a/src/dodopayments/types/subscription_updated_webhook_event1.py
+++ b/src/dodopayments/types/subscription_updated_webhook_event1.py
@@ -1,20 +1,44 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+from typing import Optional
from datetime import datetime
from typing_extensions import Literal
from .._models import BaseModel
from .subscription import Subscription
-__all__ = ["SubscriptionUpdatedWebhookEvent"]
+__all__ = ["SubscriptionUpdatedWebhookEvent", "Data"]
+
+
+class Data(Subscription):
+ """Subscription payload sent on a webhook.
+
+ It carries every field of
+ `SubscriptionResponse`, plus the grace-period deadline.
+ """
+
+ past_due_ends_at: Optional[datetime] = None
+ """Time when the grace period ends.
+
+ The subscription moves to `on_hold` or to `cancelled` at this time.
+
+ Read in the same query as the rest of the payload, so it always comes from the
+ row snapshot that produced `status`. It is set whenever the subscription sits in
+ a window at that moment. A delayed event of another type therefore carries the
+ deadline too, next to a `past_due` status.
+ """
class SubscriptionUpdatedWebhookEvent(BaseModel):
business_id: str
"""The business identifier"""
- data: Subscription
- """Response struct representing subscription details"""
+ data: Data
+ """Subscription payload sent on a webhook.
+
+ It carries every field of `SubscriptionResponse`, plus the grace-period
+ deadline.
+ """
timestamp: datetime
"""The timestamp of when the event occurred"""
diff --git a/src/dodopayments/types/unsafe_unwrap_webhook_event.py b/src/dodopayments/types/unsafe_unwrap_webhook_event.py
index 76aa3f3..37ec2a3 100644
--- a/src/dodopayments/types/unsafe_unwrap_webhook_event.py
+++ b/src/dodopayments/types/unsafe_unwrap_webhook_event.py
@@ -38,6 +38,7 @@
from .subscription_on_hold_webhook_event import SubscriptionOnHoldWebhookEvent
from .subscription_renewed_webhook_event import SubscriptionRenewedWebhookEvent
from .subscription_updated_webhook_event import SubscriptionUpdatedWebhookEvent
+from .subscription_past_due_webhook_event import SubscriptionPastDueWebhookEvent
from .subscription_unpaused_webhook_event import SubscriptionUnpausedWebhookEvent
from .credit_overage_charged_webhook_event import CreditOverageChargedWebhookEvent
from .subscription_cancelled_webhook_event import SubscriptionCancelledWebhookEvent
@@ -97,6 +98,7 @@
SubscriptionExpiredWebhookEvent,
SubscriptionFailedWebhookEvent,
SubscriptionOnHoldWebhookEvent,
+ SubscriptionPastDueWebhookEvent,
SubscriptionPausedWebhookEvent,
SubscriptionPlanChangedWebhookEvent,
SubscriptionRenewedWebhookEvent,
diff --git a/src/dodopayments/types/unwrap_webhook_event.py b/src/dodopayments/types/unwrap_webhook_event.py
index 5c87b55..ad01ba8 100644
--- a/src/dodopayments/types/unwrap_webhook_event.py
+++ b/src/dodopayments/types/unwrap_webhook_event.py
@@ -38,6 +38,7 @@
from .subscription_on_hold_webhook_event import SubscriptionOnHoldWebhookEvent
from .subscription_renewed_webhook_event import SubscriptionRenewedWebhookEvent
from .subscription_updated_webhook_event import SubscriptionUpdatedWebhookEvent
+from .subscription_past_due_webhook_event import SubscriptionPastDueWebhookEvent
from .subscription_unpaused_webhook_event import SubscriptionUnpausedWebhookEvent
from .credit_overage_charged_webhook_event import CreditOverageChargedWebhookEvent
from .subscription_cancelled_webhook_event import SubscriptionCancelledWebhookEvent
@@ -97,6 +98,7 @@
SubscriptionExpiredWebhookEvent,
SubscriptionFailedWebhookEvent,
SubscriptionOnHoldWebhookEvent,
+ SubscriptionPastDueWebhookEvent,
SubscriptionPausedWebhookEvent,
SubscriptionPlanChangedWebhookEvent,
SubscriptionRenewedWebhookEvent,
diff --git a/src/dodopayments/types/webhook_event_type.py b/src/dodopayments/types/webhook_event_type.py
index 5f4a1fe..052773e 100644
--- a/src/dodopayments/types/webhook_event_type.py
+++ b/src/dodopayments/types/webhook_event_type.py
@@ -21,6 +21,7 @@
"subscription.active",
"subscription.renewed",
"subscription.on_hold",
+ "subscription.past_due",
"subscription.paused",
"subscription.unpaused",
"subscription.cancelled",
diff --git a/tests/api_resources/blocklist/__init__.py b/tests/api_resources/blocklist/__init__.py
new file mode 100644
index 0000000..fd8019a
--- /dev/null
+++ b/tests/api_resources/blocklist/__init__.py
@@ -0,0 +1 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
diff --git a/tests/api_resources/blocklist/customers/__init__.py b/tests/api_resources/blocklist/customers/__init__.py
new file mode 100644
index 0000000..fd8019a
--- /dev/null
+++ b/tests/api_resources/blocklist/customers/__init__.py
@@ -0,0 +1 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
diff --git a/tests/api_resources/blocklist/customers/test_notes.py b/tests/api_resources/blocklist/customers/test_notes.py
new file mode 100644
index 0000000..0d9bbb1
--- /dev/null
+++ b/tests/api_resources/blocklist/customers/test_notes.py
@@ -0,0 +1,214 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+import os
+from typing import Any, cast
+
+import pytest
+
+from tests.utils import assert_matches_type
+from dodopayments import DodoPayments, AsyncDodoPayments
+from dodopayments.types.blocklist.customers import BlockedCustomerNote
+
+base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
+
+
+class TestNotes:
+ parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"])
+
+ @parametrize
+ def test_method_create(self, client: DodoPayments) -> None:
+ note = client.blocklist.customers.notes.create(
+ entry_id="entry_id",
+ note="note",
+ )
+ assert_matches_type(BlockedCustomerNote, note, path=["response"])
+
+ @parametrize
+ def test_raw_response_create(self, client: DodoPayments) -> None:
+ response = client.blocklist.customers.notes.with_raw_response.create(
+ entry_id="entry_id",
+ note="note",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ note = response.parse()
+ assert_matches_type(BlockedCustomerNote, note, path=["response"])
+
+ @parametrize
+ def test_streaming_response_create(self, client: DodoPayments) -> None:
+ with client.blocklist.customers.notes.with_streaming_response.create(
+ entry_id="entry_id",
+ note="note",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ note = response.parse()
+ assert_matches_type(BlockedCustomerNote, note, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ def test_path_params_create(self, client: DodoPayments) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `entry_id` but received ''"):
+ client.blocklist.customers.notes.with_raw_response.create(
+ entry_id="",
+ note="note",
+ )
+
+ @parametrize
+ def test_method_update(self, client: DodoPayments) -> None:
+ note = client.blocklist.customers.notes.update(
+ note_id="note_id",
+ entry_id="entry_id",
+ note="note",
+ )
+ assert_matches_type(BlockedCustomerNote, note, path=["response"])
+
+ @parametrize
+ def test_raw_response_update(self, client: DodoPayments) -> None:
+ response = client.blocklist.customers.notes.with_raw_response.update(
+ note_id="note_id",
+ entry_id="entry_id",
+ note="note",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ note = response.parse()
+ assert_matches_type(BlockedCustomerNote, note, path=["response"])
+
+ @parametrize
+ def test_streaming_response_update(self, client: DodoPayments) -> None:
+ with client.blocklist.customers.notes.with_streaming_response.update(
+ note_id="note_id",
+ entry_id="entry_id",
+ note="note",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ note = response.parse()
+ assert_matches_type(BlockedCustomerNote, note, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ def test_path_params_update(self, client: DodoPayments) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `entry_id` but received ''"):
+ client.blocklist.customers.notes.with_raw_response.update(
+ note_id="note_id",
+ entry_id="",
+ note="note",
+ )
+
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `note_id` but received ''"):
+ client.blocklist.customers.notes.with_raw_response.update(
+ note_id="",
+ entry_id="entry_id",
+ note="note",
+ )
+
+
+class TestAsyncNotes:
+ parametrize = pytest.mark.parametrize(
+ "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"]
+ )
+
+ @parametrize
+ async def test_method_create(self, async_client: AsyncDodoPayments) -> None:
+ note = await async_client.blocklist.customers.notes.create(
+ entry_id="entry_id",
+ note="note",
+ )
+ assert_matches_type(BlockedCustomerNote, note, path=["response"])
+
+ @parametrize
+ async def test_raw_response_create(self, async_client: AsyncDodoPayments) -> None:
+ response = await async_client.blocklist.customers.notes.with_raw_response.create(
+ entry_id="entry_id",
+ note="note",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ note = await response.parse()
+ assert_matches_type(BlockedCustomerNote, note, path=["response"])
+
+ @parametrize
+ async def test_streaming_response_create(self, async_client: AsyncDodoPayments) -> None:
+ async with async_client.blocklist.customers.notes.with_streaming_response.create(
+ entry_id="entry_id",
+ note="note",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ note = await response.parse()
+ assert_matches_type(BlockedCustomerNote, note, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ async def test_path_params_create(self, async_client: AsyncDodoPayments) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `entry_id` but received ''"):
+ await async_client.blocklist.customers.notes.with_raw_response.create(
+ entry_id="",
+ note="note",
+ )
+
+ @parametrize
+ async def test_method_update(self, async_client: AsyncDodoPayments) -> None:
+ note = await async_client.blocklist.customers.notes.update(
+ note_id="note_id",
+ entry_id="entry_id",
+ note="note",
+ )
+ assert_matches_type(BlockedCustomerNote, note, path=["response"])
+
+ @parametrize
+ async def test_raw_response_update(self, async_client: AsyncDodoPayments) -> None:
+ response = await async_client.blocklist.customers.notes.with_raw_response.update(
+ note_id="note_id",
+ entry_id="entry_id",
+ note="note",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ note = await response.parse()
+ assert_matches_type(BlockedCustomerNote, note, path=["response"])
+
+ @parametrize
+ async def test_streaming_response_update(self, async_client: AsyncDodoPayments) -> None:
+ async with async_client.blocklist.customers.notes.with_streaming_response.update(
+ note_id="note_id",
+ entry_id="entry_id",
+ note="note",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ note = await response.parse()
+ assert_matches_type(BlockedCustomerNote, note, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ async def test_path_params_update(self, async_client: AsyncDodoPayments) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `entry_id` but received ''"):
+ await async_client.blocklist.customers.notes.with_raw_response.update(
+ note_id="note_id",
+ entry_id="",
+ note="note",
+ )
+
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `note_id` but received ''"):
+ await async_client.blocklist.customers.notes.with_raw_response.update(
+ note_id="",
+ entry_id="entry_id",
+ note="note",
+ )
diff --git a/tests/api_resources/blocklist/test_customers.py b/tests/api_resources/blocklist/test_customers.py
new file mode 100644
index 0000000..84b2090
--- /dev/null
+++ b/tests/api_resources/blocklist/test_customers.py
@@ -0,0 +1,414 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+import os
+from typing import Any, cast
+
+import pytest
+
+from tests.utils import assert_matches_type
+from dodopayments import DodoPayments, AsyncDodoPayments
+from dodopayments._utils import parse_datetime
+from dodopayments.pagination import SyncDefaultPageNumberPagination, AsyncDefaultPageNumberPagination
+from dodopayments.types.blocklist import (
+ BlockedCustomer,
+)
+
+base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
+
+
+class TestCustomers:
+ parametrize = pytest.mark.parametrize("client", [False, True], indirect=True, ids=["loose", "strict"])
+
+ @parametrize
+ def test_method_create_overload_1(self, client: DodoPayments) -> None:
+ customer = client.blocklist.customers.create(
+ customer_id="customer_id",
+ )
+ assert_matches_type(BlockedCustomer, customer, path=["response"])
+
+ @parametrize
+ def test_method_create_with_all_params_overload_1(self, client: DodoPayments) -> None:
+ customer = client.blocklist.customers.create(
+ customer_id="customer_id",
+ reason="reason",
+ source="blocklist_page",
+ )
+ assert_matches_type(BlockedCustomer, customer, path=["response"])
+
+ @parametrize
+ def test_raw_response_create_overload_1(self, client: DodoPayments) -> None:
+ response = client.blocklist.customers.with_raw_response.create(
+ customer_id="customer_id",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ customer = response.parse()
+ assert_matches_type(BlockedCustomer, customer, path=["response"])
+
+ @parametrize
+ def test_streaming_response_create_overload_1(self, client: DodoPayments) -> None:
+ with client.blocklist.customers.with_streaming_response.create(
+ customer_id="customer_id",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ customer = response.parse()
+ assert_matches_type(BlockedCustomer, customer, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ def test_method_create_overload_2(self, client: DodoPayments) -> None:
+ customer = client.blocklist.customers.create(
+ email="email",
+ )
+ assert_matches_type(BlockedCustomer, customer, path=["response"])
+
+ @parametrize
+ def test_method_create_with_all_params_overload_2(self, client: DodoPayments) -> None:
+ customer = client.blocklist.customers.create(
+ email="email",
+ reason="reason",
+ source="blocklist_page",
+ )
+ assert_matches_type(BlockedCustomer, customer, path=["response"])
+
+ @parametrize
+ def test_raw_response_create_overload_2(self, client: DodoPayments) -> None:
+ response = client.blocklist.customers.with_raw_response.create(
+ email="email",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ customer = response.parse()
+ assert_matches_type(BlockedCustomer, customer, path=["response"])
+
+ @parametrize
+ def test_streaming_response_create_overload_2(self, client: DodoPayments) -> None:
+ with client.blocklist.customers.with_streaming_response.create(
+ email="email",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ customer = response.parse()
+ assert_matches_type(BlockedCustomer, customer, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ def test_method_retrieve(self, client: DodoPayments) -> None:
+ customer = client.blocklist.customers.retrieve(
+ "entry_id",
+ )
+ assert_matches_type(BlockedCustomer, customer, path=["response"])
+
+ @parametrize
+ def test_raw_response_retrieve(self, client: DodoPayments) -> None:
+ response = client.blocklist.customers.with_raw_response.retrieve(
+ "entry_id",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ customer = response.parse()
+ assert_matches_type(BlockedCustomer, customer, path=["response"])
+
+ @parametrize
+ def test_streaming_response_retrieve(self, client: DodoPayments) -> None:
+ with client.blocklist.customers.with_streaming_response.retrieve(
+ "entry_id",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ customer = response.parse()
+ assert_matches_type(BlockedCustomer, customer, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ def test_path_params_retrieve(self, client: DodoPayments) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `entry_id` but received ''"):
+ client.blocklist.customers.with_raw_response.retrieve(
+ "",
+ )
+
+ @parametrize
+ def test_method_list(self, client: DodoPayments) -> None:
+ customer = client.blocklist.customers.list()
+ assert_matches_type(SyncDefaultPageNumberPagination[BlockedCustomer], customer, path=["response"])
+
+ @parametrize
+ def test_method_list_with_all_params(self, client: DodoPayments) -> None:
+ customer = client.blocklist.customers.list(
+ blocked_by_email="blocked_by_email",
+ created_at_gte=parse_datetime("2019-12-27T18:11:19.117Z"),
+ created_at_lte=parse_datetime("2019-12-27T18:11:19.117Z"),
+ identifier="identifier",
+ page_number=0,
+ page_size=0,
+ )
+ assert_matches_type(SyncDefaultPageNumberPagination[BlockedCustomer], customer, path=["response"])
+
+ @parametrize
+ def test_raw_response_list(self, client: DodoPayments) -> None:
+ response = client.blocklist.customers.with_raw_response.list()
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ customer = response.parse()
+ assert_matches_type(SyncDefaultPageNumberPagination[BlockedCustomer], customer, path=["response"])
+
+ @parametrize
+ def test_streaming_response_list(self, client: DodoPayments) -> None:
+ with client.blocklist.customers.with_streaming_response.list() as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ customer = response.parse()
+ assert_matches_type(SyncDefaultPageNumberPagination[BlockedCustomer], customer, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ def test_method_delete(self, client: DodoPayments) -> None:
+ customer = client.blocklist.customers.delete(
+ "entry_id",
+ )
+ assert customer is None
+
+ @parametrize
+ def test_raw_response_delete(self, client: DodoPayments) -> None:
+ response = client.blocklist.customers.with_raw_response.delete(
+ "entry_id",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ customer = response.parse()
+ assert customer is None
+
+ @parametrize
+ def test_streaming_response_delete(self, client: DodoPayments) -> None:
+ with client.blocklist.customers.with_streaming_response.delete(
+ "entry_id",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ customer = response.parse()
+ assert customer is None
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ def test_path_params_delete(self, client: DodoPayments) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `entry_id` but received ''"):
+ client.blocklist.customers.with_raw_response.delete(
+ "",
+ )
+
+
+class TestAsyncCustomers:
+ parametrize = pytest.mark.parametrize(
+ "async_client", [False, True, {"http_client": "aiohttp"}], indirect=True, ids=["loose", "strict", "aiohttp"]
+ )
+
+ @parametrize
+ async def test_method_create_overload_1(self, async_client: AsyncDodoPayments) -> None:
+ customer = await async_client.blocklist.customers.create(
+ customer_id="customer_id",
+ )
+ assert_matches_type(BlockedCustomer, customer, path=["response"])
+
+ @parametrize
+ async def test_method_create_with_all_params_overload_1(self, async_client: AsyncDodoPayments) -> None:
+ customer = await async_client.blocklist.customers.create(
+ customer_id="customer_id",
+ reason="reason",
+ source="blocklist_page",
+ )
+ assert_matches_type(BlockedCustomer, customer, path=["response"])
+
+ @parametrize
+ async def test_raw_response_create_overload_1(self, async_client: AsyncDodoPayments) -> None:
+ response = await async_client.blocklist.customers.with_raw_response.create(
+ customer_id="customer_id",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ customer = await response.parse()
+ assert_matches_type(BlockedCustomer, customer, path=["response"])
+
+ @parametrize
+ async def test_streaming_response_create_overload_1(self, async_client: AsyncDodoPayments) -> None:
+ async with async_client.blocklist.customers.with_streaming_response.create(
+ customer_id="customer_id",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ customer = await response.parse()
+ assert_matches_type(BlockedCustomer, customer, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ async def test_method_create_overload_2(self, async_client: AsyncDodoPayments) -> None:
+ customer = await async_client.blocklist.customers.create(
+ email="email",
+ )
+ assert_matches_type(BlockedCustomer, customer, path=["response"])
+
+ @parametrize
+ async def test_method_create_with_all_params_overload_2(self, async_client: AsyncDodoPayments) -> None:
+ customer = await async_client.blocklist.customers.create(
+ email="email",
+ reason="reason",
+ source="blocklist_page",
+ )
+ assert_matches_type(BlockedCustomer, customer, path=["response"])
+
+ @parametrize
+ async def test_raw_response_create_overload_2(self, async_client: AsyncDodoPayments) -> None:
+ response = await async_client.blocklist.customers.with_raw_response.create(
+ email="email",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ customer = await response.parse()
+ assert_matches_type(BlockedCustomer, customer, path=["response"])
+
+ @parametrize
+ async def test_streaming_response_create_overload_2(self, async_client: AsyncDodoPayments) -> None:
+ async with async_client.blocklist.customers.with_streaming_response.create(
+ email="email",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ customer = await response.parse()
+ assert_matches_type(BlockedCustomer, customer, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ async def test_method_retrieve(self, async_client: AsyncDodoPayments) -> None:
+ customer = await async_client.blocklist.customers.retrieve(
+ "entry_id",
+ )
+ assert_matches_type(BlockedCustomer, customer, path=["response"])
+
+ @parametrize
+ async def test_raw_response_retrieve(self, async_client: AsyncDodoPayments) -> None:
+ response = await async_client.blocklist.customers.with_raw_response.retrieve(
+ "entry_id",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ customer = await response.parse()
+ assert_matches_type(BlockedCustomer, customer, path=["response"])
+
+ @parametrize
+ async def test_streaming_response_retrieve(self, async_client: AsyncDodoPayments) -> None:
+ async with async_client.blocklist.customers.with_streaming_response.retrieve(
+ "entry_id",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ customer = await response.parse()
+ assert_matches_type(BlockedCustomer, customer, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ async def test_path_params_retrieve(self, async_client: AsyncDodoPayments) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `entry_id` but received ''"):
+ await async_client.blocklist.customers.with_raw_response.retrieve(
+ "",
+ )
+
+ @parametrize
+ async def test_method_list(self, async_client: AsyncDodoPayments) -> None:
+ customer = await async_client.blocklist.customers.list()
+ assert_matches_type(AsyncDefaultPageNumberPagination[BlockedCustomer], customer, path=["response"])
+
+ @parametrize
+ async def test_method_list_with_all_params(self, async_client: AsyncDodoPayments) -> None:
+ customer = await async_client.blocklist.customers.list(
+ blocked_by_email="blocked_by_email",
+ created_at_gte=parse_datetime("2019-12-27T18:11:19.117Z"),
+ created_at_lte=parse_datetime("2019-12-27T18:11:19.117Z"),
+ identifier="identifier",
+ page_number=0,
+ page_size=0,
+ )
+ assert_matches_type(AsyncDefaultPageNumberPagination[BlockedCustomer], customer, path=["response"])
+
+ @parametrize
+ async def test_raw_response_list(self, async_client: AsyncDodoPayments) -> None:
+ response = await async_client.blocklist.customers.with_raw_response.list()
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ customer = await response.parse()
+ assert_matches_type(AsyncDefaultPageNumberPagination[BlockedCustomer], customer, path=["response"])
+
+ @parametrize
+ async def test_streaming_response_list(self, async_client: AsyncDodoPayments) -> None:
+ async with async_client.blocklist.customers.with_streaming_response.list() as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ customer = await response.parse()
+ assert_matches_type(AsyncDefaultPageNumberPagination[BlockedCustomer], customer, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ async def test_method_delete(self, async_client: AsyncDodoPayments) -> None:
+ customer = await async_client.blocklist.customers.delete(
+ "entry_id",
+ )
+ assert customer is None
+
+ @parametrize
+ async def test_raw_response_delete(self, async_client: AsyncDodoPayments) -> None:
+ response = await async_client.blocklist.customers.with_raw_response.delete(
+ "entry_id",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ customer = await response.parse()
+ assert customer is None
+
+ @parametrize
+ async def test_streaming_response_delete(self, async_client: AsyncDodoPayments) -> None:
+ async with async_client.blocklist.customers.with_streaming_response.delete(
+ "entry_id",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ customer = await response.parse()
+ assert customer is None
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ async def test_path_params_delete(self, async_client: AsyncDodoPayments) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `entry_id` but received ''"):
+ await async_client.blocklist.customers.with_raw_response.delete(
+ "",
+ )
diff --git a/tests/api_resources/test_payments.py b/tests/api_resources/test_payments.py
index 53911ec..05fa200 100644
--- a/tests/api_resources/test_payments.py
+++ b/tests/api_resources/test_payments.py
@@ -11,6 +11,8 @@
from dodopayments import DodoPayments, AsyncDodoPayments
from dodopayments.types import (
Payment,
+ ManualRetry,
+ ManualRetryState,
PaymentListResponse,
PaymentCreateResponse,
PaymentRetrieveLineItemsResponse,
@@ -238,6 +240,82 @@ def test_path_params_retrieve_line_items(self, client: DodoPayments) -> None:
"",
)
+ @parametrize
+ def test_method_retrieve_retry_state(self, client: DodoPayments) -> None:
+ payment = client.payments.retrieve_retry_state(
+ "payment_id",
+ )
+ assert_matches_type(ManualRetryState, payment, path=["response"])
+
+ @parametrize
+ def test_raw_response_retrieve_retry_state(self, client: DodoPayments) -> None:
+ response = client.payments.with_raw_response.retrieve_retry_state(
+ "payment_id",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ payment = response.parse()
+ assert_matches_type(ManualRetryState, payment, path=["response"])
+
+ @parametrize
+ def test_streaming_response_retrieve_retry_state(self, client: DodoPayments) -> None:
+ with client.payments.with_streaming_response.retrieve_retry_state(
+ "payment_id",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ payment = response.parse()
+ assert_matches_type(ManualRetryState, payment, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ def test_path_params_retrieve_retry_state(self, client: DodoPayments) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `payment_id` but received ''"):
+ client.payments.with_raw_response.retrieve_retry_state(
+ "",
+ )
+
+ @parametrize
+ def test_method_retry(self, client: DodoPayments) -> None:
+ payment = client.payments.retry(
+ "payment_id",
+ )
+ assert_matches_type(ManualRetry, payment, path=["response"])
+
+ @parametrize
+ def test_raw_response_retry(self, client: DodoPayments) -> None:
+ response = client.payments.with_raw_response.retry(
+ "payment_id",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ payment = response.parse()
+ assert_matches_type(ManualRetry, payment, path=["response"])
+
+ @parametrize
+ def test_streaming_response_retry(self, client: DodoPayments) -> None:
+ with client.payments.with_streaming_response.retry(
+ "payment_id",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ payment = response.parse()
+ assert_matches_type(ManualRetry, payment, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ def test_path_params_retry(self, client: DodoPayments) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `payment_id` but received ''"):
+ client.payments.with_raw_response.retry(
+ "",
+ )
+
class TestAsyncPayments:
parametrize = pytest.mark.parametrize(
@@ -455,3 +533,79 @@ async def test_path_params_retrieve_line_items(self, async_client: AsyncDodoPaym
await async_client.payments.with_raw_response.retrieve_line_items(
"",
)
+
+ @parametrize
+ async def test_method_retrieve_retry_state(self, async_client: AsyncDodoPayments) -> None:
+ payment = await async_client.payments.retrieve_retry_state(
+ "payment_id",
+ )
+ assert_matches_type(ManualRetryState, payment, path=["response"])
+
+ @parametrize
+ async def test_raw_response_retrieve_retry_state(self, async_client: AsyncDodoPayments) -> None:
+ response = await async_client.payments.with_raw_response.retrieve_retry_state(
+ "payment_id",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ payment = await response.parse()
+ assert_matches_type(ManualRetryState, payment, path=["response"])
+
+ @parametrize
+ async def test_streaming_response_retrieve_retry_state(self, async_client: AsyncDodoPayments) -> None:
+ async with async_client.payments.with_streaming_response.retrieve_retry_state(
+ "payment_id",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ payment = await response.parse()
+ assert_matches_type(ManualRetryState, payment, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ async def test_path_params_retrieve_retry_state(self, async_client: AsyncDodoPayments) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `payment_id` but received ''"):
+ await async_client.payments.with_raw_response.retrieve_retry_state(
+ "",
+ )
+
+ @parametrize
+ async def test_method_retry(self, async_client: AsyncDodoPayments) -> None:
+ payment = await async_client.payments.retry(
+ "payment_id",
+ )
+ assert_matches_type(ManualRetry, payment, path=["response"])
+
+ @parametrize
+ async def test_raw_response_retry(self, async_client: AsyncDodoPayments) -> None:
+ response = await async_client.payments.with_raw_response.retry(
+ "payment_id",
+ )
+
+ assert response.is_closed is True
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+ payment = await response.parse()
+ assert_matches_type(ManualRetry, payment, path=["response"])
+
+ @parametrize
+ async def test_streaming_response_retry(self, async_client: AsyncDodoPayments) -> None:
+ async with async_client.payments.with_streaming_response.retry(
+ "payment_id",
+ ) as response:
+ assert not response.is_closed
+ assert response.http_request.headers.get("X-Stainless-Lang") == "python"
+
+ payment = await response.parse()
+ assert_matches_type(ManualRetry, payment, path=["response"])
+
+ assert cast(Any, response.is_closed) is True
+
+ @parametrize
+ async def test_path_params_retry(self, async_client: AsyncDodoPayments) -> None:
+ with pytest.raises(ValueError, match=r"Expected a non-empty value for `payment_id` but received ''"):
+ await async_client.payments.with_raw_response.retry(
+ "",
+ )