""" API client functions for interacting with the Airport Announcement System backend. """ import requests from typing import List, Optional API_BASE_URL = "http://localhost:7999" def get_groups() -> List[dict]: """Get all endpoint groups.""" response = requests.get(f"{API_BASE_URL}/groups") response.raise_for_status() return response.json() def get_group(group_id: int) -> Optional[dict]: """Get a specific endpoint group by ID.""" response = requests.get(f"{API_BASE_URL}/groups/{group_id}") if response.status_code == 404: return None response.raise_for_status() return response.json() def create_group(group: dict) -> dict: """Create a new endpoint group.""" response = requests.post(f"{API_BASE_URL}/groups", json=group) response.raise_for_status() return response.json() def update_group(group_id: int, updated_group: dict) -> dict: """Update an existing endpoint group.""" response = requests.put(f"{API_BASE_URL}/groups/{group_id}", json=updated_group) response.raise_for_status() return response.json() def delete_group(group_id: int) -> None: """Delete an endpoint group.""" response = requests.delete(f"{API_BASE_URL}/groups/{group_id}") response.raise_for_status() def start_announcement(text: str, group_id: int) -> None: """Start a new announcement.""" response = requests.post(f"{API_BASE_URL}/announcements", params={"text": text, "group_id": group_id}) response.raise_for_status() def get_announcement_status() -> dict: """Get the status of the current announcement.""" response = requests.get(f"{API_BASE_URL}/announcements/status") response.raise_for_status() return response.json() def get_available_endpoints() -> List[str]: """Get all available endpoints.""" response = requests.get(f"{API_BASE_URL}/endpoints") response.raise_for_status() return response.json() def get_available_languages() -> List[str]: """Get all available languages for announcements.""" response = requests.get(f"{API_BASE_URL}/languages") response.raise_for_status() return response.json()