An open API service indexing awesome lists of open source software.

https://github.com/arevi/express-sql-license-api-template

A minimal template for a hardware based licensing and authentication system, written in TypeScript using Express & TypeORM (SQL).
https://github.com/arevi/express-sql-license-api-template

api express expressjs javascript licensing nodejs sql template typeorm typescript

Last synced: 8 months ago
JSON representation

A minimal template for a hardware based licensing and authentication system, written in TypeScript using Express & TypeORM (SQL).

Awesome Lists containing this project

README

          

# Express SQL License API Template
A minimal template for a hardware based licensing and authentication system, written in TypeScript using Express & SQL (TypeORM).

 
## Getting Started
1. Git clone https://github.com/arevi/express-sql-license-api-template.git
2. npm install

3. Rename the "database.sample.ts" file to "database.ts"
4. Provide your SQL database information within this file. The type is set to postgres by default (Recommended) but mySQL and many others are supported.

 
## NPM Commands
| Command | Effect |
| -------------- | ----------------------------------------------------------------- |
| `dev:start` | Launches the api in development mode, with hot reloading enabled. |
| `dev:webpack` | Compiles a development build of the project |
| `prod:webpack` | Compiles a production build of the project |

 
## API Specification
The following below is a minimal API specification to provide a quick overview of the template functionality.

 
### Auth/Verify (POST)
---
The verify route provides an API route for sending a license key and machineId. This route will check if the key is currently bound to a machine. If it is bound to a machine it will verify it is the current machine being requested. If the key is not bound, it will then be bound the requesting machine.

*Example Payload*
```
POST

{
"key":"123456",
"machineId":"000000"
}
```

 
### Auth/Reset (POST)
---
The request route provides a convenient API route for removing the association of a machineId to a license key.

*Example Payload*
```
POST

{
"key":"123456"
}
```

 
### Auth/Heartbeat (Get)
---
The heartbeat route provides a simple api route for verifying a machineId is still registered to a key within this database. This helps prevent key abuse by authenticating, then resetting and allowing someone else to reuse a key.

**The machineID is passed as a URL parameter.**

Example Request
```
GET /auth/heartbeat/000000
```

 
## API Responses
To keep the project minimal and simplified the API provides a preset number of responses corresponding to the result of the data result.

 
### Success Messages (HTTP Status Code 200)
```
{
"message": "Success"
}
```
```
{
"message":"Key reset"
}
```

 
### Failure Messages (HTTP Status Code 400 or 401)
---
```
{
"message": "Invalid key"
}
```
```
{
"message":"Bad request"
}
```
```
{
"message":"The key is already bound."
}
```