Source code for netbird.resources.setup_keys

"""
Setup keys resource handler for NetBird API.
"""

from typing import Any, Dict, List

from ..models import SetupKeyCreate, SetupKeyUpdate
from .base import BaseResource


[docs] class SetupKeysResource(BaseResource): """Handler for NetBird setup keys API endpoints. Provides methods to manage NetBird setup keys including listing, creating, retrieving, updating, and deleting setup keys. """
[docs] def list(self) -> List[Dict[str, Any]]: """List all setup keys. Returns: List of setup key dictionaries Example: >>> keys = client.setup_keys.list() >>> for key in keys: ... print(f"Key: {key['name']} (Type: {key['type']})") """ data = self.client.get("setup-keys") return self._parse_list_response(data)
[docs] def create(self, key_data: SetupKeyCreate) -> Dict[str, Any]: """Create a new setup key. Args: key_data: Setup key creation data Returns: Created setup key dictionary Example: >>> key_data = SetupKeyCreate( ... name="Development Key", ... type="reusable", ... expires_in=86400, # 24 hours ... usage_limit=10 ... ) >>> key = client.setup_keys.create(key_data) """ data = self.client.post( "setup-keys", data=key_data.model_dump(exclude_unset=True) ) return self._parse_response(data)
[docs] def get(self, key_id: str) -> Dict[str, Any]: """Retrieve a specific setup key. Args: key_id: Unique setup key identifier Returns: Setup key dictionary Example: >>> key = client.setup_keys.get("key-123") >>> print(f"Key: {key['name']} - Valid: {key['valid']}") """ data = self.client.get(f"setup-keys/{key_id}") return self._parse_response(data)
[docs] def update(self, key_id: str, key_data: SetupKeyUpdate) -> Dict[str, Any]: """Update a setup key. Args: key_id: Unique setup key identifier key_data: Setup key update data Returns: Updated setup key dictionary Example: >>> key_data = SetupKeyUpdate(revoked=True) >>> key = client.setup_keys.update("key-123", key_data) """ data = self.client.put( f"setup-keys/{key_id}", data=key_data.model_dump(exclude_unset=True), ) return self._parse_response(data)
[docs] def delete(self, key_id: str) -> None: """Delete a setup key. Args: key_id: Unique setup key identifier Example: >>> client.setup_keys.delete("key-123") """ self.client.delete(f"setup-keys/{key_id}")