Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

Contents

Purpose

This endpoint is used to identify a guest who scans an identifier generated by the RBI app (which could be an OTP or the Loyalty ID) at a client device (typically a POS or Kiosk terminal). OTP is always allowed, but Loyalty ID’s may or may not be allowed depending on configuration.

Request Format

Endpoint

POST /loyalty/v2/identify

Headers

We will use the same headers as the Partner API.

Authentication and authorization will use the bearer token in JWT format, which includes the API key, and identifies the following, based on this documentation: /wiki/spaces/IN/pages/3739288100

  • Brand (e.g. BK)

  • Region (e.g. UK)

  • Sub, which is the integration partner (e.g. NCR, Khumbu)

  • Partner ID, which uniquely identifies the partner configuration which will give us more details if we need.

Body

  • identifier <string>: OTP (6 digit code) or Loyalty ID in UUID format.

  • location: object identifying the location the guest is identifying from.

    • storeId <integer>:

    • terminalId <string> (optional): identifies the POS or Kiosk terminal used in the restaurant

    • hasLoyalty <boolean> (optional): defaults to true. If false, then no points will be earned or burned for transaction and no rewards can be ordered.

  • content <boolean> (optional): whether the endpoint should return the list of offers and rewards that are visible to this guest. Defaults to false.

Example request

{
    "identifier": "123456",
    "location": {
        "storeId": "9999",
        "terminalId": "0", 
        "hasLoyalty": true 
    },
    "content": true
}

Response Format

Success response body

  • balances: object that indicates loyalty balance of the user's account

    • amount <number>: this represents the number of loyalty points the user has. If this QR code was pre-selected with rewards, then this number already has those loyalty points temporarily deducted from total user’s loyalty points balance.

    • currency <string>: this represents the currency the above amount. Normally set to "points".

  • loyaltyUser: object that indicates information about this loyalty user

    • created <string>: string that represents that date and time user loyalty account was created

    • id <string>: Loyalty ID of the user in UUID format

    • name <string>: name of the user that was saved upon account creation.

  • order: an array that includes objects with the below fields for each product that is in the order basket.

    • productId <string>: PLU of the product that was pre-selected in the app. This can be an offer or a reward.

    • quantity <number>: the amount of the above product that is in the loyalty order.

    • price <number>: the price of the product

    • productType <string>: the type of product. In this case it would either be REWARD or OFFER

    • referenceId <string>: unique line ID of the product

  • content: array that indicates all the offer and reward content available for that market

    • TBD

  • transactionId <string>: Order ID in UUID format of the loyalty order

Success response example

{
    "balances": [
        {
            "amount": 14464,
            "currency": "points"
        }
    ],
    "loyaltyUser": {
        "created": "2021-08-10T12:18:39.180Z",
        "id": "4711fc2a-3a8f-414f-a9e7-44dd5231dca7",
        "name": "Farhan"
    },
    "order": [
        {
            "productId": "Reward PLU",
            "quantity": 1,
            "price": 0,
            "productType": "REWARD",
            "referenceId": "00", 
        },
        {
            "productId": "Offer PLU",
            "quantity": 1,
            "productType": "OFFER",
            "referenceId": "00", 
        },
    ],
    "content": {
        
    },
    "transactionId": "f4190848-169d-4c69-9f53-f916318c432b" // uuid of the loyalty order/transaction
}

Error responses

All error responses use the standard Error Response format.

  • HTTP 401 (Unauthorized) if the bearer token is not valid.

  • HTTP 401 (Not found): if the identifier was not found

  • No labels