# Jan-Contract Enhanced API Documentation ## Overview The Jan-Contract Enhanced API provides comprehensive services for India's informal workforce, including contract generation, scheme discovery, document analysis, and AI-powered assistance. **Base URL:** `http://localhost:8000` **API Version:** 2.1.0 **Documentation:** `/docs` (Swagger UI) or `/redoc` (ReDoc) --- ## Table of Contents 1. [Authentication & Setup](#authentication--setup) 2. [Contract Generator API](#contract-generator-api) 3. [Scheme Finder API](#scheme-finder-api) 4. [PDF Demystifier API](#pdf-demystifier-api) 5. [General Assistant API](#general-assistant-api) 6. [Media Processing API](#media-processing-api) 7. [System Endpoints](#system-endpoints) 8. [Error Handling](#error-handling) 9. [Testing Examples](#testing-examples) --- ## Authentication & Setup ### Environment Variables Required ```bash GOOGLE_API_KEY=your_google_api_key GROQ_API_KEY=your_groq_api_key TAVILY_API_KEY=your_tavily_api_key ``` ### Health Check **Endpoint:** `GET /health` **Response:** ```json { "status": "healthy", "version": "2.1.0", "timestamp": "2024-01-15T10:30:00.000Z", "services": { "directories": { "video_consents": true, "pdfs_demystify": true }, "modules": { "streamlit_webrtc": "✅", "av": "✅", "speech_recognition": "✅" }, "api_keys": { "GOOGLE_API_KEY": "✅", "GROQ_API_KEY": "✅", "TAVILY_API_KEY": "✅" } } } ``` --- ## Contract Generator API ### 1. Generate Contract **Endpoint:** `POST /api/v1/contracts/generate` **Description:** Generate a digital contract from plain text description. **Request Payload:** ```json { "user_request": "I need a contract for hiring a domestic helper for 6 months with weekly payment of Rs. 3000" } ``` **Response:** ```json { "success": true, "message": "Contract generated successfully", "data": { "contract_id": "123e4567-e89b-12d3-a456-426614174000", "contract": "DOMESTIC HELPER EMPLOYMENT AGREEMENT\n\nThis agreement is made between...", "legal_trivia": { "trivia": [ { "point": "Minimum wage rights for domestic workers", "explanation": "Domestic workers are entitled to minimum wages as per state regulations", "source_url": "https://labour.gov.in/sites/default/files/domestic_workers_act.pdf" } ] }, "created_at": "2024-01-15T10:30:00.000Z" }, "timestamp": "2024-01-15T10:30:00.000Z" } ``` ### 2. Generate Contract PDF **Endpoint:** `POST /api/v1/contracts/generate-pdf` **Description:** Generate a contract and return it as a downloadable PDF file. **Request Payload:** ```json { "user_request": "I need a contract for hiring a domestic helper for 6 months with weekly payment of Rs. 3000" } ``` **Response:** PDF file download with headers: ``` Content-Type: application/pdf Content-Disposition: attachment;filename=contract_20240115_103000.pdf ``` ### 3. Get Contract **Endpoint:** `GET /api/v1/contracts/{contract_id}` **Description:** Retrieve a previously generated contract by ID. **Response:** ```json { "success": true, "message": "Contract retrieved successfully", "data": { "legal_doc": "DOMESTIC HELPER EMPLOYMENT AGREEMENT\n\nThis agreement is made between...", "legal_trivia": { "trivia": [...] }, "created_at": "2024-01-15T10:30:00.000Z", "user_request": "I need a contract for hiring a domestic helper..." }, "timestamp": "2024-01-15T10:30:00.000Z" } ``` ### 4. List Contracts **Endpoint:** `GET /api/v1/contracts` **Description:** List all generated contracts with summaries. **Response:** ```json { "success": true, "message": "Found 2 contract(s)", "data": { "contracts": [ { "id": "123e4567-e89b-12d3-a456-426614174000", "summary": "DOMESTIC HELPER EMPLOYMENT AGREEMENT\n\nThis agreement is made between...", "created_at": "2024-01-15T10:30:00.000Z", "user_request": "I need a contract for hiring a domestic helper for 6 months..." } ] }, "timestamp": "2024-01-15T10:30:00.000Z" } ``` ### 5. Delete Contract **Endpoint:** `DELETE /api/v1/contracts/{contract_id}` **Description:** Delete a specific contract and its associated data. **Response:** ```json { "success": true, "message": "Contract and associated data deleted successfully", "timestamp": "2024-01-15T10:30:00.000Z" } ``` --- ## Scheme Finder API ### Find Government Schemes **Endpoint:** `POST /api/v1/schemes/find` **Description:** Find relevant government schemes based on user profile. **Request Payload:** ```json { "user_profile": "I am a 35-year-old woman from rural Maharashtra, working as a daily wage laborer, looking for financial assistance schemes" } ``` **Response:** ```json { "success": true, "message": "Schemes found successfully", "data": { "schemes": [ { "scheme_name": "Pradhan Mantri Jan Dhan Yojana", "description": "Financial inclusion program providing basic banking services to unbanked households", "target_audience": "Unbanked households, especially women", "official_link": "https://pmjdy.gov.in/" }, { "scheme_name": "Mahila Shakti Kendra", "description": "Women empowerment scheme providing support for rural women", "target_audience": "Rural women", "official_link": "https://wcd.nic.in/schemes/mahila-shakti-kendra" } ] }, "timestamp": "2024-01-15T10:30:00.000Z" } ``` --- ## PDF Demystifier API ### 1. Upload Document **Endpoint:** `POST /api/v1/demystify/upload` **Description:** Upload a PDF document for AI-powered analysis. **Request:** Multipart form data - `file`: PDF file (max 50MB) **Response:** ```json { "success": true, "message": "Document uploaded and analyzed successfully", "data": { "session_id": "456e7890-e89b-12d3-a456-426614174001", "report": { "summary": "This is a rental agreement for a residential property...", "key_terms": [ { "term": "Security Deposit", "explanation": "A refundable amount paid by tenant to cover potential damages", "resource_link": "https://housing.com/guides/security-deposit" } ], "overall_advice": "This is an automated analysis. For critical matters, please consult with a qualified legal professional." }, "filename": "rental_agreement.pdf", "upload_time": "2024-01-15T10:30:00.000Z" }, "timestamp": "2024-01-15T10:30:00.000Z" } ``` ### 2. Chat with Document **Endpoint:** `POST /api/v1/demystify/chat` **Description:** Ask follow-up questions about an uploaded document. **Request Payload:** ```json { "session_id": "456e7890-e89b-12d3-a456-426614174001", "question": "What are the key terms I should be aware of in this contract?" } ``` **Response:** ```json { "success": true, "message": "Question answered successfully", "data": { "answer": "Based on the document, the key terms you should be aware of include: 1. Security Deposit - A refundable amount...", "session_id": "456e7890-e89b-12d3-a456-426614174001", "question": "What are the key terms I should be aware of in this contract?" }, "timestamp": "2024-01-15T10:30:00.000Z" } ``` ### 3. List Sessions **Endpoint:** `GET /api/v1/demystify/sessions` **Description:** List all active document analysis sessions. **Response:** ```json { "success": true, "message": "Found 1 active session(s)", "data": { "sessions": [ { "session_id": "456e7890-e89b-12d3-a456-426614174001", "filename": "rental_agreement.pdf", "upload_time": "2024-01-15T10:30:00.000Z" } ] }, "timestamp": "2024-01-15T10:30:00.000Z" } ``` ### 4. Delete Session **Endpoint:** `DELETE /api/v1/demystify/sessions/{session_id}` **Description:** Delete a document analysis session and its associated files. **Response:** ```json { "success": true, "message": "Session and associated files deleted successfully", "timestamp": "2024-01-15T10:30:00.000Z" } ``` --- ## General Assistant API ### Chat with AI Assistant **Endpoint:** `POST /api/v1/assistant/chat` **Description:** Get AI-powered assistance for general questions. **Request Payload:** ```json { "question": "What are my rights as a domestic worker in India?" } ``` **Response:** ```json { "success": true, "message": "Response generated successfully", "data": { "response": "As a domestic worker in India, you have several important rights: 1. Right to minimum wages as per state regulations...", "question": "What are my rights as a domestic worker in India?" }, "timestamp": "2024-01-15T10:30:00.000Z" } ``` --- ## Media Processing API ### 1. Upload Video Consent **Endpoint:** `POST /api/v1/media/upload-video` **Description:** Upload a video consent file for a specific contract. **Request:** Multipart form data - `file`: Video file (MP4, AVI, MOV - max 100MB) - `contract_id`: Contract identifier - `consent_text`: Text of the consent being recorded **Response:** ```json { "success": true, "message": "Video consent uploaded successfully", "data": { "video_path": "video_consents/consent_123e4567-e89b-12d3-a456-426614174000_789.mp4", "contract_id": "123e4567-e89b-12d3-a456-426614174000", "filename": "consent_123e4567-e89b-12d3-a456-426614174000_789.mp4", "size": 2048576, "consent_text": "I agree to the terms and conditions of this employment contract" }, "timestamp": "2024-01-15T10:30:00.000Z" } ``` ### 2. Get Contract Videos **Endpoint:** `GET /api/v1/media/videos/{contract_id}` **Description:** Get all video consents for a specific contract. **Response:** ```json { "success": true, "message": "Found 1 video(s) for contract", "data": { "videos": [ { "filename": "consent_123e4567-e89b-12d3-a456-426614174000_789.mp4", "path": "video_consents/consent_123e4567-e89b-12d3-a456-426614174000_789.mp4", "size": 2048576, "created": "2024-01-15T10:30:00.000Z" } ] }, "timestamp": "2024-01-15T10:30:00.000Z" } ``` --- ## System Endpoints ### Root Endpoint **Endpoint:** `GET /` **Description:** API root endpoint with comprehensive information. **Response:** ```json { "message": "Jan-Contract Enhanced API", "version": "2.1.0", "description": "Comprehensive API for India's informal workforce", "features": [ "Contract Generation", "Scheme Discovery", "Document Analysis", "AI Assistant", "Media Processing" ], "endpoints": { "health": "/health", "contracts": "/api/v1/contracts/generate", "schemes": "/api/v1/schemes/find", "demystify": "/api/v1/demystify/upload", "assistant": "/api/v1/assistant/chat", "media": "/api/v1/media/upload-video" }, "docs": "/docs", "redoc": "/redoc" } ``` --- ## Error Handling ### Standard Error Response Format ```json { "success": false, "message": "Request failed", "error": "Detailed error message", "timestamp": "2024-01-15T10:30:00.000Z" } ``` ### Common HTTP Status Codes - `200 OK`: Request successful - `400 Bad Request`: Invalid request data - `404 Not Found`: Resource not found - `422 Unprocessable Entity`: Validation error - `500 Internal Server Error`: Server error ### Validation Errors ```json { "success": false, "message": "Request failed", "error": [ { "loc": ["body", "user_request"], "msg": "ensure this value has at least 10 characters", "type": "value_error.any_str.min_length" } ], "timestamp": "2024-01-15T10:30:00.000Z" } ``` --- ## Testing Examples ### Using cURL #### 1. Generate Contract ```bash curl -X POST "http://localhost:8000/api/v1/contracts/generate" \ -H "Content-Type: application/json" \ -d '{ "user_request": "I need a contract for hiring a domestic helper for 6 months with weekly payment of Rs. 3000" }' ``` #### 2. Find Schemes ```bash curl -X POST "http://localhost:8000/api/v1/schemes/find" \ -H "Content-Type: application/json" \ -d '{ "user_profile": "I am a 35-year-old woman from rural Maharashtra, working as a daily wage laborer, looking for financial assistance schemes" }' ``` #### 3. Upload Document ```bash curl -X POST "http://localhost:8000/api/v1/demystify/upload" \ -F "file=@/path/to/document.pdf" ``` #### 4. Chat with Assistant ```bash curl -X POST "http://localhost:8000/api/v1/assistant/chat" \ -H "Content-Type: application/json" \ -d '{ "question": "What are my rights as a domestic worker in India?" }' ``` ### Using Python requests ```python import requests import json # Base URL BASE_URL = "http://localhost:8000" # 1. Generate Contract contract_data = { "user_request": "I need a contract for hiring a domestic helper for 6 months with weekly payment of Rs. 3000" } response = requests.post(f"{BASE_URL}/api/v1/contracts/generate", json=contract_data) print(response.json()) # 2. Find Schemes scheme_data = { "user_profile": "I am a 35-year-old woman from rural Maharashtra, working as a daily wage laborer, looking for financial assistance schemes" } response = requests.post(f"{BASE_URL}/api/v1/schemes/find", json=scheme_data) print(response.json()) # 3. Chat with Assistant chat_data = { "question": "What are my rights as a domestic worker in India?" } response = requests.post(f"{BASE_URL}/api/v1/assistant/chat", json=chat_data) print(response.json()) # 4. Upload Document with open("document.pdf", "rb") as f: files = {"file": f} response = requests.post(f"{BASE_URL}/api/v1/demystify/upload", files=files) print(response.json()) ``` ### Using JavaScript/Fetch ```javascript const BASE_URL = "http://localhost:8000"; // 1. Generate Contract async function generateContract() { const response = await fetch(`${BASE_URL}/api/v1/contracts/generate`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ user_request: "I need a contract for hiring a domestic helper for 6 months with weekly payment of Rs. 3000" }) }); const data = await response.json(); console.log(data); } // 2. Find Schemes async function findSchemes() { const response = await fetch(`${BASE_URL}/api/v1/schemes/find`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ user_profile: "I am a 35-year-old woman from rural Maharashtra, working as a daily wage laborer, looking for financial assistance schemes" }) }); const data = await response.json(); console.log(data); } // 3. Chat with Assistant async function chatWithAssistant() { const response = await fetch(`${BASE_URL}/api/v1/assistant/chat`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ question: "What are my rights as a domestic worker in India?" }) }); const data = await response.json(); console.log(data); } ``` --- ## Rate Limits & Best Practices ### Rate Limits - No explicit rate limits implemented - Recommended: 100 requests per minute per IP - Large file uploads may take longer processing time ### Best Practices 1. **Always check the health endpoint** before making requests 2. **Use appropriate content types** for different endpoints 3. **Handle errors gracefully** with proper error checking 4. **Store session IDs** for document chat functionality 5. **Validate file sizes** before upload (50MB for PDFs, 100MB for videos) 6. **Use HTTPS in production** for security ### File Upload Guidelines - **PDF files**: Maximum 50MB, only PDF format - **Video files**: Maximum 100MB, formats: MP4, AVI, MOV - **File naming**: Avoid special characters, use alphanumeric names --- ## Support & Contact - **API Documentation**: `/docs` (Swagger UI) - **Alternative Docs**: `/redoc` (ReDoc) - **Health Check**: `/health` - **Support Email**: support@jan-contract.com - **Version**: 2.1.0 --- *This documentation is automatically generated and updated with each API version release.*