
    g                        d dl mZ d dlmZ d dlmZmZmZ ddlm	Z	m
Z
mZ ddlmZ ddlmZmZmZmZmZmZmZmZmZmZmZ dd	lmZ dd
lmZ  G d de      Zy)    )annotations)partial)DictListOptional   )model_validateparse_link_responseparse_user_response)
SyncClient)AdminUserAttributesAuthMFAAdminDeleteFactorParams AuthMFAAdminDeleteFactorResponseAuthMFAAdminListFactorsParamsAuthMFAAdminListFactorsResponseGenerateLinkParamsGenerateLinkResponseInviteUserByEmailOptionsSignOutScopeUserUserResponse   )SyncGoTrueAdminMFAAPI)SyncGoTrueBaseAPIc                      e Zd Zdi dddd	 	 	 	 	 	 	 	 	 	 	 ddZdddZi f	 	 	 	 	 ddZddZdd	Zddd
ZddZ		 	 	 	 	 	 ddZ
dddZ	 	 	 	 ddZ	 	 	 	 ddZy)SyncGoTrueAdminAPI NTurlheadershttp_clientverifyproxyc                   t        j                  | |||||       t               | _        | j                  | j                  _        | j                  | j                  _        y )Nr   )r   __init__r   mfa_list_factorslist_factors_delete_factordelete_factor)selfr   r    r!   r"   r#   s         R/var/www/openai/venv/lib/python3.12/site-packages/gotrue/_sync/gotrue_admin_api.pyr%   zSyncGoTrueAdminAPI.__init__   sT     	""#	
 )* $ 2 2!%!4!4    c                2    | j                  ddd|i|d      S )z.
        Removes a logged-in session.
        POSTlogoutscopeT)queryjwtno_resolve_json_request)r+   r3   r1   s      r,   sign_outzSyncGoTrueAdminAPI.sign_out/   s.     }}E"   
 	
r-   c                x    | j                  dd||j                  d      d|j                  d      t              S )z;
        Sends an invite link to an email address.
        r/   invitedata)emailr:   redirect_tobodyr<   xform)r6   getr   )r+   r;   optionss      r,   invite_user_by_emailz'SyncGoTrueAdminAPI.invite_user_by_email;   s@     }} '++f*=>M2%  
 	
r-   c                6   | j                  dd|j                  d      |j                  d      |j                  d      |j                  d      |j                  di       j                  d      d	|j                  di       j                  d
      t              S )zX
        Generates email links and OTPs to be sent via a custom email provider.
        r/   zadmin/generate_linktyper;   password	new_emailrA   r:   )rD   r;   rE   rF   r:   r<   r=   )r6   r@   r
   r+   paramss     r,   generate_linkz SyncGoTrueAdminAPI.generate_linkK   s     }}!

6*G,"JJz2#ZZ4

9b155f= 

9b155mD%  
 	
r-   c                4    | j                  dd|t              S )z
        Creates a new user.

        This function should only be called on a server.
        Never expose your `service_role` key in the browser.
        r/   admin/usersr>   r?   r6   r   )r+   
attributess     r,   create_userzSyncGoTrueAdminAPI.create_user_   s&     }}%	  
 	
r-   c                4    | j                  dd||dd       S )z
        Get a list of users.

        This function should only be called on a server.
        Never expose your `service_role` key in the browser.
        GETrK   )pageper_pagec                Z    d| v r!| d   D cg c]  }t        t        |       c}S g S c c}w )Nusers)r	   r   )r:   users     r,   <lambda>z/SyncGoTrueAdminAPI.list_users.<locals>.<lambda>x   s8    d? 9=WFd+F Fs   ()r2   r?   r5   )r+   rR   rS   s      r,   
list_userszSyncGoTrueAdminAPI.list_usersm   s-     }}X6	  	
 		
r-   c                8    | j                  dd| t              S )z
        Get user by id.

        This function should only be called on a server.
        Never expose your `service_role` key in the browser.
        rQ   admin/users/r?   rM   )r+   uids     r,   get_user_by_idz!SyncGoTrueAdminAPI.get_user_by_id   s*     }}3% %  
 	
r-   c                :    | j                  dd| |t              S )z
        Updates the user data.

        This function should only be called on a server.
        Never expose your `service_role` key in the browser.
        PUTrZ   rL   rM   )r+   r\   rN   s      r,   update_user_by_idz$SyncGoTrueAdminAPI.update_user_by_id   s-     }}3% %	  
 	
r-   c                8    d|i}| j                  dd| |      S )z
        Delete a user. Requires a `service_role` key.

        This function should only be called on a server.
        Never expose your `service_role` key in the browser.
        should_soft_deleteDELETErZ   )r>   r5   )r+   idrb   r>   s       r,   delete_userzSyncGoTrueAdminAPI.delete_user   s+     %&89}}XbT':}FFr-   c                t    | j                  dd|j                  d       dt        t        t                    S )NrQ   rZ   user_idz/factorsr[   )r6   r@   r   r	   r   rG   s     r,   r'   z SyncGoTrueAdminAPI._list_factors   s>     }}6::i01:.*IJ  
 	
r-   c           	         | j                  dd|j                  d       d|j                  d       t        t        t                    S )Nrc   rZ   rg   z	/factors/	factor_idr[   )r6   r@   r   r	   r   rG   s     r,   r)   z!SyncGoTrueAdminAPI._delete_factor   sL     }}6::i016::k;R:ST.*JK  
 	
r-   )r   strr    zDict[str, str]r!   zOptional[SyncClient]r"   boolr#   zOptional[str]returnNone)global)r3   rj   r1   r   rl   rm   )r;   rj   rA   r   rl   r   )rH   r   rl   r   )rN   r   rl   r   )NN)rR   intrS   ro   rl   z
List[User])r\   rj   rl   r   )r\   rj   rN   r   rl   r   )F)rd   rj   rb   rk   rl   rm   )rH   r   rl   r   )rH   r   rl   r   )__name__
__module____qualname__r%   r7   rB   rI   rO   rX   r]   r`   re   r'   r)    r-   r,   r   r      s     "$,0#5 5  	5
 *5 5 5 
5*

 -/

 *
 
	
 
(

$


 (
 
	
$G
-
 
)

.
 
*
r-   r   N)
__future__r   	functoolsr   typingr   r   r   helpersr	   r
   r   http_clientsr   typesr   r   r   r   r   r   r   r   r   r   r   gotrue_admin_mfa_apir   gotrue_base_apir   r   rs   r-   r,   <module>r|      sE    "  ' ' N N %    8 .a
* a
r-   