Source code for netbird.resources.tokens

"""
Tokens resource handler for NetBird API.
"""

from typing import Any, Dict, List

from ..models import TokenCreate
from .base import BaseResource


[docs] class TokensResource(BaseResource): """Handler for NetBird tokens API endpoints. Provides methods to manage user API tokens including listing, creating, retrieving, and deleting tokens. """
[docs] def list(self, user_id: str) -> List[Dict[str, Any]]: """List all tokens for a user. Args: user_id: Unique user identifier Returns: List of token dictionaries Example: >>> tokens = client.tokens.list("user-123") >>> for token in tokens: ... print(f"Token: {token['name']}") """ data = self.client.get(f"users/{user_id}/tokens") return self._parse_list_response(data)
[docs] def create(self, user_id: str, token_data: TokenCreate) -> Dict[str, Any]: """Create a new token for a user. Args: user_id: Unique user identifier token_data: Token creation data Returns: Created token dictionary Example: >>> token_data = TokenCreate( ... name="API Access Token", ... expires_in=30 # 30 days ... ) >>> token = client.tokens.create("user-123", token_data) """ data = self.client.post(f"users/{user_id}/tokens", data=token_data.model_dump()) return self._parse_response(data)
[docs] def get(self, user_id: str, token_id: str) -> Dict[str, Any]: """Retrieve a specific token. Args: user_id: Unique user identifier token_id: Unique token identifier Returns: Token dictionary Example: >>> token = client.tokens.get("user-123", "token-456") >>> print(f"Token expires: {token['expiration_date']}") """ data = self.client.get(f"users/{user_id}/tokens/{token_id}") return self._parse_response(data)
[docs] def delete(self, user_id: str, token_id: str) -> None: """Delete a token. Args: user_id: Unique user identifier token_id: Unique token identifier Example: >>> client.tokens.delete("user-123", "token-456") """ self.client.delete(f"users/{user_id}/tokens/{token_id}")