legalgpt-api / docs /API_REFERENCE.md
Lvvbaaal's picture
Deploy backend updates from local workspace
e809c21 verified
|
Raw History Blame Contribute Delete
8.39 kB
# 📜 SaulGPT API Reference Manual
**API Version:** 2.2.0
**Cloud Base URL:** `https://lvvbaaal-legalgpt-api.hf.space`
**Local Development Base URL:** `http://localhost:8000`
**Transport Security:** HTTPS / TLS 1.3
**Authentication Scheme:** Bearer Token (JWT, 30-day validity, HS256) + BYOK Header (`X-Groq-Api-Key`)
---
## 1. Authentication Endpoints
### `POST /api/auth/signup`
Registers a new user in the PostgreSQL (or local SQLite) database.
- **Request Body:**
```json
{
"username": "advocate_sharma",
"email": "sharma@lawchambers.in",
"password": "StrongPassword123!"
}
```
- **Response (200 OK):**
```json
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": {
"id": 1,
"username": "advocate_sharma",
"email": "sharma@lawchambers.in"
}
}
```
### `POST /api/auth/login`
Authenticates existing users and issues a JWT token.
- **Request Body:**
```json
{
"email": "sharma@lawchambers.in",
"password": "StrongPassword123!"
}
```
- **Response (200 OK):**
```json
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": {
"id": 1,
"username": "advocate_sharma",
"email": "sharma@lawchambers.in"
}
}
```
### `GET /api/auth/me`
Retrieves current authenticated profile.
- **Headers:** `Authorization: Bearer <token>`
- **Response (200 OK):**
```json
{
"id": 1,
"username": "advocate_sharma",
"email": "sharma@lawchambers.in"
}
```
---
## 2. BYOK (Bring Your Own Key) Security Endpoints
### `POST /api/keys/validate`
Validates a personal Groq API key format and live cloud quota.
- **Request Body:**
```json
{
"key": "gsk_live_sample_token..."
}
```
- **Response (200 OK):**
```json
{
"valid": true,
"message": "Key is active and authenticated with Groq API"
}
```
### `GET /api/keys/status`
Checks if the server environment has a default Groq key or requires BYOK.
- **Response (200 OK):**
```json
{
"server_key_present": true,
"byok_required": false
}
```
---
## 3. Core Chat & Document Pipeline Endpoints
### `POST /api/chat`
Main conversational query endpoint. Dispatches through the 6-layer RAG pipeline, triage state machine, or document drafting interview.
- **Headers:**
- `Content-Type: application/json`
- `Authorization: Bearer <token>` *(Optional; guest session assumed if omitted)*
- `X-Groq-Api-Key: gsk_...` *(Optional; forwards personal Groq quota)*
- **Request Body:**
```json
{
"message": "Draft a legal notice for cheque bounce of Rs 75,000",
"session_id": "session_uuid_or_custom_id",
"user_id": 1,
"conv_id": 6
}
```
- **Response (200 OK):**
```json
{
"response": "**Cheque Bounce Notice** has been drafted successfully.\n\n[Download your document](https://lvvbaaal-legalgpt-api.hf.space/api/document/session_uuid_or_custom_id)",
"mode_used": "document",
"confidence_score": 0.85,
"critic_reward_score": 0.95,
"critic_deliberation": null,
"is_hallucinating": false,
"citations": [],
"remapped_laws": {
"IPC": "BNS (Bharatiya Nyaya Sanhita, 2023)",
"CrPC": "BNSS (Bharatiya Nagarik Suraksha Sanhita, 2023)"
},
"meta": {
"document_ready": true,
"document_url": "https://lvvbaaal-legalgpt-api.hf.space/api/document/session_uuid_or_custom_id"
},
"conv_id": 6,
"interview_active": false,
"interview_complete": true
}
```
### `GET /api/document/{session_id}`
Streams a generated Microsoft Word (`.docx`) file as a download attachment.
- **Response Headers:**
- `Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document`
- `Content-Disposition: attachment; filename="legal_document_{session_id}.docx"`
- `Access-Control-Allow-Origin: *`
### `GET /api/draft/state/{session_id}`
Returns active interview state, current progress percentage, and missing fields.
- **Response (200 OK):**
```json
{
"state": "interviewing",
"doc_type": "cheque_bounce",
"progress_pct": 57,
"missing_fields": ["amount", "date_of_default"],
"is_active": true
}
```
### `DELETE /api/draft/state/{session_id}`
Cancels the active drafting interview and resets the session state.
### `DELETE /api/history/{session_id}`
Purges the in-memory conversation history for a given session.
---
## 4. Pre-Trial Studio & Moot Court Endpoints
### `POST /api/trial/start`
Initializes an adversarial Moot Court chamber.
- **Request Body:**
```json
{
"case_title": "State vs. Accused (Section 103 BNS)",
"scenario_description": "Accused allegedly assaulted complainant on 10 July 2024...",
"session_id": "trial_session_001"
}
```
- **Response (200 OK):**
```json
{
"trial_id": "trial_session_001",
"judge_summary": "Issue framed under Section 103 BNS 2023...",
"petitioner_strategy": "Argue premeditation and direct ocular evidence...",
"respondent_strategy": "Assert right of private defense under Section 34 BNS..."
}
```
### `POST /api/trial/turn`
Executes an adversarial interrogation turn with the judicial cross-examiner under Section 146 BSA 2023.
- **Request Body:**
```json
{
"trial_id": "trial_session_001",
"user_statement": "The witness claims he saw the incident under street lighting from 50 meters away.",
"role": "petitioner"
}
```
### `POST /api/trial/conclude`
Concludes the moot proceedings, tallies evidence scores, and renders a judicial verdict.
### `GET /api/trial/precedents/{case_id}`
Retrieves verbatim precedent holdings and coram metadata from the 50,000+ landmark judgment index.
---
## 5. Multimodal Evidence & Section 63 BSA Certification
### `POST /api/evidence/upload`
Uploads digital evidence (audio files, WhatsApp chat exports, invoice PDFs, cheque scans) for forensic verification.
- **Form Data:**
- `file`: Binary file upload
- `session_id`: Session string
- `evidence_type`: `audio` | `document` | `cheque`
- **Response (200 OK):**
```json
{
"evidence_id": "EVID-2024-99182",
"sha256_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"certificate": {
"certificate_id": "BSA-63-2024-99182",
"pdf_url": "/api/certificates/BSA-63-2024-99182.pdf"
},
"extracted_data": {
"summary": "Audio conversation between tenant and landlord regarding rent default."
}
}
```
### `GET /api/certificates/{cert_filename}`
Serves court-admissible Section 63 BSA PDF certificates.
---
## 6. Contract Risk Evaluator (Layer 6)
### `POST /api/upload`
Evaluates contracts and master agreements up to 25,000 characters in a single pass.
- **Form Data:**
- `file`: Contract document (`.pdf`, `.docx`, `.txt`)
- `session_id`: String
- **Response (200 OK):**
```json
{
"session_id": "contract_audit_001",
"evaluation": {
"overall_score": 72,
"risk_level": "Medium Risk",
"summary": "Standard SaaS subscription agreement with void post-termination non-compete.",
"void_clauses": [
{
"clause": "Clause 14.2: Employee non-compete for 2 years across India",
"statute": "Section 27, Indian Contract Act 1872",
"remedy": "Delete non-compete; replace with strict customer non-solicitation."
}
]
}
}
```
---
## 7. Cloud Persistence & Conversations
### `GET /api/conversations`
Lists past conversations for the authenticated user from Supabase.
- **Headers:** `Authorization: Bearer <token>`
- **Response (200 OK):**
```json
{
"conversations": [
{
"id": 6,
"title": "Cheque Bounce Notice under Section 138 NIA",
"created_at": "2026-10-26T14:44:43Z",
"updated_at": "2026-10-26T14:51:03Z"
}
],
"total": 1
}
```
### `GET /api/conversations/{id}`
Loads full turn history and structured metadata for conversation ID.
- **Headers:** `Authorization: Bearer <token>`
### `DELETE /api/conversations/{id}`
Permanently deletes a conversation and cascades through messages.
---
## 8. System Diagnostics
### `GET /api/health`
Checks server vitality and returns feature capabilities.
- **Response (200 OK):**
```json
{
"status": "SaulGPT API is Online ⚖️",
"version": "2.0.0",
"features": [
"6-layer RAG",
"Contract Evaluation",
"Interactive Drafter"
]
}
```