Get loyalty configuration

Retrieves the shop's loyalty configuration in the shape UpdateLoyaltyConfig accepts: display settings, bonus definitions, reward products with their status, and every campaign (season) with its status. Product rewards are returned by SKU. Use it to verify a sync. Returns NOT_FOUND when the shop has no loyalty program.

GET
/sdk/studio/{shopId}/loyalty/config
x-stash-hmac-signature<token>

Versioned HMAC-SHA256 signature authenticating server-to-server SDK requests (your backend calling Stash), as opposed to client-side SDK operations. Recommended over the deprecated X-Stash-Api-Key for the best security. Header format: v1;{appId};{unixMillisTimestamp};{base64Signature} (semicolon-delimited). {base64Signature} is the base64-encoded HMAC-SHA256 of the string {unixMillisTimestamp}.{requestBody} using your app ingress secret (the ingress secret is shown base64-encoded in Studio; base64-decode it to the raw bytes used as the HMAC key), where {requestBody} is the compact canonical request JSON for POST requests and empty for GET requests. The timestamp must be within 5 minutes of Stash server time. Your appId is your immutable app identifier, shown in Stash Studio under Project Settings > App details; your ingress secret is under Project Settings > API Secrets.

In: header

Path Parameters

shopId*string

Shop identifier from Stash Studio

Response Body

application/json

application/json

curl -X GET "https://example.com/sdk/studio/string/loyalty/config"
{  "displayConfig": {    "programName": "string",    "vipStoreName": "string"  },  "bonuses": [    {      "id": "string",      "type": "BONUS_TYPE_UNSPECIFIED",      "name": "string",      "pluralName": "string",      "abbreviatedName": "string",      "iconImageUrl": "string"    }  ],  "products": [    {      "sku": "string",      "name": "string",      "description": "string",      "imageUrl": "string",      "backgroundImageUrl": "string",      "status": "REWARD_PRODUCT_STATUS_UNSPECIFIED"    }  ],  "campaigns": [    {      "id": "string",      "name": "string",      "startAt": "2019-08-24T14:15:22Z",      "endAt": "2019-08-24T14:15:22Z",      "reset": {        "points": "POINTS_UNSPECIFIED",        "milestoneClaims": "MILESTONE_CLAIMS_UNSPECIFIED",        "currency": "CURRENCY_UNSPECIFIED"      },      "tiers": [        {          "id": "string",          "name": "string",          "startPoints": 0,          "iconUrl": "string",          "backgroundImageUrl": "string",          "color": "string",          "benefits": [            {              "text": "string"            }          ],          "earnRates": [            {              "bonusId": "string",              "rewardPerDollar": 0            }          ],          "milestones": [            {              "id": "string",              "name": "string",              "description": "string",              "pointsNeeded": 0,              "rewardName": "string",              "rewardImageUrl": "string",              "backgroundImageUrl": "string",              "bonusRewards": [                {                  "bonusId": "string",                  "amount": 0                }              ],              "productRewards": [                {                  "sku": "string",                  "quantity": 0                }              ]            }          ]        }      ],      "status": "CAMPAIGN_STATUS_UNSPECIFIED"    }  ]}

How is this guide?