Versions Compared

Key

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

...

This document lists all the graphql endpoints will be used in BK ES Loyalty migration Phase 1 and Phase 2.

Authentication

Different authentication <token> will be provided for test(staging) and production(prod) enviroments, and the authentication is also vendor specific.

And the Bearer Authentication is utilized in our system, when calling the endpoints, the authorization attribute needs to be added in the headers, with the value as Bearer <token>, the <token> is shared offline.

In the request headers, please set x-region as "ES".

(blue star) For security purpose, all the calls to our graphQL endpoints should NOT be directly from the frontend, please integrate the calls into existing/new-created backend APIs.

Endpoints

The base URL is also environment specific, it’s https://euw3-<env>-bk-loyalty-middleware.rbictg.com/loyalty, for example,

...

https://euw3-prod-bk-loyalty-middleware.rbictg.com/loyalty

Get RBI Loyalty User

Desc: This endpoint is used to get the details of a RBI Loyalty user, includes the information like RBI Loyalty Id, user email, Loyalty points and Loyalty tier.

...

Code Block
languagejson
{
  "createdAt": "string",
  "id": "string", // RBI Loyalty Id
  "name": "string",
  "updatedAt": "string",
  "clientUserId": "string",
  "dateOfBirth": "string",
  "email": "string", // user email
  "emailVerified": true,
  "expirationBuckets": [
    {
      "expirationDate": "string",
      "pointsToExpire": 0
    }
  ],
  "loyaltyTier": {
    "loyaltyTierExpiryDate": "string",
    "loyaltyTierKey": "Tier_1", // Loyalty Tier, can be Tier_1 and Tier_2
    "pointsEarnedInTimeConstraint": 0,
    "startAt": "string"
  },
  "metadata": {
    "additionalProp1": "string",
    "additionalProp2": "string",
    "additionalProp3": "string"
  },
  "offerRedemptionAvailability": {
    "availableAfter": "string",
    "transactionId": "string"
  },
  "phoneNumber": "string",
  "phoneVerified": true,
  "points": 0, // Loyalty points
  "pointsEarningDisabled": true,
  "pointsExpiryDateKey": "string"
"string"
}}

Fetch RBI Loyalty Transactions

Desc: This endpoint is used to fetch all the Loyalty Transactions of a RBI Loyalty user, includes the information like points earned, points used, create date.

URL: /transactions/search

Method: POST

Payload:

Code Block
languagejson
{
  "statuses": [ // keep using this
    "CLAIMED"
  ],
  "loyaltyId": "string", // RBI Loyalty id
  "excludedChannels": [ // keep using this
    "REMEDIATION"
  ]
}

Example response:

Code Block
languagejson
[
  {
    "metadata": {},
    "status": "CLAIMED",
    "createdAt": "2024-04-01T07:50:23.147Z", // crate datetime
    "transactionDetails": {}, // includes order details, can be empty
    "loyaltyId": "b1aa9100-0cfd-59b5-8adf-72527b9ccb4d",
    "pointsUsed": 200, // used points
    "channel": "RESTAURANT",
    "pointsEarned": 120, // earned points, pointsEarned+bonusPointsEarned is the total earned points
    "bonusPointsEarned": 0,
    "id": "c9ab9b26-53ef-472d-88a8-10e31c151c5a",
    "dateUpdated": "2024-04-01T07:52:03.400Z"
  },
  {
    "shortId": "6G0B5R7F53B2HSON",
    "metadata": {},
    "status": "CLAIMED",
    "createdAt": "2023-10-31T12:43:11.406Z",
    "transactionDetails": {},
    "loyaltyId": "b1aa9100-0cfd-59b5-8adf-72527b9ccb4d",
    "pointsUsed": 0,
    "channel": "WEB",
    "pointsEarned": 161,
    "bonusPointsEarned": 0,
    "claimedAt": "2023-10-31T12:43:11.406Z",
    "id": "204b532b-3132-4a5f-90ab-44bfa88c0ce9",
  },
  {
    "pointsEarned": 100,
    "shortId": "7ETX4ME2EC4N4VMM",
    "bonusPointsEarned": 0,
    "claimedAt": "2023-07-25T06:16:26.693Z",
    "status": "CLAIMED",
    "createdAt": "2023-07-25T06:16:26.693Z",
    "loyaltyId": "b1aa9100-0cfd-59b5-8adf-72527b9ccb4d",
    "pointsUsed": 0,
    "id": "2b17414e-7eb2-42d7-a352-d949fb68cc14",
    "channel": "INITIAL_POINT_BALANCE"
  }
]

[APP] Create RBI Loyalty Transaction - Airtouch

Note

We decided not to use this endpoint, for all the transaction related endpoints, please refer to [BK ES Migration] Loyalty API - V1 Current

Desc: This endpoint is used to submit a transaction to RBI Loyalty platform for both Web and Mobile App. The payload needs to include the information, like RBI user Id, RBI Loyalty Id, items information, store id

...

URL: /transaction

Method: POST

Without Reward

Payload:

Code Block
languagejson
{
  "cartEntries": [],
  "channel": "APP", // WEB, APP
  "cognitoId": "{{testRbiUserId}}", // RBI user Id
  "currency": "EUR", // currency
  "email": "{{testUserEmail}}", // user email
  "fulfillment": {"type": "DELIVERY"}, // DELIVERY, DRIVE_THRU, EAT_IN, TAKEOUT, N/A
  "loyaltyId": "{{testLoyaltyId}}",
  "orderId": {
    "id": "test-transaction-id", // the same as posVendor-transactionId
    "type": "AIRTOUCH" // the same as posVendor-type
  },
  "payments": [{
    "amount": 100, // in cent unit
    "type": "VISA" // VISA, AMEX, CASH, OTHER
  }],
  "posVendor": {
    "transactionId": "test-transaction-id", // can be a unique id to indicate the order
    "type": "AIRTOUCH"
  },
  "promotions": [], // rewards can be added
  "serviceMode": "DELIVERY" // DELIVERY, DRIVE_THRU, EAT_IN, TAKEOUT, N/A
}

With Reward

Payload:

Code Block
languagejson
{
  "cartEntries": [],
  "channel": "APP", // WEB, APP
  "cognitoId": "{{testRbiUserId}}", // RBI user Id
  "currency": "EUR", // currency
  "email": "{{testUserEmail}}", // user email
  "fulfillment": {"type": "DELIVERY"}, // DELIVERY, DRIVE_THRU, EAT_IN, TAKEOUT, N/A
  "loyaltyId": "{{testLoyaltyId}}",
  "orderId": {
    "id": "test-transaction-id", // the same as posVendor-transactionId
    "type": "AIRTOUCH" // the same as posVendor-type
  },
  "payments": [{
    "amount": 100, // in cent unit
    "type": "VISA" // VISA, AMEX, CASH, OTHER
  }],
  "posVendor": {
    "transactionId": "test-transaction-id", // a unique id to indicate the order
    "type": "AIRTOUCH"
  },
  "promotions": [
    {
      "id": "{{testRewardLoyaltyId}}", // the RBI Loyalty engine id of a Reward
      "name": "test-reward-id", // get from Sanity
      "type": "REWARD"
    }
  ], // rewards can be added
  "serviceMode": "DELIVERY" // DELIVERY, DRIVE_THRU, EAT_IN, TAKEOUT, N/A
}

[WEB] Create RBI Loyalty Transaction - Homeria

Note

We decided not to use this endpoint, for all the transaction related endpoints, please refer to [BK ES Migration] Loyalty API - V1 Current

Desc: This endpoint is used to submit a transaction to RBI Loyalty platform for both Web and Mobile App. The payload needs to include the information, like RBI user Id, RBI Loyalty Id, items information, store id

URL: /transaction

Method: POST

Without Reward

Payload:

Code Block
languagejson
{
  "cartEntries": [],
  "channel": "WEB", // WEB, APP
  "cognitoId": "{{testRbiUserId}}", // RBI user Id
  "currency": "EUR", // currency
  "email": "{{testUserEmail}}", // user email
  "fulfillment": {"type": "DELIVERY"}, // DELIVERY, DRIVE_THRU, EAT_IN, TAKEOUT, N/A
  "loyaltyId": "{{testLoyaltyId}}",
  "orderId": {
    "id": "test-transaction-id", // the same as posVendor-transactionId
    "type": "HOMERIA" // the same as posVendor-type
  },
  "payments": [{
    "amount": 100, // in cent unit
    "type": "VISA" // VISA, AMEX, CASH, OTHER
  }],
  "posVendor": {
    "transactionId": "test-transaction-id", // can be a unique id to indicate the order
    "type": "HOMERIA"
  },
  "promotions": [], // rewards can be added
  "serviceMode": "DELIVERY" // DELIVERY, DRIVE_THRU, EAT_IN, TAKEOUT, N/A
}

With Reward

Payload:

Code Block
languagejson
{
  "cartEntries": [],
  "channel": "WEB", // WEB, APP
  "cognitoId": "{{testRbiUserId}}", // RBI user Id
  "currency": "EUR", // currency
  "email": "{{testUserEmail}}", // user email
  "fulfillment": {"type": "DELIVERY"}, // DELIVERY, DRIVE_THRU, EAT_IN, TAKEOUT, N/A
  "loyaltyId": "{{testLoyaltyId}}",
  "orderId": {
    "id": "test-transaction-id", // the same as posVendor-transactionId
    "type": "HOMERIA" // the same as posVendor-type
  },
  "payments": [{
    "amount": 100, // in cent unit
    "type": "VISA" // VISA, AMEX, CASH, OTHER
  }],
  "posVendor": {
    "transactionId": "test-transaction-id", // can be a unique id to indicate the order
    "type": "HOMERIA"
  },
  "promotions": [
    {
      "id": "{{testRewardLoyaltyId}}", // the RBI Loyalty engine id of a Reward
      "name": "test-reward-name", // get from Sanity
      "type": "REWARD"
    }
  ], // rewards can be added
  "serviceMode": "DELIVERY" // DELIVERY, DRIVE_THRU, EAT_IN, TAKEOUT, N/A
}

[WEB/APP] Create OTP

Desc: This endpoint is used to submit a transaction to RBI Loyalty platform for both Web and Mobile App. The payload needs to include the information, like RBI user Id, RBI Loyalty Id, items information, store id

URL: /otp

Method: POST

Without Reward

Payload:

Code Block
languagejson
{
  "loyaltyId": "string", // RBI Loyalty Id
  "order": [], // Rewards can be added
  "restaurantId": "string", // restaurant id
  "userDateTime": "string" // user time in the format like "2024-01-01 12:12:12"
}

With Reward

Payload:

Code Block
languagejson
{
  "loyaltyId": "string", // RBI Loyalty Id
  "order": [
    {
      "incentive": {
        "id": "{{testRewardLoyaltyId}}", // Reward RBI Loyalty Engine Id, get from Sanity
        "type": "REWARD"
      },
      "quantity": 1,
      "referenceId": "1",
      "productId": "{{testRewardSanityId}}", // Reward Sanity Id, get from Sanity
      "vendorConfigs": { // get from Sanity
        "_type": "vendorConfigs",
        "partner": {
          "_type": "vendorConfig",
          "constantPlu": "4444",
          "pluType": "constantPlu"
        }
      }
    }
  ], // Rewards can be added
  "restaurantId": "string", // restaurant id
  "userDateTime": "string" // user time in the format like "2024-01-01 12:12:12"
}

...

Code Block
"test-otp" // the created OTP

[WEB/APP] Get OTP

Desc: This endpoint is used to get the order selection connected with the OTP, to check if the OTP is identified in store.

...

Code Block
languagejson
{
  "updatedAt": "string",
  "createdAt": "string",
  "loyaltyId": "string", // RBI Loyalty Id
  "expiry": 300, // Original setting: after how many seconds, the OTP will be expired, not real-time
  "order": [],
  "otp": "string",
  "restaurantId": "string",
  "status": "claimed", // claimed or pending, used to indicate if the OTP is identified in store
  "transactionId": "string", // RBI Loyalty Transaction Id
  "userDateTime": "string" // // user time in the format like "2024-01-01 12:12:12"
}

[In-Store] Identify RBI Loyalty User

Desc: This endpoint is used to identify a RBI Loyalty User when the user wants to place in-store orders, in this case, we can use the OTP created in last step as the identifier.

...

Code Block
languagejson
{
  "balances": [
    {
      "amount": 14464,
      "currency": "points"
    }
  ],
  "loyaltyUser": {
    "created": "2021-08-10T12:18:39.180Z",
    "id": "rbi-loyalty-id",
    "name": "Farhan"
  },
  "order": [ // Reward information can be included
    {
      "productType": "REWARD",
      "quantity": 1,
      "referenceId": "00",
      "price": 0,
      "incentiveId": "bba6a12d-fe78-468a-a394-d817652442d4", // Reward Sanity Id
      "loyaltyEngineId": "bdgdgd-fe78-468a-4545-d817dfrd442d4" // Reward RBI Loyalty Engine Id
  }
  ],
  "transactionId": "f4190848-169d-4c69-9f53-f916318c432b" // this transactionId needs to be used in following Transaction update
}

[In-Store] Update RBI Loyalty Transaction

Refer to /wiki/spaces/EGMT/pages/4138467580