import requests import json from typing import Optional # Define a function to make the GET request def get_metadata_grouped_data( api_key: str, metadata_key: str, time_of_generation_min: Optional[str] = None, time_of_generation_max: Optional[str] = None, total_units_min: Optional[int] = None, total_units_max: Optional[int] = None, cost_min: Optional[float] = None, cost_max: Optional[float] = None, prompt_token_min: Optional[int] = None, prompt_token_max: Optional[int] = None, completion_token_min: Optional[int] = None, completion_token_max: Optional[int] = None, status_code: Optional[str] = None, weighted_feedback_min: Optional[float] = None, weighted_feedback_max: Optional[float] = None, virtual_keys: Optional[str] = None, configs: Optional[str] = None, workspace_slug: Optional[str] = None, api_key_ids: Optional[str] = None, current_page: Optional[int] = 1, page_size: Optional[int] = 20, metadata: Optional[str] = None, ai_org_model: Optional[str] = None, trace_id: Optional[str] = None, span_id: Optional[str] = None, ): url = f"https://api.portkey.ai/v1/analytics/groups/metadata/{metadata_key}" # Set up query parameters params = { "time_of_generation_min": time_of_generation_min, "time_of_generation_max": time_of_generation_max, "total_units_min": total_units_min, "total_units_max": total_units_max, "cost_min": cost_min, "cost_max": cost_max, "prompt_token_min": prompt_token_min, "prompt_token_max": prompt_token_max, "completion_token_min": completion_token_min, "completion_token_max": completion_token_max, "status_code": status_code, "weighted_feedback_min": weighted_feedback_min, "weighted_feedback_max": weighted_feedback_max, "virtual_keys": virtual_keys, "configs": configs, "workspace_slug": workspace_slug, "api_key_ids": api_key_ids, "current_page": current_page, "page_size": page_size, "metadata": metadata, "ai_org_model": ai_org_model, "trace_id": trace_id, "span_id": span_id, } # Remove any keys with None values params = {k: v for k, v in params.items() if v is not None} # Set up the headers headers = { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json" } # Make the GET request response = requests.get(url, headers=headers, params=params) # Check for successful response if response.status_code == 200: return response.json() # Return JSON data else: response.raise_for_status() # Raise an exception for errors # Example usage # Replace 'your_api_key' and 'your_metadata_key' with actual values api_key = 'your_api_key' metadata_key = 'your_metadata_key' try: data = get_metadata_grouped_data( api_key=api_key, metadata_key=metadata_key, time_of_generation_min="2024-08-23T15:50:23+05:30", time_of_generation_max="2024-09-23T15:50:23+05:30", total_units_min=100, total_units_max=1000, cost_min=10, cost_max=100, status_code="200,201" ) print(json.dumps(data, indent=4)) except Exception as e: print(f"Error occurred: {str(e)}")