npm package: @ikonintegration/mod-license-client
Description: Shared module license API client
Author: Ikon Integration
Latest version: 2.0.47

# module-license-client ![Node.js Package](https://github.com/ikon-integration/module-license-client/workflows/Node.js%20Package/badge.svg)

License module nodejs API client

### Overall

- ![npm](https://img.shields.io/npm/dy/@ikonintegration/mod-license-client) ![npm](https://img.shields.io/npm/v/@ikonintegration/mod-license-client) ![npm (tag)](https://img.shields.io/npm/v/@ikonintegration/mod-license-client/latest) ![Libraries.io dependency status for latest release, scoped npm package](https://img.shields.io/librariesio/release/npm/@ikonintegration/mod-license-client)
- ![GitHub commit activity](http://sprice.redirectme.net:8555/github/commit-activity/m/ikon-integration/module-license-client)
- ![GitHub last commit](http://sprice.redirectme.net:8555/github/last-commit/ikon-integration/module-license-client)

### How to Use

```
import SMLicense from '@ikonintegration/mod-license-client';

const API = new SMLicense({
  port: 9090, //isOptional
  endpoint: SharedModules_LicenseEndpoint,
  //Must be specified when using service routes
  apiKey: config.examProvider.key, //API token on IDM.AppID format (generate from APIKey at https://runkit.com/gwdp/idm-appid-v1)
  //Must be specified when using admin or user routes
  authorizationToken: '', -- optional, IDM JWT for shared module admins and user routes -- Accepts a function to be called async and return the token
  tenantID: '' 
});

//Revoke License
const resp = await API.license.revokeLicense(ID);
if (!resp || resp.statusCode != 200) {
  return ERROR:
} return SUCCESS;

```

### Headers
The following header must be specified in every request!
- Authorization

### Available API methods

**Product:**
- API.product.createProduct(productObj) - Admin only
- API.product.updateProduct(productObj) - Admin only
- API.product.deleteProduct(productID) - Admin only
- API.product.getProduct(productID) - Admin only
- API.product.getAllProducts() - Admin, users and services

**Order:**
- API.order.getProviderFromProduct(productObject) - Return provider from product
- API.order.isMonerisEnabledForProduct(productObject) - Return of Moneris is enabled for this provider.
- API.order.preOrder(orderObj) - Admin and users
- API.order.beginOrder(orderObj, provider) - Admin and users
- API.order.completeOrder(orderObj, provider) - Admin and users
- API.order.refundOrder(orderObj, provider) - Admin and users
- API.order.cancelOrder(orderObj, provider) - Admin and users
- API.order.getOrder(externalID, orderID) - Admin, users and services
- API.order.getOrdersByExternalID(externalID) - Admin, users and services
- API.order.getOrdersFromToTimestamp(from, to /*timestamps*/) - Admin and services
- API.order.getOrderReceipt(externalID, orderID) - Admin, users and services
- API.order.getPendingOrders() - Admin and services
- API.order.submitInvoiceOrder(orderObj) - Admin and services
- API.order.approveInvoiceOrder(orderObj) - Admin and services
- API.order.rejectInvoiceOrder(orderObj) - Admin and services
- API.order.getOrderByID(orderID) - Admin and services

**License:**
- API.license.redeemLicense(activationCode, productID) - Service only
- API.license.redeemLicenseByProduct(productID, externalID) - Service only
- API.license.revokeLicense(licenseID) - Admin only
- API.license.revokeLicenses(licenseIDs) - Admin only
- API.license.getLicenseByID(licenseID) - Admin, users and services
- API.license.getLicense(licenseID, externalID) - Admin, users and services
- API.license.getLicensesByExternalID(externalID) - Admin, users and services
- API.license.getLicensesByExternalIDs(externalIDs) - Admin and services

**License Consumption:**
- API.licenseConsumption.getLicenseConsumption(licenseID, consumptionID) - User, Admin and services
- API.licenseConsumption.getLicenseConsumptions(consumptionIDs) - User, Admin and services

**Voucher:**
- API.voucher.createVoucher(body, optionalVoucherID) - Admin only
- API.voucher.updateVoucher(body, voucherID) - Admin only
- API.voucher.deleteVoucher(voucherID) - Admin only
- API.voucher.getVoucher(voucherID) - Admin only
- API.voucher.verifyVoucher(voucherID) - Admin, users and services
- API.voucher.getVouchers() - Admin only

**Key:**
- API.key.getAvailableKeys(externalID, numberOfLicenses) - Admin, users and services
- API.key.getKey(activationKey) - Service only

**Vault**
- API.vault.getVaultNonce(externalID, userInfo) - Sysadmins, Admins and users (no services here)
- API.vault.setVaultDefaultPaymentMethod(paymentMethodNonce, externalID) - Sysadmins, Admins and users (no services here)