🔍 Code Extractor

function api_get_chat_session

Maturity: 48

Flask API endpoint that retrieves a specific chat session by ID, verifying user access permissions before returning the session data.

File:
/tf/active/vicechatdev/vice_ai/complex_app.py
Lines:
1207 - 1222
Complexity:
moderate

Purpose

This endpoint serves as a REST API route to fetch chat session details. It performs authentication checks to ensure the requesting user owns the document associated with the chat session, preventing unauthorized access. The function retrieves the chat session, validates ownership through the associated document, and returns the session data in JSON format.

Source Code

def api_get_chat_session(session_id):
    """Get a chat session"""
    try:
        chat_session = get_chat_session(session_id)
        if not chat_session:
            return jsonify({'error': 'Chat session not found'}), 404
        
        # Verify access
        document = get_document(chat_session.document_id)
        if not document or document.author != get_user_id():
            return jsonify({'error': 'Access denied'}), 403
        
        return jsonify({'chat_session': chat_session.to_dict()})
    except Exception as e:
        logger.error(f"Get chat session error: {e}")
        return jsonify({'error': 'Failed to retrieve chat session'}), 500

Parameters

Name Type Default Kind
session_id - - positional_or_keyword

Parameter Details

session_id: String identifier for the chat session to retrieve. This is extracted from the URL path parameter and used to query the chat session from the database or storage system.

Return Value

Returns a Flask JSON response tuple. On success (200): {'chat_session': <dict>} containing the chat session data serialized via to_dict() method. On not found (404): {'error': 'Chat session not found'}. On access denied (403): {'error': 'Access denied'} when user doesn't own the associated document. On server error (500): {'error': 'Failed to retrieve chat session'} with error logged.

Dependencies

  • flask
  • logging

Required Imports

from flask import jsonify

Usage Example

# This is a Flask route handler, typically called via HTTP request
# Example HTTP request:
# GET /api/chat-sessions/abc123
# Headers: Authorization: Bearer <token>

# Internal usage context:
from flask import Flask, jsonify
from functools import wraps

app = Flask(__name__)

# Mock dependencies for example
def require_auth(f):
    @wraps(f)
    def decorated(*args, **kwargs):
        # Authentication logic here
        return f(*args, **kwargs)
    return decorated

def get_chat_session(session_id):
    # Returns chat session object or None
    pass

def get_document(doc_id):
    # Returns document object or None
    pass

def get_user_id():
    # Returns current user ID
    return 'user123'

@app.route('/api/chat-sessions/<session_id>', methods=['GET'])
@require_auth
def api_get_chat_session(session_id):
    # Function implementation as provided
    pass

# Client-side usage (e.g., JavaScript fetch):
# fetch('/api/chat-sessions/abc123', {
#     method: 'GET',
#     headers: {'Authorization': 'Bearer <token>'}
# }).then(res => res.json())

Best Practices

  • Always verify user authentication before accessing the endpoint (handled by @require_auth decorator)
  • The function implements proper access control by verifying document ownership before returning chat session data
  • Error handling is comprehensive with specific HTTP status codes (404, 403, 500) for different failure scenarios
  • Errors are logged for debugging purposes while returning user-friendly error messages
  • The function follows REST API conventions with appropriate HTTP methods and status codes
  • Ensure get_chat_session(), get_document(), and get_user_id() helper functions are properly implemented and available in scope
  • The chat session object must implement a to_dict() method for proper JSON serialization
  • Consider implementing rate limiting for this endpoint to prevent abuse
  • Ensure proper database transaction handling in the helper functions to maintain data consistency

Similar Components

AI-powered semantic similarity - components with related functionality:

  • function api_get_chat_session_v1 91.2% similar

    Flask API endpoint that retrieves a specific chat session by its ID and returns it as JSON.

    From: /tf/active/vicechatdev/vice_ai/new_app.py
  • function get_session_history 80.9% similar

    Flask API endpoint that retrieves the chat message history for the current user's session.

    From: /tf/active/vicechatdev/docchat/app.py
  • function get_history 79.1% similar

    Flask API endpoint that retrieves chat message history for the current user's session from an in-memory chat_sessions dictionary.

    From: /tf/active/vicechatdev/docchat/blueprint.py
  • function api_create_chat_session_v1 79.0% similar

    Flask API endpoint that creates a new chat session for a document section or retrieves an existing one if already present.

    From: /tf/active/vicechatdev/vice_ai/complex_app.py
  • function api_create_chat_session 78.8% similar

    Flask API endpoint that creates or retrieves a chat session associated with a specific document section, ensuring proper validation and linking between documents, sections, and chat sessions.

    From: /tf/active/vicechatdev/vice_ai/new_app.py
← Back to Browse