Welcome to ELERA!

Accelerating your Business

Sign up Explore APIs

Own your own UX!

Use your Client Platform Framework to drive your POS experience.

500+ Open APIs

Build the POS platform you need!

Cloud Native + Store High Availability

Highly available in the Cloud and in your Store. Deploy the way that works best for you!

A Few of our Microservices

Picture

Order Validation

Control your business flows with configurations. This includes Manager Overrides, Reason Codes, Missing Fields, etc...

Try it out.

Picture

POS Orchestration

The heart of your POS platform. Easily drive your POS transactions or integrate into new Microservices created by you!

Try it out.

Picture

Pricing Service

Price your basket with the Order Pricing Service. This includes loyalty, threshold, bucket and other advanced pricing scenarios.

Try it out.

Getting Started

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"
    }
}