Document management module for the AIMA platform. This module provides functionality to manage user documents, including creation, updates, and status management.
npm install @vulog/aima-documentDocument management module for the AIMA platform. This module provides functionality to manage user documents, including creation, updates, and status management.
``bash`
npm install @vulog/aima-client @vulog/aima-core @vulog/aima-document
`javascript
import { getClient } from '@vulog/aima-client';
import { createOrUpdateDocument, getUserDocuments, updateDocumentStatus } from '@vulog/aima-document';
const client = getClient({
apiKey: 'your-api-key',
baseUrl: 'https://your-api-base-url',
clientId: 'your-client-id',
clientSecret: 'your-client-secret',
fleetId: 'your-fleet-id',
});
`
Create a new document or update an existing one for a user.
`javascript`
const document = await createOrUpdateDocument(client, {
entityId: 'user-uuid-here',
documentType: 'DRIVER_LICENSE',
fileData: 'base64-encoded-file-data',
fileName: 'license.pdf',
mimeType: 'application/pdf'
});
Parameters:
- client: AIMA client instancepayload
- : Document configuration objectentityId
- : User UUIDdocumentType
- : Type of document (e.g., 'DRIVER_LICENSE', 'ID_CARD', 'PASSPORT')fileData
- : Base64 encoded file datafileName
- : Name of the filemimeType
- : MIME type of the file
Retrieve all documents for a specific user.
`javascript`
const documents = await getUserDocuments(client, 'user-uuid-here');
Parameters:
- client: AIMA client instanceentityId
- : User UUID
Returns: Array of user documents
Update the status of a document.
`javascript`
const updatedDocument = await updateDocumentStatus(client, {
documentId: 'document-id-here',
status: 'APPROVED',
notes: 'Document verified successfully'
});
Parameters:
- client: AIMA client instancepayload
- : Status update configurationdocumentId
- : Document identifierstatus
- : New status ('PENDING', 'APPROVED', 'REJECTED')notes
- : Optional notes about the status change
`typescript`
interface Document {
id: string;
entityId: string;
documentType: string;
fileName: string;
mimeType: string;
fileSize: number;
status: 'PENDING' | 'APPROVED' | 'REJECTED';
uploadDate: string;
lastModified: string;
notes?: string;
}
Common document types include:
- DRIVER_LICENSE: Driver's licenseID_CARD
- : National ID cardPASSPORT
- : PassportINSURANCE
- : Insurance documentREGISTRATION
- : Vehicle registration
All functions include validation and will throw appropriate errors if:
- Required parameters are missing
- Invalid document types are provided
- File data is invalid
- User or document not found
`javascript
import { getClient } from '@vulog/aima-client';
import { createOrUpdateDocument, getUserDocuments, updateDocumentStatus } from '@vulog/aima-document';
import fs from 'fs';
const client = getClient({
apiKey: 'your-api-key',
baseUrl: 'https://your-api-base-url',
clientId: 'your-client-id',
clientSecret: 'your-client-secret',
fleetId: 'your-fleet-id',
});
async function documentWorkflow() {
try {
// Read and encode a file
const fileBuffer = fs.readFileSync('path/to/license.pdf');
const base64Data = fileBuffer.toString('base64');
// Create a new document
const document = await createOrUpdateDocument(client, {
entityId: 'user-uuid-here',
documentType: 'DRIVER_LICENSE',
fileData: base64Data,
fileName: 'license.pdf',
mimeType: 'application/pdf'
});
console.log('Document created:', document);
// Get all user documents
const documents = await getUserDocuments(client, 'user-uuid-here');
console.log('User documents:', documents);
// Update document status
const updatedDocument = await updateDocumentStatus(client, {
documentId: document.id,
status: 'APPROVED',
notes: 'License verified and approved'
});
console.log('Document status updated:', updatedDocument);
} catch (error) {
console.error('Document management error:', error);
}
}
`
`javascript
import { createOrUpdateDocument } from '@vulog/aima-document';
import fs from 'fs';
async function uploadDocument(client, filePath, documentType, entityId) {
try {
// Read file
const fileBuffer = fs.readFileSync(filePath);
const base64Data = fileBuffer.toString('base64');
// Get file info
const stats = fs.statSync(filePath);
const fileName = filePath.split('/').pop();
const mimeType = getMimeType(fileName);
// Upload document
return await createOrUpdateDocument(client, {
entityId,
documentType,
fileData: base64Data,
fileName,
mimeType
});
} catch (error) {
console.error('File upload error:', error);
throw error;
}
}
function getMimeType(fileName) {
const ext = fileName.split('.').pop().toLowerCase();
const mimeTypes = {
'pdf': 'application/pdf',
'jpg': 'image/jpeg',
'jpeg': 'image/jpeg',
'png': 'image/png',
'doc': 'application/msword',
'docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
};
return mimeTypes[ext] || 'application/octet-stream';
}
``