Documents (api/documents.ts)¶
Endpoint Overview¶
Manages document storage and retrieval using Azure Blob Storage. Supports uploading new documents and retrieving all documents for a user. Handles base64 encoded documents and provides document metadata.
Request Handlers¶
GET¶
- Query Parameters:
- Response:
- Status: 200 OK, 400 Bad Request, 500 Internal Server Error
POST¶
- Query Parameters:
- Body:
- Response: "Uploaded Successfully"
- Status: 201 Created, 400 Bad Request, 500 Internal Server Error
Error Handling¶
if (!userID) {
res.status(400).send("Missing userID parameter");
return;
}
try {
// Upload or retrieve operations
} catch (error) {
console.error(`Error retrieving documents for userID ${userID}:`, error);
res.status(500).send("Error retrieving documents");
}
Common errors: - 400: Missing userID parameter - 500: Azure storage operation failure - 500: Document retrieval error - 400: Invalid document format
Usage Example¶
// Upload document
const uploadResponse = await fetch("/api/documents?userID=123", {
method: "POST",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
fileName: "document.pdf",
base64String: "base64EncodedContent..."
})
});
// Retrieve documents
const getResponse = await fetch("/api/documents?userID=123");
const documents = await getResponse.json();
Implementation Details¶
- Uses Azure Blob Storage
- Handles base64 encoded documents
- Streams large files efficiently
- 10MB request size limit
- Manages container per user
- Provides document metadata
- Handles async operations
- Uses secure connection string
- Includes buffer management
- Implements stream handling
Pages/Components Referenced By¶
- Document Table - Document listing
- Document Processor - Upload handling
- Save State API - Document storage
- Start Processing API - Document processing
Notes¶
- Requires Azure Storage configuration
- Uses fixed container name
- Handles large documents
- Returns base64 encoded content
- Includes creation timestamps
- Supports multiple file types
- Lists all user documents
- Efficient stream processing
- Secure blob operations