UNPKG

@vulog/aima-document

Version:

User document management — upload, review, and status tracking.

141 lines (101 loc) 3.47 kB
# @vulog/aima-document User document management — upload, review, and status tracking. ## Installation ```sh npm install @vulog/aima-document @vulog/aima-client @vulog/aima-core ``` ## Usage ```ts import { getClient } from '@vulog/aima-client'; import { createOrUpdateDocument, getUserDocuments, updateDocumentStatus, deleteDocument } from '@vulog/aima-document'; const client = getClient({ /* client options */ }); const doc = await createOrUpdateDocument(client, 'user-uuid', { documentType: 'DRIVING_LICENSE', documentNumber: 'AB123456', }); ``` ## API Reference ### createOrUpdateDocument ```ts createOrUpdateDocument(client: Client, userId: string, document: DocumentBody): Promise<DocumentFull> ``` Creates or updates a document for a user. `userId` must be a UUID. **Params:** `client`Authenticated AIMA client; `userId`UUID; `document` — document data including required `documentType` **Returns:** `Promise<DocumentFull>` --- ### getUserDocuments ```ts getUserDocuments( client: Client, userId: string, types?: PersonalInformationDocumentType[] ): Promise<DocumentSummary> ``` Returns all documents for a user. `userId` must be a UUID. `types` currently only supports `'DOCUMENT_NUMBER_1'`. **Params:** `client`Authenticated AIMA client; `userId`UUID; `types` — optional filter **Returns:** `Promise<DocumentSummary>` --- ### updateDocumentStatus ```ts updateDocumentStatus( client: Client, userId: string, documentId: number, document: DocumentStatusReview ): Promise<DocumentFull> ``` Updates the review status of a document. `userId` must be a UUID; `documentId` must be a non-negative integer. **Params:** `client`Authenticated AIMA client; `userId`UUID; `documentId` — non-negative integer; `document` — status and reviewer **Returns:** `Promise<DocumentFull>` --- ### deleteDocument ```ts deleteDocument(client: Client, userId: string, documentId: number): Promise<void> ``` Deletes a document. `userId` must be a UUID; `documentId` must be a positive integer. **Params:** `client`Authenticated AIMA client; `userId`UUID; `documentId` — positive integer **Returns:** `Promise<void>` ## Types ### DocumentStatus ```ts type DocumentStatus = 'MISSING' | 'VALID' | 'INVALID' | 'EXPIRED' | 'PENDING_REVIEW'; ``` ### DocumentFull ```ts interface DocumentFull { id: number; fleetId: string; userId: string; documentType: DocumentType; documentNumber?: string; expirationDate?: string; files: FileUrl[]; uploadUrls: FileUrl[]; status: DocumentStatus; reviewer?: string; issuingCountry?: string; issuingOffice?: string; issuingDate?: string; dlClass?: string; issuingSubdivision?: string; } ``` ### DocumentBody Partial of `DocumentFull` (excluding `id`, `fleetId`, `documentType`, `files`, `uploadUrls`, `status`, `reviewer`) with `documentType: string` as a required field. ### DocumentStatusReview ```ts interface DocumentStatusReview { status: DocumentStatus; reviewer: string; } ``` ### DocumentSummary ```ts interface DocumentSummary { documentTypes: DocumentType[]; documents: DocumentFull[]; documentByService: DocumentByService[]; documentByFranchise: DocumentByFranchise[] | null; } ``` Also exports: `DocumentType`, `FileUrl`, `DocumentByService`, `DocumentByFranchise`, `PersonalInformationDocumentType`, `PersonalInformationDocument`.