# gdp-admin/glair-vision-node-sdk architecture

> Architecture diagram of the GitHub repository gdp-admin/glair-vision-node-sdk, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/gdp-admin/glair-vision-node-sdk
- Repository: https://github.com/gdp-admin/glair-vision-node-sdk

## Overview

GLAIR Vision is a Node.js client SDK for sending OCR, face-biometric, identity, and session requests to the GLAIR Vision API. The principal workflow is an application calling a Vision capability with an image or session parameters, the SDK preparing and validating the request, and the API returning a result. OCR covers many document types; face workflows include matching and liveness. The README documents identity and additional session capabilities, but their implementations were not sampled, so their internal request wiring is not expanded here.

Main entry points: [`src/api/ocr.ts`](https://github.com/gdp-admin/glair-vision-node-sdk/blob/main/src/api/ocr.ts) (Document OCR), [`src/api/faceBio.ts`](https://github.com/gdp-admin/glair-vision-node-sdk/blob/main/src/api/faceBio.ts) (Face biometrics), [`src/api/sessions/ktpSessions.ts`](https://github.com/gdp-admin/glair-vision-node-sdk/blob/main/src/api/sessions/ktpSessions.ts) (KTP sessions), [`src/api/sessions/npwpSessions.ts`](https://github.com/gdp-admin/glair-vision-node-sdk/blob/main/src/api/sessions/npwpSessions.ts) (NPWP sessions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["SDK entry"]
  node_vision["Vision SDK<br/>[vision.ts]"]
end

subgraph group_capabilities["Vision capabilities"]
  node_ocr["Document OCR<br/>[ocr.ts]"]
  node_facebio["Face biometrics<br/>[faceBio.ts]"]
  node_identity["Identity<br/>[identity.ts]"]
  node_ktpsessions["KTP sessions<br/>[ktpSessions.ts]"]
  node_npwpsessions["NPWP sessions<br/>[npwpSessions.ts]"]
  node_passivesessions["Passive liveness sessions"]
  node_activesessions["Active liveness sessions"]
end

subgraph group_support["Request support"]
  node_config["Settings<br/>[config.ts]"]
  node_image["Image conversion<br/>[image.ts]"]
  node_validator["Input validation<br/>[validator.ts]"]
  node_transport["API transport<br/>[visionFetch.ts]"]
  node_logger["Logging<br/>[logger.ts]"]
end

subgraph group_contracts["Data contracts"]
  node_sessiontypes["Session contracts<br/>[session.ts]"]
  node_ocrtypes["OCR result contracts<br/>[common.ts]"]
end

node_application(("Application"))
node_visionapi["GLAIR Vision API"]
node_ocrresults["OCR results"]
node_bioresults["Biometric results"]
node_sessionresults["Session results"]

node_application -->|"uses"| node_vision
node_vision -->|"exposes"| node_ocr
node_vision -->|"exposes"| node_facebio
node_vision -.->|"exposes"| node_identity
node_ocr -->|"exposes"| node_ktpsessions
node_ocr -->|"exposes"| node_npwpsessions
node_facebio -->|"exposes"| node_passivesessions
node_facebio -->|"exposes"| node_activesessions
node_ocr -->|"converts images"| node_image
node_facebio -->|"converts images"| node_image
node_ocr -->|"validates input"| node_validator
node_ktpsessions -->|"validates parameters"| node_validator
node_npwpsessions -->|"validates parameters"| node_validator
node_ktpsessions -->|"uses contracts"| node_sessiontypes
node_npwpsessions -->|"uses contracts"| node_sessiontypes
node_ocr -->|"gets settings"| node_config
node_facebio -->|"gets settings"| node_config
node_ktpsessions -->|"gets settings"| node_config
node_npwpsessions -->|"gets settings"| node_config
node_passivesessions -->|"gets settings"| node_config
node_activesessions -->|"gets settings"| node_config
node_ocr -->|"sends requests"| node_transport
node_facebio -->|"sends requests"| node_transport
node_ktpsessions -->|"sends requests"| node_transport
node_npwpsessions -->|"sends requests"| node_transport
node_passivesessions -->|"sends requests"| node_transport
node_activesessions -->|"sends requests"| node_transport
node_transport -->|"calls API"| node_visionapi
node_ocr -->|"returns OCR data"| node_ocrresults
node_facebio -->|"returns biometric data"| node_bioresults
node_ktpsessions -->|"returns session data"| node_sessionresults
node_npwpsessions -->|"returns session data"| node_sessionresults
node_passivesessions -->|"returns session data"| node_sessionresults
node_activesessions -->|"returns session data"| node_sessionresults
node_ocrtypes -->|"types results"| node_ocr
node_ocr -->|"logs activity"| node_logger
node_facebio -->|"logs activity"| node_logger
node_ktpsessions -->|"logs activity"| node_logger
node_npwpsessions -->|"logs activity"| node_logger
node_passivesessions -->|"logs activity"| node_logger
node_activesessions -->|"logs activity"| node_logger

click node_vision "https://github.com/gdp-admin/glair-vision-node-sdk/blob/main/src/api/vision.ts"
click node_ocr "https://github.com/gdp-admin/glair-vision-node-sdk/blob/main/src/api/ocr.ts"
click node_facebio "https://github.com/gdp-admin/glair-vision-node-sdk/blob/main/src/api/faceBio.ts"
click node_identity "https://github.com/gdp-admin/glair-vision-node-sdk/blob/main/src/api/identity.ts"
click node_ktpsessions "https://github.com/gdp-admin/glair-vision-node-sdk/blob/main/src/api/sessions/ktpSessions.ts"
click node_npwpsessions "https://github.com/gdp-admin/glair-vision-node-sdk/blob/main/src/api/sessions/npwpSessions.ts"
click node_passivesessions "https://github.com/gdp-admin/glair-vision-node-sdk/blob/main/src/api/sessions/passiveLivenessSessions.ts"
click node_activesessions "https://github.com/gdp-admin/glair-vision-node-sdk/blob/main/src/api/sessions/activeLivenessSessions.ts"
click node_config "https://github.com/gdp-admin/glair-vision-node-sdk/blob/main/src/api/config.ts"
click node_image "https://github.com/gdp-admin/glair-vision-node-sdk/blob/main/src/util/image.ts"
click node_validator "https://github.com/gdp-admin/glair-vision-node-sdk/blob/main/src/util/validator.ts"
click node_transport "https://github.com/gdp-admin/glair-vision-node-sdk/blob/main/src/util/visionFetch.ts"
click node_logger "https://github.com/gdp-admin/glair-vision-node-sdk/blob/main/src/util/logger.ts"
click node_sessiontypes "https://github.com/gdp-admin/glair-vision-node-sdk/blob/main/src/types/session.ts"
click node_ocrtypes "https://github.com/gdp-admin/glair-vision-node-sdk/blob/main/src/types/common.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_vision toneBlue
class node_ocr,node_facebio,node_identity,node_ktpsessions,node_npwpsessions,node_passivesessions,node_activesessions toneAmber
class node_config,node_image,node_validator,node_transport,node_logger,node_visionapi toneMint
class node_sessiontypes,node_ocrtypes toneRose
class node_application,node_ocrresults,node_bioresults,node_sessionresults toneIndigo
```

## Components

### SDK entry

- [Vision SDK](https://github.com/gdp-admin/glair-vision-node-sdk/blob/main/src/api/vision.ts): `src/api/vision.ts`

### Vision capabilities

- [Document OCR](https://github.com/gdp-admin/glair-vision-node-sdk/blob/main/src/api/ocr.ts): `src/api/ocr.ts`
- [Face biometrics](https://github.com/gdp-admin/glair-vision-node-sdk/blob/main/src/api/faceBio.ts): `src/api/faceBio.ts`
- [Identity](https://github.com/gdp-admin/glair-vision-node-sdk/blob/main/src/api/identity.ts): `src/api/identity.ts`
- [KTP sessions](https://github.com/gdp-admin/glair-vision-node-sdk/blob/main/src/api/sessions/ktpSessions.ts): `src/api/sessions/ktpSessions.ts`
- [NPWP sessions](https://github.com/gdp-admin/glair-vision-node-sdk/blob/main/src/api/sessions/npwpSessions.ts): `src/api/sessions/npwpSessions.ts`
- [Passive liveness sessions](https://github.com/gdp-admin/glair-vision-node-sdk/blob/main/src/api/sessions/passiveLivenessSessions.ts): `src/api/sessions/passiveLivenessSessions.ts`
- [Active liveness sessions](https://github.com/gdp-admin/glair-vision-node-sdk/blob/main/src/api/sessions/activeLivenessSessions.ts): `src/api/sessions/activeLivenessSessions.ts`

### Request support

- [Settings](https://github.com/gdp-admin/glair-vision-node-sdk/blob/main/src/api/config.ts): `src/api/config.ts`
- [Image conversion](https://github.com/gdp-admin/glair-vision-node-sdk/blob/main/src/util/image.ts): `src/util/image.ts`
- [Input validation](https://github.com/gdp-admin/glair-vision-node-sdk/blob/main/src/util/validator.ts): `src/util/validator.ts`
- [API transport](https://github.com/gdp-admin/glair-vision-node-sdk/blob/main/src/util/visionFetch.ts): `src/util/visionFetch.ts`
- [Logging](https://github.com/gdp-admin/glair-vision-node-sdk/blob/main/src/util/logger.ts): `src/util/logger.ts`

### Data contracts

- [Session contracts](https://github.com/gdp-admin/glair-vision-node-sdk/blob/main/src/types/session.ts): `src/types/session.ts`
- [OCR result contracts](https://github.com/gdp-admin/glair-vision-node-sdk/blob/main/src/types/common.ts): `src/types/common.ts`

### Other components

- **Application**
- **GLAIR Vision API**
- **OCR results**
- **Biometric results**
- **Session results**

## Connections

- Application → Vision SDK: uses
- Vision SDK → Document OCR: exposes
- Vision SDK → Face biometrics: exposes
- Vision SDK → Identity: exposes
- Document OCR → KTP sessions: exposes
- Document OCR → NPWP sessions: exposes
- Face biometrics → Passive liveness sessions: exposes
- Face biometrics → Active liveness sessions: exposes
- Document OCR → Image conversion: converts images
- Face biometrics → Image conversion: converts images
- Document OCR → Input validation: validates input
- KTP sessions → Input validation: validates parameters
- NPWP sessions → Input validation: validates parameters
- KTP sessions → Session contracts: uses contracts
- NPWP sessions → Session contracts: uses contracts
- Document OCR → Settings: gets settings
- Face biometrics → Settings: gets settings
- KTP sessions → Settings: gets settings
- NPWP sessions → Settings: gets settings
- Passive liveness sessions → Settings: gets settings
- Active liveness sessions → Settings: gets settings
- Document OCR → API transport: sends requests
- Face biometrics → API transport: sends requests
- KTP sessions → API transport: sends requests
- NPWP sessions → API transport: sends requests
- Passive liveness sessions → API transport: sends requests
- Active liveness sessions → API transport: sends requests
- API transport → GLAIR Vision API: calls API
- Document OCR → OCR results: returns OCR data
- Face biometrics → Biometric results: returns biometric data
- KTP sessions → Session results: returns session data
- NPWP sessions → Session results: returns session data
- Passive liveness sessions → Session results: returns session data
- Active liveness sessions → Session results: returns session data
- OCR result contracts → Document OCR: types results
- Document OCR → Logging: logs activity
- Face biometrics → Logging: logs activity
- KTP sessions → Logging: logs activity
- NPWP sessions → Logging: logs activity
- Passive liveness sessions → Logging: logs activity
- Active liveness sessions → Logging: logs activity
