Users API

This document outlines the API endpoints for managing users in PySpur. Users and sessions are required for deploying agents and chatbots that maintain message history.

Create User

Description: Creates a new user. If a user with the given external ID already exists, returns the existing user. URL: /user/ Method: POST Request Payload:
class UserCreate:
    external_id: str  # External identifier for the user
    user_metadata: Optional[Dict[str, Any]] = None  # Additional metadata about the user
Response Schema:
class UserResponse:
    id: str  # User ID (prefixed with 'U')
    external_id: str  # External identifier for the user
    user_metadata: Optional[Dict[str, Any]]  # Additional metadata about the user
    created_at: datetime  # When the user was created
    updated_at: datetime  # When the user was last updated

List Users

Description: Lists users with pagination. URL: /user/ Method: GET Query Parameters:
skip: int = 0  # Number of users to skip (min: 0)
limit: int = 10  # Number of users to return (min: 1, max: 100)
Response Schema:
class UserListResponse:
    users: List[UserResponse]  # List of users
    total: int  # Total number of users

Get User

Description: Gets a specific user by ID. URL: /user/{user_id}/ Method: GET Parameters:
user_id: str  # User ID (prefixed with 'U')
Response Schema:
class UserResponse:
    id: str  # User ID (prefixed with 'U')
    external_id: str  # External identifier for the user
    user_metadata: Optional[Dict[str, Any]]  # Additional metadata about the user
    created_at: datetime  # When the user was created
    updated_at: datetime  # When the user was last updated

Update User

Description: Updates a user. URL: /user/{user_id}/ Method: PATCH Parameters:
user_id: str  # User ID (prefixed with 'U')
Request Payload:
class UserUpdate:
    external_id: Optional[str] = None  # External identifier for the user
    user_metadata: Optional[Dict[str, Any]] = None  # Additional metadata about the user
Response Schema:
class UserResponse:
    id: str  # User ID (prefixed with 'U')
    external_id: str  # External identifier for the user
    user_metadata: Optional[Dict[str, Any]]  # Additional metadata about the user
    created_at: datetime  # When the user was created
    updated_at: datetime  # When the user was last updated

Delete User

Description: Deletes a user. URL: /user/{user_id}/ Method: DELETE Parameters:
user_id: str  # User ID (prefixed with 'U')
Response: 204 No Content