o
    i7                     @   s   d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZmZmZmZmZ d d	lmZmZmZ erbd d
lmZ d dlmZ d dlmZ d dlmZ d dl m!Z! G dd ded ed ed Z"dS )    )CreateableAPIResource)ExpandableField)
ListObject)ListableAPIResource)StripeObject)UpdateableAPIResource)sanitize_id)ClassVarDictListOptionalcast)LiteralUnpackTYPE_CHECKING)Application)ConfigurationCreateParams)ConfigurationListParams)ConfigurationModifyParams)ConfigurationRetrieveParamsc                   @   s  e Zd ZU dZdZeed  ed< G dd deZ	G dd deZ
G dd	 d	eZeed
< 	 eed  ed< 	 e	ed< eed< 	 ee ed< 	 e
ed< eed< 	 eed< 	 eed< 	 eed< eeeef  ed< 	 ee ed< 	 ed ed< 	 eed< 	 eded dd fddZeded dd fddZeded  ded  fd!d"Zeded  ded  fd#d$Zededed% dd fd&d'Zededed% dd fd(d)Zededed* dd fd+d,Zededed* dd fd-d.Ze	e
ed/Zd0S )1Configurationz
    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).
    zbilling_portal.configurationOBJECT_NAMEc                   @   s6   e Zd ZU ee ed< 	 ee ed< 	 ee ed< dS )zConfiguration.BusinessProfileheadlineprivacy_policy_urlterms_of_service_urlN)__name__
__module____qualname__r   str__annotations__ r    r    /var/www/snowflake_co_dev_github/snow_flake_back_end_deploy/env/lib/python3.10/site-packages/stripe/billing_portal/_configuration.pyBusinessProfile*   s   
 r"   c                   @   s   e Zd ZU G dd deZG dd deZG dd deZG dd deZG d	d
 d
eZee	d< ee	d< ee	d< ee	d< ee	d< eeeeedZ
dS )zConfiguration.Featuresc                   @   s(   e Zd ZU eed  ed< 	 eed< dS )z%Configuration.Features.CustomerUpdate)addressemailnamephoneshippingtax_idallowed_updatesenabledN)r   r   r   r   r   r   boolr    r    r    r!   CustomerUpdate9   s   
 r,   c                   @      e Zd ZU eed< dS )z%Configuration.Features.InvoiceHistoryr*   Nr   r   r   r+   r   r    r    r    r!   InvoiceHistoryG      
 r/   c                   @   r-   )z*Configuration.Features.PaymentMethodUpdater*   Nr.   r    r    r    r!   PaymentMethodUpdateM   r0   r1   c                   @   sT   e Zd ZU G dd deZeed< eed< 	 ed ed< 	 ed ed< 	 deiZd	S )
z)Configuration.Features.SubscriptionCancelc                   @   s(   e Zd ZU eed< 	 eed  ed< dS )z<Configuration.Features.SubscriptionCancel.CancellationReasonr*   )customer_servicelow_qualitymissing_featuresotherswitched_servicetoo_complextoo_expensiveunusedoptionsN)r   r   r   r+   r   r   r   r    r    r    r!   CancellationReasonT   s   
 r;   cancellation_reasonr*   )at_period_endimmediatelymodealways_invoicecreate_prorationsnoneproration_behaviorN)	r   r   r   r   r;   r   r+   r   _inner_class_typesr    r    r    r!   SubscriptionCancelS   s   
 rF   c                   @   s   e Zd ZU G dd deZG dd deZeed  ed< 	 e	ed< 	 e
ee  ed< 	 ed	 ed
< 	 eed< ed ed< 	 eedZdS )z)Configuration.Features.SubscriptionUpdatec                   @   sF   e Zd ZU G dd deZeed< ee ed< 	 eed< 	 deiZdS )z1Configuration.Features.SubscriptionUpdate.Productc                   @   s.   e Zd ZU eed< 	 ee ed< 	 eed< dS )zDConfiguration.Features.SubscriptionUpdate.Product.AdjustableQuantityr*   maximumminimumN)r   r   r   r+   r   r   intr    r    r    r!   AdjustableQuantity|   s   
 rJ   adjustable_quantitypricesproductN)	r   r   r   r   rJ   r   r   r   rE   r    r    r    r!   Product{   s   
 rN   c                   @   s4   e Zd ZU G dd deZee ed< 	 deiZdS )z=Configuration.Features.SubscriptionUpdate.ScheduleAtPeriodEndc                   @   s   e Zd ZU ed ed< dS )zGConfiguration.Features.SubscriptionUpdate.ScheduleAtPeriodEnd.Condition)decreasing_item_amountshortening_intervaltypeN)r   r   r   r   r   r    r    r    r!   	Condition   s
   
 rR   
conditionsN)r   r   r   r   rR   r   r   rE   r    r    r    r!   ScheduleAtPeriodEnd   s
   
 rT   )pricepromotion_codequantitydefault_allowed_updatesr*   productsr@   rD   schedule_at_period_end)continue_trial	end_trialtrial_update_behavior)rY   rZ   N)r   r   r   r   rN   rT   r   r   r   r+   r   rE   r    r    r    r!   SubscriptionUpdatez   s*   
 
r^   customer_updateinvoice_historypayment_method_updatesubscription_cancelsubscription_update)r_   r`   ra   rb   rc   N)r   r   r   r   r,   r/   r1   rF   r^   r   rE   r    r    r    r!   Features8   s"   
 'J
rd   c                   @   s$   e Zd ZU eed< 	 ee ed< dS )zConfiguration.LoginPager*   urlN)r   r   r   r+   r   r   r   r    r    r    r!   	LoginPage   s
   
 rf   activer   applicationbusiness_profilecreateddefault_return_urlfeaturesid
is_defaultlivemode
login_pagemetadatar%   objectupdatedparamsr   returnc                 K   s   t d| jd|  |dS )j
        Creates a configuration that describes the functionality and behavior of a PortalSession
        r   postrt   )r   _static_request	class_urlclsrt   r    r    r!   create  s   zConfiguration.createc                    s"   t d| jd|  |dI dH S )rv   r   rw   rx   N)r   _static_request_asyncrz   r{   r    r    r!   create_async  s   
zConfiguration.create_asyncr   c                 K   s4   | j d|  |d}t|tstdt|j |S )j
        Returns a list of configurations that describe the functionality of the customer portal.
        getrx   %Expected list object from API, got %s)ry   rz   
isinstancer   	TypeErrorrQ   r   r|   rt   resultr    r    r!   list-  s   
zConfiguration.listc                    s<   | j d|  |dI dH }t|tstdt|j |S )r   r   rx   Nr   )r~   rz   r   r   r   rQ   r   r   r    r    r!   
list_asyncA  s   
zConfiguration.list_asyncr   c                 K   s*   d|   t|f }td| jd||dS )b
        Updates a configuration that describes the functionality of the customer portal.
        %s/%sr   rw   rx   )rz   r   r   ry   r|   rm   rt   re   r    r    r!   modifyU  s   zConfiguration.modifyc                    s2   d|   t|f }td| jd||dI dH S )r   r   r   rw   rx   N)rz   r   r   r~   r   r    r    r!   modify_asyncf  s   
zConfiguration.modify_asyncr   c                 K   s   | |fi |}|   |S )d
        Retrieves a configuration that describes the functionality of the customer portal.
        )refreshr|   rm   rt   instancer    r    r!   retrievew  s   zConfiguration.retrievec                    s$   | |fi |}|  I dH  |S )r   N)refresh_asyncr   r    r    r!   retrieve_async  s   zConfiguration.retrieve_async)ri   rl   rp   N)r   r   r   __doc__r   r	   r   r   r   r"   rd   rf   r+   r   r   rI   r   r
   classmethodr   r}   r   r   r   r   r   r   r   r   rE   r    r    r    r!   r      s   
  

r   N)#stripe._createable_api_resourcer   stripe._expandable_fieldr   stripe._list_objectr   stripe._listable_api_resourcer   stripe._stripe_objectr   stripe._updateable_api_resourcer   stripe._utilr   typingr	   r
   r   r   r   typing_extensionsr   r   r   stripe._applicationr   9stripe.params.billing_portal._configuration_create_paramsr   7stripe.params.billing_portal._configuration_list_paramsr   9stripe.params.billing_portal._configuration_modify_paramsr   ;stripe.params.billing_portal._configuration_retrieve_paramsr   r   r    r    r    r!   <module>   s(   
