get_character
Retrieve detailed character information for Dungeons & Dragons campaigns by providing character name, ID, or player name to access character sheets and game data.
Instructions
Get detailed character information. Accepts character name, ID, or player name.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name_or_id | Yes | Character name, ID, or player name |
Implementation Reference
- The get_character method in the PartyServer class handles the '/character/{player_id}' GET route. It validates the user token, checks for permission using a PermissionResolver, and fetches character data from storage.
async def get_character(self, request: Request) -> Response: """ Get character data for a specific player. Validates token and checks permissions before returning character data. Args: request: Starlette request object Returns: JSON response with character data or error """ player_id = request.path_params.get("player_id") if not player_id: return JSONResponse({"error": "Missing player_id"}, status_code=400) # Validate token token = request.query_params.get("token", "") requesting_player = self.token_manager.validate_token(token) if not requesting_player: return JSONResponse({"error": "Unauthorized"}, status_code=401) # Check permission allowed = self.permission_resolver.check_permission( requesting_player, "get_character", player_id ) if not allowed: return JSONResponse( {"error": "Permission denied"}, status_code=403 ) # Get character data from storage try: character = self.storage.get_character(player_id) # Use mode='json' to handle datetime and other non-standard types return JSONResponse(character.model_dump(mode='json')) except Exception as e: logger.error(f"Failed to get character {player_id}: {e}") return JSONResponse( {"error": f"Character not found: {e}"}, status_code=404 )