@cardscan.ai/cardscan-client
Version:
Typescript client for the CardScan API
232 lines (193 loc) • 15.2 kB
Markdown
## cardscan-ai/cardscan-client
Typescript API client for the CardScan API
Environment
- Node.js
- Webpack
- Browserify
Module system
- CommonJS
- ES6 module system
### Installation
```shell
npm install .ai/cardscan-client
```
```shell
yarn add .ai/cardscan-client
```
### Usage
```typescript
import { CardScanApi } from "@cardscan.ai/cardscan-client";
const cardScanApi = new CardScanApi({
/*
* By default the API will the production url if NODE_ENV is "production" and the sandbox url otherwise.
* You can also specify a url manually.
* */
// baseUrl: "https://api.cardscan.ai/v1",
apiKey: "<your-api-key>",
});
// Example: Eligibility checking
const checkEligibility = async () => {
try {
const response = await cardScanApi.checkEligibility("<card-id>", {
subscriber: {
firstName: "John",
lastName: "Doe",
dateOfBirth: "18020101",
},
provider: {
firstName: "John",
lastName: "Doe",
npi: "0123456789",
},
});
console.log("Eligibility check completed:", response);
} catch (e) {
console.error("Eligibility check failed:", e);
}
};
```
#### Card Scanning
For card scanning functionality, you need to configure the websocket URL and use the `fullScan` method:
```typescript
import { CardScanApi } from "@cardscan.ai/cardscan-client";
import { createReadStream } from "fs"; // Node.js only
const cardScanApi = new CardScanApi({
apiKey: "<your-api-key>",
// Websocket URL is required for fullScan method
websocketUrl: "wss://ws.cardscan.ai", // Use appropriate websocket URL for your environment
});
// Example: Full card scan with front and back images
const scanCard = async () => {
try {
// For Node.js - using file streams
const frontImage = createReadStream("./front-card-image.jpg");
const backImage = createReadStream("./back-card-image.jpg");
// For browser environments - using File objects from input[type="file"]
// const frontImage = document.getElementById('front-input').files[0];
// const backImage = document.getElementById('back-input').files[0];
// The fullScan method handles the entire process:
// 1. Creates a card with appropriate settings
// 2. Uploads images in the correct order (front first, then back)
// 3. Waits for processing completion via websockets
// 4. Returns the final card data with extracted information
const cardResult = await cardScanApi.fullScan({
frontImage: frontImage,
backImage: backImage, // Optional - for front-only scanning, omit this parameter
});
console.log("Card scan completed successfully:");
console.log("Card ID:", cardResult.cardId);
console.log("Card State:", cardResult.state);
console.log("Extracted Data:", cardResult.details);
// Access extracted information
if (cardResult.details) {
console.log("Member ID:", cardResult.details.memberId);
console.log("Plan Name:", cardResult.details.planName);
console.log("Insurance Company:", cardResult.details.insuranceCompany);
}
} catch (error) {
console.error("Card scan failed:", error);
}
};
// Example: Front-only card scan
const scanFrontOnly = async () => {
try {
const frontImage = createReadStream("./front-card-image.jpg");
const cardResult = await cardScanApi.fullScan({
frontImage: frontImage,
// No backImage parameter for front-only scanning
});
console.log("Front-only scan completed:", cardResult);
} catch (error) {
console.error("Front-only scan failed:", error);
}
};
const main = async () => {
await checkEligibility();
await scanCard();
await scanFrontOnly();
};
main();
```
**Important Notes for Card Scanning:**
- The `fullScan` method requires a websocket URL to be configured for real-time processing updates
- Always upload the front image first - the `fullScan` method handles this automatically
- The method supports both front-only and front+back scanning
- Image files can be File objects (browser), Blob objects, or Streams (Node.js)
- The method returns the complete card data once processing is finished
- Processing happens asynchronously and the method waits for completion using websockets
## Documentation for API Endpoints
All URIs are relative to *https://sandbox.cardscan.ai/v1*
| Method | HTTP request | Description | Documentation |
| ------------------------- | --------------------------------------------- | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| **cardPerformance** | **POST** /cards/{card_id}/performance | Card - Send performance data | [CardScanApi.md](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/CardScanApi.md#cardperformance) |
| **createCard** | **POST** /cards | Creates a new card | [CardScanApi.md](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/CardScanApi.md#createcard) |
| **createEligibility** | **POST** /eligibility | Create Eligibility Record | [CardScanApi.md](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/CardScanApi.md#createeligibility) |
| **deleteCardById** | **DELETE** /cards/{card_id} | Delete Card | [CardScanApi.md](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/CardScanApi.md#deletecardbyid) |
| **directUpload** | **POST** /cards/{card_id}/upload | Direct Upload | [CardScanApi.md](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/CardScanApi.md#directupload) |
| **generateCardUploadUrl** | **POST** /cards/{card_id}/generate-upload-url | Card - Generate Upload URL | [CardScanApi.md](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/CardScanApi.md#generatecarduploadurl) |
| **generateMagicLink** | **GET** /generate-magic-link | Generate Magic Link | [CardScanApi.md](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/CardScanApi.md#generatemagiclink) |
| **generateUploadUrl** | **GET** /generate-upload-url | Generate an upload URL | [CardScanApi.md](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/CardScanApi.md#generateuploadurl) |
| **getAccessToken** | **GET** /access-token | Access Token | [CardScanApi.md](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/CardScanApi.md#getaccesstoken) |
| **getCardById** | **GET** /cards/{card_id} | Get Card by ID | [CardScanApi.md](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/CardScanApi.md#getcardbyid) |
| **getEligibilityById** | **GET** /eligibility/{eligibility_id} | Get Eligibility | [CardScanApi.md](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/CardScanApi.md#geteligibilitybyid) |
| **listCards** | **GET** /cards | List Cards | [CardScanApi.md](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/CardScanApi.md#listcards) |
| **listEligibility** | **GET** /eligibility | List Eligibility | [CardScanApi.md](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/CardScanApi.md#listeligibility) |
| **searchCards** | **GET** /cards/search | Search Cards | [CardScanApi.md](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/CardScanApi.md#searchcards) |
| **setScanMetadata** | **POST** /scans/{scan_id}/metadata | Set Scan Metadata | [CardScanApi.md](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/CardScanApi.md#setscanmetadata) |
| **validateMagicLink** | **GET** /validate-magic-link | Validate Magic Link | [CardScanApi.md](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/CardScanApi.md#validatemagiclink) |
## Documentation For Models
- [Address](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/Address.md)
- [AddressResultInner](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/AddressResultInner.md)
- [AddressType](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/AddressType.md)
- [ApiErrorResponse](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/ApiErrorResponse.md)
- [CardApiResponse](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/CardApiResponse.md)
- [CardApiResponseDetails](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/CardApiResponseDetails.md)
- [CardApiResponseImages](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/CardApiResponseImages.md)
- [CardApiResponseImagesBack](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/CardApiResponseImagesBack.md)
- [CardApiResponseImagesFront](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/CardApiResponseImagesFront.md)
- [CardState](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/CardState.md)
- [CardWebsocketEvent](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/CardWebsocketEvent.md)
- [CoInsurance](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/CoInsurance.md)
- [CoPayment](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/CoPayment.md)
- [CoverageSummary](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/CoverageSummary.md)
- [CreateCardRequest](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/CreateCardRequest.md)
- [CreateCardRequestBackside](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/CreateCardRequestBackside.md)
- [CreateEligibilityRequest](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/CreateEligibilityRequest.md)
- [Deductible](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/Deductible.md)
- [DirectUpload200Response](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/DirectUpload200Response.md)
- [DirectUpload200ResponseMetadata](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/DirectUpload200ResponseMetadata.md)
- [DirectUploadRequest](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/DirectUploadRequest.md)
- [EligibilityApiResponse](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/EligibilityApiResponse.md)
- [EligibilityApiResponseEligibilityRequest](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/EligibilityApiResponseEligibilityRequest.md)
- [EligibilityApiResponseEligibilityRequestSubscriber](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/EligibilityApiResponseEligibilityRequestSubscriber.md)
- [EligibilityInfo](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/EligibilityInfo.md)
- [EligibilityState](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/EligibilityState.md)
- [EligibilitySummarizedResponse](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/EligibilitySummarizedResponse.md)
- [EligibilityWebsocketEvent](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/EligibilityWebsocketEvent.md)
- [GenerateCardUploadUrl200Response](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/GenerateCardUploadUrl200Response.md)
- [GenerateCardUploadUrlRequest](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/GenerateCardUploadUrlRequest.md)
- [GenerateMagicLink200Response](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/GenerateMagicLink200Response.md)
- [GetAccessToken200Response](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/GetAccessToken200Response.md)
- [GetAccessToken500Response](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/GetAccessToken500Response.md)
- [ListEligibility200Response](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/ListEligibility200Response.md)
- [MatchScore](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/MatchScore.md)
- [OOP](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/OOP.md)
- [PayerDetails](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/PayerDetails.md)
- [PlanDetails](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/PlanDetails.md)
- [ProviderDto](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/ProviderDto.md)
- [ResponseMetadata](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/ResponseMetadata.md)
- [ScanCaptureType](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/ScanCaptureType.md)
- [ScanMetadata](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/ScanMetadata.md)
- [ScanOrientation](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/ScanOrientation.md)
- [SearchCards200Response](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/SearchCards200Response.md)
- [Service](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/Service.md)
- [SubscriberDetails](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/SubscriberDetails.md)
- [SubscriberDto](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/SubscriberDto.md)
- [UploadParameters](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/UploadParameters.md)
- [ValidateMagicLink200Response](https://github.com/CardScan-ai/api-clients/blob/main/clients/cardscan-ts/docs/ValidateMagicLink200Response.md)
## Authorization
Authentication schemes defined for the API:
### bearerAuth
- **Type**: Bearer authentication (API Key)
- **API key parameter name**: Authorization
- **Location**: HTTP header