Welcome to ELERA!
Accelerating your Business
Use your Client Platform Framework to drive your POS experience.
Build the POS platform you need!
Highly available in the Cloud and in your Store. Deploy the way that works best for you!
Control your business flows with configurations. This includes Manager Overrides, Reason Codes, Missing Fields, etc...
The heart of your POS platform. Easily drive your POS transactions or integrate into new Microservices created by you!
Price your basket with the Order Pricing Service. This includes loyalty, threshold, bucket and other advanced pricing scenarios.
Let's go through a transaction:
To begin, you need to authorize the user. ELERA provides an out-of-the-box role-based access control (RBAC). ELERA can create JWT tokens, or you can get tokens from a 3rd party OAuth provider. The response contains the authorization response header to use for future calls. When you use the ELERA authorization service, additional calls issue additional tokens automatically to keep you authenticated. Each microservice has a corresponding scope included in each JWT token.
POST /authorization/login
{
"username": "tim",
"password": "p",
"nodeId": "STORE_DEV"
}
To create a transaction, simply add a barcode. The barcode translation service renders the barcode into any registered service; for example, an Item Add, Coupon, or Suspended Order. If an order exists on the endpoint, then the item is added to the order. If it doesn’t exist, then it is created for you. If cash management is enabled, you need an Open Till to add the item. For more information on cash management see the cash-management/till/open request
POST /pos/order/barcode/add
{
"skuId": "1",
"barcodeData": "1",
"entryMethod": "KEYED",
"context": {
"trainingMode": false,
"deviceId": "DEV",
"nodeId": "STORE_DEV",
"endpointId": "999",
"requestId": "1626460978410_45__STORE_DEV_999",
"locale": "en-US"
}
}
When adding a payment, you need to specify which order to add an item to by its unique ID and the version of the order. If the version is out of date with the backend, an error response is issued, and the request is rejected. If the same request is repeated, the response is the same. This is because the POS layer is idempotent.
POST /pos/order/60f1d33270ce5c0001964214/4/payment/add
{
"paymentEntryData": {
"type": "CASH_USD",
"group": "CASH",
"cashBackAmount": "0.00"
},
"paymentTransaction": {
"requestedAmount": {
"value": "8.26",
"currencyCode": "USD",
"currencyValue": {
"value": 8.26,
"currencyCode": "USD"
}
}
},
"context": {
"nodeId": "STORE_DEV",
"endpointId": "999",
"requestId": "1626461007040_58__STORE_DEV_999"
}
}
Next, complete the order. Completing the order runs any validations, check payment amounts, gift card activations or other transactions. The order is then moved to a Pending state. Do not modify the order at this point because the client is finalizing the order.
POST /pos/order/60f1d33270ce5c0001964214/6/complete
{
"context": {
"nodeId": "STORE_DEV",
"endpointId": "999",
"requestId": "1626461007040_58__STORE_DEV_999"
}
}
Once the order is fully processed, it can be finalized, and the purchase is complete.
POST /pos/order/60f1d33270ce5c0001964214/7/submit
{
"context": {
"nodeId": "STORE_DEV",
"endpointId": "999",
"requestId": "1626461007040_58__STORE_DEV_999"
}
}