@vulog/aima-document
Version:
User document management — upload, review, and status tracking.
141 lines (101 loc) • 3.47 kB
Markdown
# @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`.