Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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.

This endpoint should only be called during the first scan. Subsequent scans should call Identify (PUT) instead.

Request Format

Endpoint

POST /loyalty/v2/identify

...

Example request

Code Block
POST /loyalty/v2/identify
{
    "identifier": "123456",
    "location": {
        "storeId": "9999",
        "terminalId": "0", 
        "hasLoyalty": true 
    },

   "content": true
}

Second request

Code Block
PUT /loyalty/v2/identify
{
    "identifier": "123456",
    "transactionId": xxx
}

...

  • transactionId <UUID>: unique identifier of the loyalty transaction created.

  • 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

  • title <string>: title of the reward or offer as was set in Sanity.

  • description <string>: description of the reward or offer as was set in Sanity.

  • moreInfo <string>: disclaimer of the reward or offer as was set in Sanity.

  • image <link>: url of the image of the reward or offer as was set in Sanity.

  • plu <string>: PLU of the reward or offer as was set in Sanity for the pos vendor of the integration

  • rules: array containing all rules inside offer or reward if applicable (e.g. 200 loyalty points needed to use the reward, offer only available on Wednesdays)

    includes all PLUs for offers and rewards in the market

    • plu <string>: PLU of all rewards or offers that should be excluded from showing to that specific user.

Note

Pending to further discuss and validate the above point:

  • Return PLU of all rewards or offers that should be excluded from showing to that specific user

Success response example

Code Block
{
    "transactionId": "f4190848-169d-4c69-9f53-f916318c432b", // uuid of the loyalty order/transaction
    "balances": [
        {
            "amount": 14464,
            "currency": "points"
        }
    ],
    "loyaltyUser": {
        "created": "2021-08-10T12:18:39.180Z",
        "id": "4711fc2a-3a8f-414f-a9e7-44dd5231dca7",
        "name": "Farhan"
    },
    "order": [
        {
            "productId": "2244",
            "quantity": 1,
            "price": 0,
            "productType": "REWARD",
            "referenceId": "01", 
        },
        {
            "productId": "6688",
            "quantity": 1,
            "price": 500,
            "productType": "OFFER",
            "referenceId": "02", 
        },
    ],
    "content": [
        {
  
         "titleplu": "Small Fries Reward8810",    
        "description": "Order this reward and get free small fries"},
        { 
  "moreInfo": "Contains allergens",             "image"plu": "https://cdn.sanity.io/images/czqk28jt/staging_bk_gb/fc7c2a73e7a9bf14f3e3401bedcc090c4f421c67-1333x1333.png8811",    
        "plu": "8810"},
             "rules": [
              {
    
           "typeplu": "loyaltyPoints8812",    
            "points": 200},
        { 
    }          "plu": "8813",    ],
        },
        {
  
         "titleplu": "MEAT FREE MONDAYS VEGAN ROYALE8814",    
        "description": "Vegan Royale for just £2.99. Only on Mondays. Use app code APP903 if using a kiosk.",},
        { 
           "moreInfoplu": "Not valid in conjunction with any other offer. One voucher per transaction. Valid only in the UK. Subject to availability. Voucher valid at participating restaurants only.  Not valid at Burger King motorway service locations, airports train stations and holiday parks. © 2023 Burger King Europe GmbH. All rights reserved."8815",    
        },
            "image": "https://cdn.sanity.io/images/czqk28jt/prod_bk_gb/aae9c1303b7cea013c984ee647ed7898ce6cfce9-1000x850.png",
 { 
         "plu": "99208816",    
         "rules": [},
              { 
               "type"plu": "day-of-week-band"
                friday:false
                monday:true
                saturday:false
                sunday:false
                thursday:false
        8817",    
   tuesday:false                 wednesday:false
              },
              {
      
         "typeplu": "service-mode-restrictions"
                CATERING_DELIVERY:true
                CATERING_PICKUP:true
                CURBSIDE:true
                DELIVERY:false
                DRIVE_THRU:true
                EAT_IN:true
                TABLE_SERVICE:true8818",    
            TAKEOUT:true
              },
              {
  
             "typeplu": "limit"
                interval:day
                maximumRedemptions:1
              },  8819",    
        ],
        },
    ]
}

Error responses

Info

All error responses use the standard https://rbictg.atlassian.net/wiki/spaces/RDP/pages/4231725617/Loyalty+API+v1+-+Error+Responses?atl_f=content-tree format.

  • HTTP 400 (Bad Request) if the request body has an incorrect format. In this case, the response will include details about which specific field or fields have an incorrect format.

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

  • HTTP 403 404 (ForbiddenNot Found): in the following scenarios indicated in the code field of the error response:

    • "IdentifierNotFound": if the specified identifier

    is
    • was not

    valid
    • found.

    HTTP 404 (Not Found)
    • "StoreNotFound": if the specified storeId was not found.