Ë
    tPêjl  ã                   óH   — d Z ddlZddlmZmZ ddlZddlmZ  G d„ d«      Zy)z*Teams management client for LiteLLM proxy.é    N)ÚAnyÚFinalé   )ÚUnauthorizedErrorc                   ó  — e Zd ZdZddededz  defd„Zdeeef   fd„Z	 	 dd	edz  d
edz  de	eee
f      fd„Z		 	 	 	 	 	 	 	 dd	edz  d
edz  dedz  dedz  dedededz  dedeee
f   fd„Zdej                  eee
f      fd„Zy)ÚTeamsManagementClientz+Client for managing teams in LiteLLM proxy.NÚbase_urlÚapi_keyÚtimeoutc                 óL   — |j                  d«      | _        || _        || _        y)a`  
        Initialize the TeamsManagementClient.

        Args:
            base_url (str): The base URL of the LiteLLM proxy server (e.g., "http://localhost:4000")
            api_key (Optional[str]): API key for authentication. If provided, it will be sent as a Bearer token.
            timeout (int): Request timeout in seconds (default: 30)
        ú/N)ÚrstripÚ	_base_urlÚ_api_keyÚ_timeout)Úselfr	   r
   r   s       ú_/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/proxy/client/teams.pyÚ__init__zTeamsManagementClient.__init__   s"   € ð "Ÿ™¨Ó-ˆŒØˆŒØˆ�ó    Úreturnc                 óJ   — ddi}| j                   rd| j                   › �|d<   |S )z¬
        Get the headers for API requests, including authorization if api_key is set.

        Returns:
            Dict[str, str]: Headers to use for API requests
        zContent-Typezapplication/jsonzBearer ÚAuthorization)r   )r   Úheaderss     r   Ú_get_headersz"TeamsManagementClient._get_headers   s0   € ð )Ð*<Ð=ˆØ�=Š=Ø)0°·±°Ð'@ˆG�OÑ$Øˆr   Úuser_idÚorganization_idc                 ó  — | j                   › d�}i }|r||d<   |r||d<   t        j                  || j                  «       || j                  ¬«      }|j
                  dk(  rt        d«      ‚|j                  «        |j                  «       S )aÉ  
        List teams that the user belongs to.

        Args:
            user_id (Optional[str]): Only return teams which this user belongs to
            organization_id (Optional[str]): Only return teams which belong to this organization

        Returns:
            List[Dict[str, Any]]: List of team objects

        Raises:
            requests.exceptions.HTTPError: If the request fails
            UnauthorizedError: If authentication fails
        z
/team/listr   r   ©r   Úparamsr   é‘  ú*Authentication failed. Check your API key.©	r   ÚrequestsÚgetr   r   Ústatus_coder   Úraise_for_statusÚjson)r   r   r   Úurlr   Úresponses         r   ÚlistzTeamsManagementClient.list'   sŒ   € ð& Ÿ™Ð' zÐ2ˆØˆÙØ 'ˆF�9ÑÙØ(7ˆFÐ$Ñ%ä"Ÿ,™, s°D×4EÑ4EÓ4GÐPVÐ`d×`mÑ`mÔnˆà×Ñ 3Ò&Ü#Ð$PÓQÐQà×!Ñ!Ô#Ø�}‰}‹Ðr   Úteam_idÚ
team_aliasÚpageÚ	page_sizeÚsort_byÚ
sort_orderc	                 óH  — | j                   › d�}	|||dœ}
|r||
d<   |r||
d<   |r||
d<   |r||
d<   |r||
d<   t        j                  |	| j                  «       |
| j                  ¬«      }|j
                  d	k(  rt        d
«      ‚|j                  «        |j                  «       S )a¥  
        Get a paginated list of teams with filtering and sorting options.

        Args:
            user_id (Optional[str]): Only return teams which this user belongs to
            organization_id (Optional[str]): Only return teams which belong to this organization
            team_id (Optional[str]): Filter teams by exact team_id match
            team_alias (Optional[str]): Filter teams by partial team_alias match
            page (int): Page number for pagination
            page_size (int): Number of teams per page
            sort_by (Optional[str]): Column to sort by (e.g. 'team_id', 'team_alias', 'created_at')
            sort_order (str): Sort order ('asc' or 'desc')

        Returns:
            Dict[str, Any]: Paginated response containing teams and pagination info

        Raises:
            requests.exceptions.HTTPError: If the request fails
            UnauthorizedError: If authentication fails
        z/v2/team/list)r-   r.   r0   r   r   r+   r,   r/   r   r    r!   r"   )r   r   r   r+   r,   r-   r.   r/   r0   r(   r   r)   s               r   Úlist_v2zTeamsManagementClient.list_v2I   sÀ   € ð> Ÿ™Ð' }Ð5ˆàØ"Ø$ñ/
ˆñ Ø 'ˆF�9ÑÙØ(7ˆFÐ$Ñ%ÙØ 'ˆF�9ÑÙØ#-ˆF�<Ñ ÙØ 'ˆF�9Ñä"Ÿ,™, s°D×4EÑ4EÓ4GÐPVÐ`d×`mÑ`mÔnˆà×Ñ 3Ò&Ü#Ð$PÓQÐQà×!Ñ!Ô#Ø�}‰}‹Ðr   c                 óô   — | j                   › d�}t        j                  || j                  «       | j                  ¬«      }|j
                  dk(  rt        d«      ‚|j                  «        |j                  «       S )a   
        Get list of available teams that the user can join.

        Returns:
            List[Dict[str, Any]]: List of available team objects

        Raises:
            requests.exceptions.HTTPError: If the request fails
            UnauthorizedError: If authentication fails
        z/team/available)r   r   r    r!   r"   )r   r(   r)   s      r   Úget_availablez#TeamsManagementClient.get_available‚   si   € ð Ÿ™Ð' Ð7ˆä"Ÿ,™, s°D×4EÑ4EÓ4GÐQU×Q^ÑQ^Ô_ˆà×Ñ 3Ò&Ü#Ð$PÓQÐQà×!Ñ!Ô#Ø�}‰}‹Ðr   )Né   )NN)NNNNr   é
   NÚasc)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚintr   Údictr   r*   r   r2   Úbuiltinsr4   © r   r   r   r      s'  „ Ù5ñ  ð  ¨s°T©zð  È3ó  ð
˜d 3¨ 8™nó 
ð #Ø&*ñ à�t‘ð ð ˜t™ð ð 
ˆd�3˜�8‰nÑ	ó	 ðH #Ø&*Ø"Ø!%ØØØ"Øñ7à�t‘ð7ð ˜t™ð7ð �t‘ð	7ð
 ˜$‘Jð7ð ð7ð ð7ð �t‘ð7ð ð7ð 
ˆc�3ˆh‰ó7ðr˜xŸ}™}¨T°#°s°(©^Ñ<ô r   r   )	r;   r?   Útypingr   r   r#   Ú
exceptionsr   r   r@   r   r   ú<module>rC      s    ðÙ 0ã ß ã å )÷Jò Jr   