updates
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# File generated from our OpenAPI spec
|
||||
from importlib import import_module
|
||||
from typing_extensions import TYPE_CHECKING
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from stripe.billing_portal._configuration import (
|
||||
Configuration as Configuration,
|
||||
)
|
||||
from stripe.billing_portal._configuration_service import (
|
||||
ConfigurationService as ConfigurationService,
|
||||
)
|
||||
from stripe.billing_portal._session import Session as Session
|
||||
from stripe.billing_portal._session_service import (
|
||||
SessionService as SessionService,
|
||||
)
|
||||
|
||||
# name -> (import_target, is_submodule)
|
||||
_import_map = {
|
||||
"Configuration": ("stripe.billing_portal._configuration", False),
|
||||
"ConfigurationService": (
|
||||
"stripe.billing_portal._configuration_service",
|
||||
False,
|
||||
),
|
||||
"Session": ("stripe.billing_portal._session", False),
|
||||
"SessionService": ("stripe.billing_portal._session_service", False),
|
||||
}
|
||||
if not TYPE_CHECKING:
|
||||
|
||||
def __getattr__(name):
|
||||
try:
|
||||
target, is_submodule = _import_map[name]
|
||||
module = import_module(target)
|
||||
if is_submodule:
|
||||
return module
|
||||
|
||||
return getattr(
|
||||
module,
|
||||
name,
|
||||
)
|
||||
except KeyError:
|
||||
raise AttributeError()
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,401 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# File generated from our OpenAPI spec
|
||||
from stripe._createable_api_resource import CreateableAPIResource
|
||||
from stripe._expandable_field import ExpandableField
|
||||
from stripe._list_object import ListObject
|
||||
from stripe._listable_api_resource import ListableAPIResource
|
||||
from stripe._stripe_object import StripeObject
|
||||
from stripe._updateable_api_resource import UpdateableAPIResource
|
||||
from stripe._util import sanitize_id
|
||||
from typing import ClassVar, Dict, List, Optional, cast
|
||||
from typing_extensions import Literal, Unpack, TYPE_CHECKING
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from stripe._application import Application
|
||||
from stripe.params.billing_portal._configuration_create_params import (
|
||||
ConfigurationCreateParams,
|
||||
)
|
||||
from stripe.params.billing_portal._configuration_list_params import (
|
||||
ConfigurationListParams,
|
||||
)
|
||||
from stripe.params.billing_portal._configuration_modify_params import (
|
||||
ConfigurationModifyParams,
|
||||
)
|
||||
from stripe.params.billing_portal._configuration_retrieve_params import (
|
||||
ConfigurationRetrieveParams,
|
||||
)
|
||||
|
||||
|
||||
class Configuration(
|
||||
CreateableAPIResource["Configuration"],
|
||||
ListableAPIResource["Configuration"],
|
||||
UpdateableAPIResource["Configuration"],
|
||||
):
|
||||
"""
|
||||
A portal configuration describes the functionality and behavior you embed in a portal session. Related guide: [Configure the customer portal](https://docs.stripe.com/customer-management/configure-portal).
|
||||
"""
|
||||
|
||||
OBJECT_NAME: ClassVar[Literal["billing_portal.configuration"]] = (
|
||||
"billing_portal.configuration"
|
||||
)
|
||||
|
||||
class BusinessProfile(StripeObject):
|
||||
headline: Optional[str]
|
||||
"""
|
||||
The messaging shown to customers in the portal.
|
||||
"""
|
||||
privacy_policy_url: Optional[str]
|
||||
"""
|
||||
A link to the business's publicly available privacy policy.
|
||||
"""
|
||||
terms_of_service_url: Optional[str]
|
||||
"""
|
||||
A link to the business's publicly available terms of service.
|
||||
"""
|
||||
|
||||
class Features(StripeObject):
|
||||
class CustomerUpdate(StripeObject):
|
||||
allowed_updates: List[
|
||||
Literal[
|
||||
"address", "email", "name", "phone", "shipping", "tax_id"
|
||||
]
|
||||
]
|
||||
"""
|
||||
The types of customer updates that are supported. When empty, customers are not updateable.
|
||||
"""
|
||||
enabled: bool
|
||||
"""
|
||||
Whether the feature is enabled.
|
||||
"""
|
||||
|
||||
class InvoiceHistory(StripeObject):
|
||||
enabled: bool
|
||||
"""
|
||||
Whether the feature is enabled.
|
||||
"""
|
||||
|
||||
class PaymentMethodUpdate(StripeObject):
|
||||
enabled: bool
|
||||
"""
|
||||
Whether the feature is enabled.
|
||||
"""
|
||||
|
||||
class SubscriptionCancel(StripeObject):
|
||||
class CancellationReason(StripeObject):
|
||||
enabled: bool
|
||||
"""
|
||||
Whether the feature is enabled.
|
||||
"""
|
||||
options: List[
|
||||
Literal[
|
||||
"customer_service",
|
||||
"low_quality",
|
||||
"missing_features",
|
||||
"other",
|
||||
"switched_service",
|
||||
"too_complex",
|
||||
"too_expensive",
|
||||
"unused",
|
||||
]
|
||||
]
|
||||
"""
|
||||
Which cancellation reasons will be given as options to the customer.
|
||||
"""
|
||||
|
||||
cancellation_reason: CancellationReason
|
||||
enabled: bool
|
||||
"""
|
||||
Whether the feature is enabled.
|
||||
"""
|
||||
mode: Literal["at_period_end", "immediately"]
|
||||
"""
|
||||
Whether to cancel subscriptions immediately or at the end of the billing period.
|
||||
"""
|
||||
proration_behavior: Literal[
|
||||
"always_invoice", "create_prorations", "none"
|
||||
]
|
||||
"""
|
||||
Whether to create prorations when canceling subscriptions. Possible values are `none` and `create_prorations`.
|
||||
"""
|
||||
_inner_class_types = {"cancellation_reason": CancellationReason}
|
||||
|
||||
class SubscriptionUpdate(StripeObject):
|
||||
class Product(StripeObject):
|
||||
class AdjustableQuantity(StripeObject):
|
||||
enabled: bool
|
||||
"""
|
||||
If true, the quantity can be adjusted to any non-negative integer.
|
||||
"""
|
||||
maximum: Optional[int]
|
||||
"""
|
||||
The maximum quantity that can be set for the product.
|
||||
"""
|
||||
minimum: int
|
||||
"""
|
||||
The minimum quantity that can be set for the product.
|
||||
"""
|
||||
|
||||
adjustable_quantity: AdjustableQuantity
|
||||
prices: List[str]
|
||||
"""
|
||||
The list of price IDs which, when subscribed to, a subscription can be updated.
|
||||
"""
|
||||
product: str
|
||||
"""
|
||||
The product ID.
|
||||
"""
|
||||
_inner_class_types = {
|
||||
"adjustable_quantity": AdjustableQuantity
|
||||
}
|
||||
|
||||
class ScheduleAtPeriodEnd(StripeObject):
|
||||
class Condition(StripeObject):
|
||||
type: Literal[
|
||||
"decreasing_item_amount", "shortening_interval"
|
||||
]
|
||||
"""
|
||||
The type of condition.
|
||||
"""
|
||||
|
||||
conditions: List[Condition]
|
||||
"""
|
||||
List of conditions. When any condition is true, an update will be scheduled at the end of the current period.
|
||||
"""
|
||||
_inner_class_types = {"conditions": Condition}
|
||||
|
||||
default_allowed_updates: List[
|
||||
Literal["price", "promotion_code", "quantity"]
|
||||
]
|
||||
"""
|
||||
The types of subscription updates that are supported for items listed in the `products` attribute. When empty, subscriptions are not updateable.
|
||||
"""
|
||||
enabled: bool
|
||||
"""
|
||||
Whether the feature is enabled.
|
||||
"""
|
||||
products: Optional[List[Product]]
|
||||
"""
|
||||
The list of up to 10 products that support subscription updates.
|
||||
"""
|
||||
proration_behavior: Literal[
|
||||
"always_invoice", "create_prorations", "none"
|
||||
]
|
||||
"""
|
||||
Determines how to handle prorations resulting from subscription updates. Valid values are `none`, `create_prorations`, and `always_invoice`. Defaults to a value of `none` if you don't set it during creation.
|
||||
"""
|
||||
schedule_at_period_end: ScheduleAtPeriodEnd
|
||||
trial_update_behavior: Literal["continue_trial", "end_trial"]
|
||||
"""
|
||||
Determines how handle updates to trialing subscriptions. Valid values are `end_trial` and `continue_trial`. Defaults to a value of `end_trial` if you don't set it during creation.
|
||||
"""
|
||||
_inner_class_types = {
|
||||
"products": Product,
|
||||
"schedule_at_period_end": ScheduleAtPeriodEnd,
|
||||
}
|
||||
|
||||
customer_update: CustomerUpdate
|
||||
invoice_history: InvoiceHistory
|
||||
payment_method_update: PaymentMethodUpdate
|
||||
subscription_cancel: SubscriptionCancel
|
||||
subscription_update: SubscriptionUpdate
|
||||
_inner_class_types = {
|
||||
"customer_update": CustomerUpdate,
|
||||
"invoice_history": InvoiceHistory,
|
||||
"payment_method_update": PaymentMethodUpdate,
|
||||
"subscription_cancel": SubscriptionCancel,
|
||||
"subscription_update": SubscriptionUpdate,
|
||||
}
|
||||
|
||||
class LoginPage(StripeObject):
|
||||
enabled: bool
|
||||
"""
|
||||
If `true`, a shareable `url` will be generated that will take your customers to a hosted login page for the customer portal.
|
||||
|
||||
If `false`, the previously generated `url`, if any, will be deactivated.
|
||||
"""
|
||||
url: Optional[str]
|
||||
"""
|
||||
A shareable URL to the hosted portal login page. Your customers will be able to log in with their [email](https://stripe.com/docs/api/customers/object#customer_object-email) and receive a link to their customer portal.
|
||||
"""
|
||||
|
||||
active: bool
|
||||
"""
|
||||
Whether the configuration is active and can be used to create portal sessions.
|
||||
"""
|
||||
application: Optional[ExpandableField["Application"]]
|
||||
"""
|
||||
ID of the Connect Application that created the configuration.
|
||||
"""
|
||||
business_profile: BusinessProfile
|
||||
created: int
|
||||
"""
|
||||
Time at which the object was created. Measured in seconds since the Unix epoch.
|
||||
"""
|
||||
default_return_url: Optional[str]
|
||||
"""
|
||||
The default URL to redirect customers to when they click on the portal's link to return to your website. This can be [overriden](https://stripe.com/docs/api/customer_portal/sessions/create#create_portal_session-return_url) when creating the session.
|
||||
"""
|
||||
features: Features
|
||||
id: str
|
||||
"""
|
||||
Unique identifier for the object.
|
||||
"""
|
||||
is_default: bool
|
||||
"""
|
||||
Whether the configuration is the default. If `true`, this configuration can be managed in the Dashboard and portal sessions will use this configuration unless it is overriden when creating the session.
|
||||
"""
|
||||
livemode: bool
|
||||
"""
|
||||
Has the value `true` if the object exists in live mode or the value `false` if the object exists in test mode.
|
||||
"""
|
||||
login_page: LoginPage
|
||||
metadata: Optional[Dict[str, str]]
|
||||
"""
|
||||
Set of [key-value pairs](https://stripe.com/docs/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
|
||||
"""
|
||||
name: Optional[str]
|
||||
"""
|
||||
The name of the configuration.
|
||||
"""
|
||||
object: Literal["billing_portal.configuration"]
|
||||
"""
|
||||
String representing the object's type. Objects of the same type share the same value.
|
||||
"""
|
||||
updated: int
|
||||
"""
|
||||
Time at which the object was last updated. Measured in seconds since the Unix epoch.
|
||||
"""
|
||||
|
||||
@classmethod
|
||||
def create(
|
||||
cls, **params: Unpack["ConfigurationCreateParams"]
|
||||
) -> "Configuration":
|
||||
"""
|
||||
Creates a configuration that describes the functionality and behavior of a PortalSession
|
||||
"""
|
||||
return cast(
|
||||
"Configuration",
|
||||
cls._static_request(
|
||||
"post",
|
||||
cls.class_url(),
|
||||
params=params,
|
||||
),
|
||||
)
|
||||
|
||||
@classmethod
|
||||
async def create_async(
|
||||
cls, **params: Unpack["ConfigurationCreateParams"]
|
||||
) -> "Configuration":
|
||||
"""
|
||||
Creates a configuration that describes the functionality and behavior of a PortalSession
|
||||
"""
|
||||
return cast(
|
||||
"Configuration",
|
||||
await cls._static_request_async(
|
||||
"post",
|
||||
cls.class_url(),
|
||||
params=params,
|
||||
),
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def list(
|
||||
cls, **params: Unpack["ConfigurationListParams"]
|
||||
) -> ListObject["Configuration"]:
|
||||
"""
|
||||
Returns a list of configurations that describe the functionality of the customer portal.
|
||||
"""
|
||||
result = cls._static_request(
|
||||
"get",
|
||||
cls.class_url(),
|
||||
params=params,
|
||||
)
|
||||
if not isinstance(result, ListObject):
|
||||
raise TypeError(
|
||||
"Expected list object from API, got %s"
|
||||
% (type(result).__name__)
|
||||
)
|
||||
|
||||
return result
|
||||
|
||||
@classmethod
|
||||
async def list_async(
|
||||
cls, **params: Unpack["ConfigurationListParams"]
|
||||
) -> ListObject["Configuration"]:
|
||||
"""
|
||||
Returns a list of configurations that describe the functionality of the customer portal.
|
||||
"""
|
||||
result = await cls._static_request_async(
|
||||
"get",
|
||||
cls.class_url(),
|
||||
params=params,
|
||||
)
|
||||
if not isinstance(result, ListObject):
|
||||
raise TypeError(
|
||||
"Expected list object from API, got %s"
|
||||
% (type(result).__name__)
|
||||
)
|
||||
|
||||
return result
|
||||
|
||||
@classmethod
|
||||
def modify(
|
||||
cls, id: str, **params: Unpack["ConfigurationModifyParams"]
|
||||
) -> "Configuration":
|
||||
"""
|
||||
Updates a configuration that describes the functionality of the customer portal.
|
||||
"""
|
||||
url = "%s/%s" % (cls.class_url(), sanitize_id(id))
|
||||
return cast(
|
||||
"Configuration",
|
||||
cls._static_request(
|
||||
"post",
|
||||
url,
|
||||
params=params,
|
||||
),
|
||||
)
|
||||
|
||||
@classmethod
|
||||
async def modify_async(
|
||||
cls, id: str, **params: Unpack["ConfigurationModifyParams"]
|
||||
) -> "Configuration":
|
||||
"""
|
||||
Updates a configuration that describes the functionality of the customer portal.
|
||||
"""
|
||||
url = "%s/%s" % (cls.class_url(), sanitize_id(id))
|
||||
return cast(
|
||||
"Configuration",
|
||||
await cls._static_request_async(
|
||||
"post",
|
||||
url,
|
||||
params=params,
|
||||
),
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def retrieve(
|
||||
cls, id: str, **params: Unpack["ConfigurationRetrieveParams"]
|
||||
) -> "Configuration":
|
||||
"""
|
||||
Retrieves a configuration that describes the functionality of the customer portal.
|
||||
"""
|
||||
instance = cls(id, **params)
|
||||
instance.refresh()
|
||||
return instance
|
||||
|
||||
@classmethod
|
||||
async def retrieve_async(
|
||||
cls, id: str, **params: Unpack["ConfigurationRetrieveParams"]
|
||||
) -> "Configuration":
|
||||
"""
|
||||
Retrieves a configuration that describes the functionality of the customer portal.
|
||||
"""
|
||||
instance = cls(id, **params)
|
||||
await instance.refresh_async()
|
||||
return instance
|
||||
|
||||
_inner_class_types = {
|
||||
"business_profile": BusinessProfile,
|
||||
"features": Features,
|
||||
"login_page": LoginPage,
|
||||
}
|
||||
@@ -0,0 +1,189 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# File generated from our OpenAPI spec
|
||||
from stripe._stripe_service import StripeService
|
||||
from stripe._util import sanitize_id
|
||||
from typing import Optional, cast
|
||||
from typing_extensions import TYPE_CHECKING
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from stripe._list_object import ListObject
|
||||
from stripe._request_options import RequestOptions
|
||||
from stripe.billing_portal._configuration import Configuration
|
||||
from stripe.params.billing_portal._configuration_create_params import (
|
||||
ConfigurationCreateParams,
|
||||
)
|
||||
from stripe.params.billing_portal._configuration_list_params import (
|
||||
ConfigurationListParams,
|
||||
)
|
||||
from stripe.params.billing_portal._configuration_retrieve_params import (
|
||||
ConfigurationRetrieveParams,
|
||||
)
|
||||
from stripe.params.billing_portal._configuration_update_params import (
|
||||
ConfigurationUpdateParams,
|
||||
)
|
||||
|
||||
|
||||
class ConfigurationService(StripeService):
|
||||
def list(
|
||||
self,
|
||||
params: Optional["ConfigurationListParams"] = None,
|
||||
options: Optional["RequestOptions"] = None,
|
||||
) -> "ListObject[Configuration]":
|
||||
"""
|
||||
Returns a list of configurations that describe the functionality of the customer portal.
|
||||
"""
|
||||
return cast(
|
||||
"ListObject[Configuration]",
|
||||
self._request(
|
||||
"get",
|
||||
"/v1/billing_portal/configurations",
|
||||
base_address="api",
|
||||
params=params,
|
||||
options=options,
|
||||
),
|
||||
)
|
||||
|
||||
async def list_async(
|
||||
self,
|
||||
params: Optional["ConfigurationListParams"] = None,
|
||||
options: Optional["RequestOptions"] = None,
|
||||
) -> "ListObject[Configuration]":
|
||||
"""
|
||||
Returns a list of configurations that describe the functionality of the customer portal.
|
||||
"""
|
||||
return cast(
|
||||
"ListObject[Configuration]",
|
||||
await self._request_async(
|
||||
"get",
|
||||
"/v1/billing_portal/configurations",
|
||||
base_address="api",
|
||||
params=params,
|
||||
options=options,
|
||||
),
|
||||
)
|
||||
|
||||
def create(
|
||||
self,
|
||||
params: "ConfigurationCreateParams",
|
||||
options: Optional["RequestOptions"] = None,
|
||||
) -> "Configuration":
|
||||
"""
|
||||
Creates a configuration that describes the functionality and behavior of a PortalSession
|
||||
"""
|
||||
return cast(
|
||||
"Configuration",
|
||||
self._request(
|
||||
"post",
|
||||
"/v1/billing_portal/configurations",
|
||||
base_address="api",
|
||||
params=params,
|
||||
options=options,
|
||||
),
|
||||
)
|
||||
|
||||
async def create_async(
|
||||
self,
|
||||
params: "ConfigurationCreateParams",
|
||||
options: Optional["RequestOptions"] = None,
|
||||
) -> "Configuration":
|
||||
"""
|
||||
Creates a configuration that describes the functionality and behavior of a PortalSession
|
||||
"""
|
||||
return cast(
|
||||
"Configuration",
|
||||
await self._request_async(
|
||||
"post",
|
||||
"/v1/billing_portal/configurations",
|
||||
base_address="api",
|
||||
params=params,
|
||||
options=options,
|
||||
),
|
||||
)
|
||||
|
||||
def retrieve(
|
||||
self,
|
||||
configuration: str,
|
||||
params: Optional["ConfigurationRetrieveParams"] = None,
|
||||
options: Optional["RequestOptions"] = None,
|
||||
) -> "Configuration":
|
||||
"""
|
||||
Retrieves a configuration that describes the functionality of the customer portal.
|
||||
"""
|
||||
return cast(
|
||||
"Configuration",
|
||||
self._request(
|
||||
"get",
|
||||
"/v1/billing_portal/configurations/{configuration}".format(
|
||||
configuration=sanitize_id(configuration),
|
||||
),
|
||||
base_address="api",
|
||||
params=params,
|
||||
options=options,
|
||||
),
|
||||
)
|
||||
|
||||
async def retrieve_async(
|
||||
self,
|
||||
configuration: str,
|
||||
params: Optional["ConfigurationRetrieveParams"] = None,
|
||||
options: Optional["RequestOptions"] = None,
|
||||
) -> "Configuration":
|
||||
"""
|
||||
Retrieves a configuration that describes the functionality of the customer portal.
|
||||
"""
|
||||
return cast(
|
||||
"Configuration",
|
||||
await self._request_async(
|
||||
"get",
|
||||
"/v1/billing_portal/configurations/{configuration}".format(
|
||||
configuration=sanitize_id(configuration),
|
||||
),
|
||||
base_address="api",
|
||||
params=params,
|
||||
options=options,
|
||||
),
|
||||
)
|
||||
|
||||
def update(
|
||||
self,
|
||||
configuration: str,
|
||||
params: Optional["ConfigurationUpdateParams"] = None,
|
||||
options: Optional["RequestOptions"] = None,
|
||||
) -> "Configuration":
|
||||
"""
|
||||
Updates a configuration that describes the functionality of the customer portal.
|
||||
"""
|
||||
return cast(
|
||||
"Configuration",
|
||||
self._request(
|
||||
"post",
|
||||
"/v1/billing_portal/configurations/{configuration}".format(
|
||||
configuration=sanitize_id(configuration),
|
||||
),
|
||||
base_address="api",
|
||||
params=params,
|
||||
options=options,
|
||||
),
|
||||
)
|
||||
|
||||
async def update_async(
|
||||
self,
|
||||
configuration: str,
|
||||
params: Optional["ConfigurationUpdateParams"] = None,
|
||||
options: Optional["RequestOptions"] = None,
|
||||
) -> "Configuration":
|
||||
"""
|
||||
Updates a configuration that describes the functionality of the customer portal.
|
||||
"""
|
||||
return cast(
|
||||
"Configuration",
|
||||
await self._request_async(
|
||||
"post",
|
||||
"/v1/billing_portal/configurations/{configuration}".format(
|
||||
configuration=sanitize_id(configuration),
|
||||
),
|
||||
base_address="api",
|
||||
params=params,
|
||||
options=options,
|
||||
),
|
||||
)
|
||||
@@ -0,0 +1,296 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# File generated from our OpenAPI spec
|
||||
from stripe._createable_api_resource import CreateableAPIResource
|
||||
from stripe._expandable_field import ExpandableField
|
||||
from stripe._stripe_object import StripeObject
|
||||
from typing import ClassVar, List, Optional, cast
|
||||
from typing_extensions import Literal, Unpack, TYPE_CHECKING
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from stripe.billing_portal._configuration import Configuration
|
||||
from stripe.params.billing_portal._session_create_params import (
|
||||
SessionCreateParams,
|
||||
)
|
||||
|
||||
|
||||
class Session(CreateableAPIResource["Session"]):
|
||||
"""
|
||||
The Billing customer portal is a Stripe-hosted UI for subscription and
|
||||
billing management.
|
||||
|
||||
A portal configuration describes the functionality and features that you
|
||||
want to provide to your customers through the portal.
|
||||
|
||||
A portal session describes the instantiation of the customer portal for
|
||||
a particular customer. By visiting the session's URL, the customer
|
||||
can manage their subscriptions and billing details. For security reasons,
|
||||
sessions are short-lived and will expire if the customer does not visit the URL.
|
||||
Create sessions on-demand when customers intend to manage their subscriptions
|
||||
and billing details.
|
||||
|
||||
Related guide: [Customer management](https://docs.stripe.com/customer-management)
|
||||
"""
|
||||
|
||||
OBJECT_NAME: ClassVar[Literal["billing_portal.session"]] = (
|
||||
"billing_portal.session"
|
||||
)
|
||||
|
||||
class Flow(StripeObject):
|
||||
class AfterCompletion(StripeObject):
|
||||
class HostedConfirmation(StripeObject):
|
||||
custom_message: Optional[str]
|
||||
"""
|
||||
A custom message to display to the customer after the flow is completed.
|
||||
"""
|
||||
|
||||
class Redirect(StripeObject):
|
||||
return_url: str
|
||||
"""
|
||||
The URL the customer will be redirected to after the flow is completed.
|
||||
"""
|
||||
|
||||
hosted_confirmation: Optional[HostedConfirmation]
|
||||
"""
|
||||
Configuration when `after_completion.type=hosted_confirmation`.
|
||||
"""
|
||||
redirect: Optional[Redirect]
|
||||
"""
|
||||
Configuration when `after_completion.type=redirect`.
|
||||
"""
|
||||
type: Literal["hosted_confirmation", "portal_homepage", "redirect"]
|
||||
"""
|
||||
The specified type of behavior after the flow is completed.
|
||||
"""
|
||||
_inner_class_types = {
|
||||
"hosted_confirmation": HostedConfirmation,
|
||||
"redirect": Redirect,
|
||||
}
|
||||
|
||||
class SubscriptionCancel(StripeObject):
|
||||
class Retention(StripeObject):
|
||||
class CouponOffer(StripeObject):
|
||||
coupon: str
|
||||
"""
|
||||
The ID of the coupon to be offered.
|
||||
"""
|
||||
|
||||
coupon_offer: Optional[CouponOffer]
|
||||
"""
|
||||
Configuration when `retention.type=coupon_offer`.
|
||||
"""
|
||||
type: Literal["coupon_offer"]
|
||||
"""
|
||||
Type of retention strategy that will be used.
|
||||
"""
|
||||
_inner_class_types = {"coupon_offer": CouponOffer}
|
||||
|
||||
retention: Optional[Retention]
|
||||
"""
|
||||
Specify a retention strategy to be used in the cancellation flow.
|
||||
"""
|
||||
subscription: str
|
||||
"""
|
||||
The ID of the subscription to be canceled.
|
||||
"""
|
||||
_inner_class_types = {"retention": Retention}
|
||||
|
||||
class SubscriptionUpdate(StripeObject):
|
||||
subscription: str
|
||||
"""
|
||||
The ID of the subscription to be updated.
|
||||
"""
|
||||
|
||||
class SubscriptionUpdateConfirm(StripeObject):
|
||||
class Discount(StripeObject):
|
||||
coupon: Optional[str]
|
||||
"""
|
||||
The ID of the coupon to apply to this subscription update.
|
||||
"""
|
||||
promotion_code: Optional[str]
|
||||
"""
|
||||
The ID of a promotion code to apply to this subscription update.
|
||||
"""
|
||||
|
||||
class Item(StripeObject):
|
||||
id: Optional[str]
|
||||
"""
|
||||
The ID of the [subscription item](https://stripe.com/docs/api/subscriptions/object#subscription_object-items-data-id) to be updated.
|
||||
"""
|
||||
price: Optional[str]
|
||||
"""
|
||||
The price the customer should subscribe to through this flow. The price must also be included in the configuration's [`features.subscription_update.products`](https://stripe.com/docs/api/customer_portal/configuration#portal_configuration_object-features-subscription_update-products).
|
||||
"""
|
||||
quantity: Optional[int]
|
||||
"""
|
||||
[Quantity](https://stripe.com/docs/subscriptions/quantities) for this item that the customer should subscribe to through this flow.
|
||||
"""
|
||||
|
||||
discounts: Optional[List[Discount]]
|
||||
"""
|
||||
The coupon or promotion code to apply to this subscription update.
|
||||
"""
|
||||
items: List[Item]
|
||||
"""
|
||||
The [subscription item](https://stripe.com/docs/api/subscription_items) to be updated through this flow. Currently, only up to one may be specified and subscriptions with multiple items are not updatable.
|
||||
"""
|
||||
subscription: str
|
||||
"""
|
||||
The ID of the subscription to be updated.
|
||||
"""
|
||||
_inner_class_types = {"discounts": Discount, "items": Item}
|
||||
|
||||
after_completion: AfterCompletion
|
||||
subscription_cancel: Optional[SubscriptionCancel]
|
||||
"""
|
||||
Configuration when `flow.type=subscription_cancel`.
|
||||
"""
|
||||
subscription_update: Optional[SubscriptionUpdate]
|
||||
"""
|
||||
Configuration when `flow.type=subscription_update`.
|
||||
"""
|
||||
subscription_update_confirm: Optional[SubscriptionUpdateConfirm]
|
||||
"""
|
||||
Configuration when `flow.type=subscription_update_confirm`.
|
||||
"""
|
||||
type: Literal[
|
||||
"payment_method_update",
|
||||
"subscription_cancel",
|
||||
"subscription_update",
|
||||
"subscription_update_confirm",
|
||||
]
|
||||
"""
|
||||
Type of flow that the customer will go through.
|
||||
"""
|
||||
_inner_class_types = {
|
||||
"after_completion": AfterCompletion,
|
||||
"subscription_cancel": SubscriptionCancel,
|
||||
"subscription_update": SubscriptionUpdate,
|
||||
"subscription_update_confirm": SubscriptionUpdateConfirm,
|
||||
}
|
||||
|
||||
configuration: ExpandableField["Configuration"]
|
||||
"""
|
||||
The configuration used by this session, describing the features available.
|
||||
"""
|
||||
created: int
|
||||
"""
|
||||
Time at which the object was created. Measured in seconds since the Unix epoch.
|
||||
"""
|
||||
customer: str
|
||||
"""
|
||||
The ID of the customer for this session.
|
||||
"""
|
||||
flow: Optional[Flow]
|
||||
"""
|
||||
Information about a specific flow for the customer to go through. See the [docs](https://stripe.com/docs/customer-management/portal-deep-links) to learn more about using customer portal deep links and flows.
|
||||
"""
|
||||
id: str
|
||||
"""
|
||||
Unique identifier for the object.
|
||||
"""
|
||||
livemode: bool
|
||||
"""
|
||||
Has the value `true` if the object exists in live mode or the value `false` if the object exists in test mode.
|
||||
"""
|
||||
locale: Optional[
|
||||
Literal[
|
||||
"auto",
|
||||
"bg",
|
||||
"cs",
|
||||
"da",
|
||||
"de",
|
||||
"el",
|
||||
"en",
|
||||
"en-AU",
|
||||
"en-CA",
|
||||
"en-GB",
|
||||
"en-IE",
|
||||
"en-IN",
|
||||
"en-NZ",
|
||||
"en-SG",
|
||||
"es",
|
||||
"es-419",
|
||||
"et",
|
||||
"fi",
|
||||
"fil",
|
||||
"fr",
|
||||
"fr-CA",
|
||||
"hr",
|
||||
"hu",
|
||||
"id",
|
||||
"it",
|
||||
"ja",
|
||||
"ko",
|
||||
"lt",
|
||||
"lv",
|
||||
"ms",
|
||||
"mt",
|
||||
"nb",
|
||||
"nl",
|
||||
"pl",
|
||||
"pt",
|
||||
"pt-BR",
|
||||
"ro",
|
||||
"ru",
|
||||
"sk",
|
||||
"sl",
|
||||
"sv",
|
||||
"th",
|
||||
"tr",
|
||||
"vi",
|
||||
"zh",
|
||||
"zh-HK",
|
||||
"zh-TW",
|
||||
]
|
||||
]
|
||||
"""
|
||||
The IETF language tag of the locale Customer Portal is displayed in. If blank or auto, the customer's `preferred_locales` or browser's locale is used.
|
||||
"""
|
||||
object: Literal["billing_portal.session"]
|
||||
"""
|
||||
String representing the object's type. Objects of the same type share the same value.
|
||||
"""
|
||||
on_behalf_of: Optional[str]
|
||||
"""
|
||||
The account for which the session was created on behalf of. When specified, only subscriptions and invoices with this `on_behalf_of` account appear in the portal. For more information, see the [docs](https://stripe.com/docs/connect/separate-charges-and-transfers#settlement-merchant). Use the [Accounts API](https://stripe.com/docs/api/accounts/object#account_object-settings-branding) to modify the `on_behalf_of` account's branding settings, which the portal displays.
|
||||
"""
|
||||
return_url: Optional[str]
|
||||
"""
|
||||
The URL to redirect customers to when they click on the portal's link to return to your website.
|
||||
"""
|
||||
url: str
|
||||
"""
|
||||
The short-lived URL of the session that gives customers access to the customer portal.
|
||||
"""
|
||||
|
||||
@classmethod
|
||||
def create(cls, **params: Unpack["SessionCreateParams"]) -> "Session":
|
||||
"""
|
||||
Creates a session of the customer portal.
|
||||
"""
|
||||
return cast(
|
||||
"Session",
|
||||
cls._static_request(
|
||||
"post",
|
||||
cls.class_url(),
|
||||
params=params,
|
||||
),
|
||||
)
|
||||
|
||||
@classmethod
|
||||
async def create_async(
|
||||
cls, **params: Unpack["SessionCreateParams"]
|
||||
) -> "Session":
|
||||
"""
|
||||
Creates a session of the customer portal.
|
||||
"""
|
||||
return cast(
|
||||
"Session",
|
||||
await cls._static_request_async(
|
||||
"post",
|
||||
cls.class_url(),
|
||||
params=params,
|
||||
),
|
||||
)
|
||||
|
||||
_inner_class_types = {"flow": Flow}
|
||||
@@ -0,0 +1,52 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# File generated from our OpenAPI spec
|
||||
from stripe._stripe_service import StripeService
|
||||
from typing import Optional, cast
|
||||
from typing_extensions import TYPE_CHECKING
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from stripe._request_options import RequestOptions
|
||||
from stripe.billing_portal._session import Session
|
||||
from stripe.params.billing_portal._session_create_params import (
|
||||
SessionCreateParams,
|
||||
)
|
||||
|
||||
|
||||
class SessionService(StripeService):
|
||||
def create(
|
||||
self,
|
||||
params: "SessionCreateParams",
|
||||
options: Optional["RequestOptions"] = None,
|
||||
) -> "Session":
|
||||
"""
|
||||
Creates a session of the customer portal.
|
||||
"""
|
||||
return cast(
|
||||
"Session",
|
||||
self._request(
|
||||
"post",
|
||||
"/v1/billing_portal/sessions",
|
||||
base_address="api",
|
||||
params=params,
|
||||
options=options,
|
||||
),
|
||||
)
|
||||
|
||||
async def create_async(
|
||||
self,
|
||||
params: "SessionCreateParams",
|
||||
options: Optional["RequestOptions"] = None,
|
||||
) -> "Session":
|
||||
"""
|
||||
Creates a session of the customer portal.
|
||||
"""
|
||||
return cast(
|
||||
"Session",
|
||||
await self._request_async(
|
||||
"post",
|
||||
"/v1/billing_portal/sessions",
|
||||
base_address="api",
|
||||
params=params,
|
||||
options=options,
|
||||
),
|
||||
)
|
||||
Reference in New Issue
Block a user