Overview

The ID Document model extracts and structures information from various identification documents including driver licenses, identification cards, and other government-issued IDs.

Model Details

  • Model ID: ID_DOCUMENT
  • Version: GA
  • Release Date: November 30, 2024

Schema Structure

Root Level Fields

FieldTypeDescription
FirstNamestring?Given name
LastNamestring?Surname
DateOfBirthstring?Date of birth (ISO format)
DateOfExpirationstring?Date of expiration (ISO format)
DateOfIssuestring?Date of issue (ISO format)
DocumentNumberstring?Identity document number
DocumentDiscriminatorstring?Document discriminator
CountryRegionstring?Country or region code
Regionstring?State or province
Addressstring?Address
Sexstring?Sex
EyeColorstring?Eye color
HairColorstring?Hair color
Heightstring?Height
Weightstring?Weight
Restrictionsstring?Restrictions
Endorsementsstring?Endorsements
VehicleClassificationsstring?Vehicle classification

Type Definitions

import type {
  IdDocument,
  IdDocumentResponse,
  StrictIdDocumentResponse
} from '@your-package/models';

Validation Rules

Basic Validation

  • All fields are optional by default

Strict Validation

The following fields are required in strict mode:

  • DocumentNumber
  • FirstName
  • LastName
  • DateOfBirth

Example Usage

import { validateIdDocument } from '@your-package/models';

// Example ID document data
const documentData = {
  FirstName: "JOHN",
  LastName: "DOE",
  DocumentNumber: "123456789",
  DateOfBirth: "1990-01-01",
  DateOfExpiration: "2030-01-01",
  Region: "Washington",
  Address: "123 Main St, Seattle, WA 98101"
};

// Validate the document
const validatedDocument = validateIdDocument(documentData);

// Access validated data through result property
console.log(validatedDocument.result.DocumentNumber);

Date Handling

The model accepts dates in two formats:

  • ISO 8601 datetime strings
  • YYYY-MM-DD format

All dates are converted to ISO format during validation.

Error Handling

try {
  const validatedDocument = validateIdDocument(documentData);
} catch (error) {
  if (error.errors?.[0]?.path.includes('DocumentNumber')) {
    // Handle invalid document number
  }
  if (error.errors?.[0]?.path.includes('DateOfBirth')) {
    // Handle invalid date of birth
  }
}

Best Practices

  1. Always validate documents:
const document = validateIdDocument(documentData);
  1. Handle dates consistently:
const expirationDate = new Date(document.result.DateOfExpiration);
  1. Handle optional fields appropriately:
const region = document.result.Region || 'Unknown';
  1. Access fields through the result property:
const fullName = `${document.result.FirstName} ${document.result.LastName}`;
  1. Validate required fields in strict mode:
if (!document.result.DocumentNumber || !document.result.FirstName) {
  // Handle missing required fields
}