npm package: @idpartner/bank-internal-services-api
Description: `@idpartner/bank-internal-services-api` is an auto-generated Typescript HTTP client for interacting with the Bank Internal Services API.
Latest version: 0.0.2

# @idpartner/bank-internal-services-api
`@idpartner/bank-internal-services-api` is an auto-generated Typescript HTTP client for interacting with the Bank Internal Services API.

## Overview
This package provides a convenient way to integrate the IDPartner Trust Platform with the pre-existing Bank Internal Services. It provides functions to get users, get devices, upsert devices, send push notifications, validate mobile access tokens, etc.

The package was generated using the [openapi-generator/typescript-axios](https://openapi-generator.tech/docs/generators/typescript-axios/) using the [Bank Internal Services OpenAPI spec](https://api-docs.idpartner.com/bank-internal-services/raw.yml). The UI for the OpenAPI spec can be found [here](https://api-docs.idpartner.com/bank-internal-services).

To re-generate this library using the latest version of the [openapi-generator/typescript-axios](https://openapi-generator.tech/docs/generators/typescript-axios/) and the [Bank Internal Services OpenAPI spec](https://api-docs.idpartner.com/bank-internal-services/raw.yml) run:
```bash
docker run --rm  --pull=always \
  -v ${PWD}:/bank-internal-services openapitools/openapi-generator-cli generate \
  -i https://api-docs.idpartner.com/bank-internal-services/raw.yml \
  -g typescript-axios \
  -o /bank-internal-services/ \
  --additional-properties withNodeImports=true \
  --additional-properties supportsES6=true \
  --additional-properties useSingleRequestParameter=true \
  --additional-properties apiPackage=api \
  --additional-properties modelPackage=models \
  --additional-properties withSeparateModelsAndApi=true

# Make sure you run the following to allow the generated client work with dynamic bank internal services URLs
sed -i '' 's/const localVarPath \= /const localVarPath \= options\.url \|\| /g' api/bank-internal-services-api.ts
```

## Installation
Install the package using npm:
```bash
npm install @idpartner/bank-internal-services-api
```

Or, if you prefer yarn, install the package running:
```bash
yarn add @idpartner/bank-internal-services-api
```

## Usage
Import and initialize the client:
```javascript
import { BankInternalServicesApi } from '@idpartner/bank-internal-services-api';

const bankInternalServicesApi = BankInternalServicesApi();
```

If you already have an axios instance, you can specify it to avoid generating a new one:
```javascript
import axios from 'axios';
import { BankInternalServicesApi } from '@idpartner/bank-internal-services-api';

const axiosClient = axios.create(customAxiosConfig);
const bankInternalServicesApi = BankInternalServicesApi(undefined, undefined, axiosClient);
```

## Examples
*The initialization of some consts was ommited to make this shorter*
```javascript
import JOSEWrapper from '@idpartner/jose-wrapper';

// These headers will be forwarded to the Bank Internal Services API
// as X-FAPI-Interaction-ID and X-Verification-ID. They should be logged
// in the bank services for debugging and tracing.
const tracingHeaders = {
  xFAPIInteractionID,
  xVerificationID
};

// Generate a 1 minute valid auth token with required claims
const authToken = await JOSEWrapper.createJWS({
  claims: {
    sub: subject,
    iss: oidcServiceURL,
    aud: bankInternalServicesURL,
    iat: Math.floor(Date.now() / 1000),
    exp: Math.floor((Date.now() / 1000) + 60),
  }
}, jwks);

// Define custom axios config
const axiosConfig = {
  // Set request timeout to 30 seconds
  timeout: 30_000

  // Set custom headers
  headers: {
    'Content-Type': 'application/json',
    'Accept': 'application/json',
    'Authorization': authToken,
  },
};

// Verify Mobile Access Token
await bankInternalServicesApi.verifyMobileAccessToken({
  ...tracingHeaders,
  tokenValidationRequest: { access_token: accessToken }
}, axiosConfig);

// Get User by ID
await bankInternalServicesApi.getUser({
  ...tracingHeaders,
  userId
}, axiosConfig);

// Get Device by ID
await bankInternalServicesApi.getDevice({
  ...tracingHeaders,
  deviceId
}, axiosConfig);

// Upsert Device
await bankInternalServicesApi.upsertDevice({
  ...tracingHeaders,
  deviceUpsertRequest: payload
}, axiosConfig);

// Send Push Authentication
await bankInternalServicesApi.sendPushAuthentication({
  ...tracingHeaders,
  pushAuthenticationRequest: {
    device_token: deviceToken,
    challenge_reference_url: challengeReferenceURL,
    challenge_expires_at: challengeExpiresAt,
    relying_party_name: relyingPartyName,
  }
}, axiosConfig);
```

## Documentation for API Endpoints
For more detailed information about the API endpoints, models, and responses, refer to the provided OpenAPI specification hosted
at https://api-docs.idpartner.com/bank-internal-services


## Building
To build and compile the typescript sources to javascript use:
```
npm install
npm run build
```

## Publishing
First build the package then run ```npm publish --access=public```

## Support
For support, please contact [support@idpartner.com](support@idpartner.com).