Shop
Shop information and authentication
Get shop information
Retrieve safe shop information for the authenticated shop
200Shop information
trueShow properties
Additional metadata such as counts and pagination
"Operation completed successfully""2023-07-28T07:27:54.123Z"GET /rest_api/v2/whoami HTTP/1.1Host: dev-api.joy.soX-Joy-Loyalty-App-Key: YOUR_API_KEYX-Joy-Loyalty-Secret-Key: YOUR_API_KEYAccept: */*
{"success": true,"data": {"id": "string","name": "string","domain": "string","email": "string","plan": "string","currency": "string","timezone": "string","countryCode": "string","isInstalled": true,"createdAt": "2024-01-15T10:30:00.000Z","updatedAt": "2024-01-15T10:30:00.000Z"},"meta": {},"message": "Operation completed successfully","timestamp": "2023-07-28T07:27:54.123Z"}
Get shop settings
Reads all whitelisted shop settings, merged from both shops and settings Firestore collections into a single flat object.
Only simple flag/option fields are exposed. Settings that trigger side effects (colors, metafield sync, image uploads, encryption) are managed via the admin UI only.
200Shop settings
trueShop configuration settings. Only simple flag/option fields are exposed. Settings with side effects (colors, metafield sync, image upload, encryption) are managed via admin UI only.
Show properties
Widget display language
"en"Show language selector in widget
falseShop timezone (IANA format)
"America/New_York"Date display format
"MM/DD/YYYY"Time format for activity log (24h or 12h)
"HH:mm"Enable custom point label
falseLabel position relative to point number
"before"Discount code prefix
"REWARD-"Behavior after applying discount
"stay_current"CSS selector for cart drawer button (required when behavior = open_cart_drawer)
".cart-drawer-btn"Free gift add-to-cart behavior
"manual_add_to_cart"Points-to-currency exchange rate
100Review approval mode
"approveAuto"Google review approval mode
"pending"Enable weekly email report
trueBCC recipients for weekly report
["[email protected]"]When to award points for orders
"financial_status"Log pending fulfillment orders (only when earnByOrderStatus = fulfillment_status)
falseFreeze conditions at order creation (only when earnByOrderStatus = fulfillment_status)
falseEnable order/customer tag sync
falseTag value for orders and customers
"loyalty-member"Enable Shop App SSO
falseEnable Multipass SSO (flag only, set secret via admin UI)
falseEnable Google SSO (requires Multipass)
falseEnable Facebook SSO (requires Multipass)
falseAllow third-party apps to read metafields
falseEnable auto-tag for engaged members
falseTags to apply to engaged members
["loyalty-active"]Pending points duration (positive integer as string)
"7"Pending points time unit
"day"Sign-up page redirect URL
"https://example.com/signup"Allow self-revoke coupon
falseLimit revoke count (requires allowRefundCoupon)
falseMax revokes allowed (positive integer as string)
"3"Revoke limit time unit
"month"Limit revoke time window (requires allowRefundCoupon)
falseRevoke window duration
7Revoke window time unit
"days"Enable global earning cap
falseEarning limit timeframe
"monthly"Rolling window days (only when timeframe = rolling)
30Max points per period
5000Different limits per tier
falsePer-tier limit overrides. Format: { [tierId]: { maxPoints: number, unlimited: boolean } }
{"tier_abc":{"maxPoints":10000,"unlimited":false}}Show free product in cart
falseMax free products displayed
3Additional metadata such as counts and pagination
"Operation completed successfully""2023-07-28T07:27:54.123Z"401Authentication required
falseShow properties
"Resource not found""NOT_FOUND"404"2023-07-28T07:27:54.123Z"GET /rest_api/v2/shop/settings HTTP/1.1Host: dev-api.joy.soX-Joy-Loyalty-App-Key: YOUR_API_KEYX-Joy-Loyalty-Secret-Key: YOUR_API_KEYAccept: */*
{"success": true,"data": {"primaryLanguageInApp": "en","isShowSettingLanguage": false,"timezoneSelected": "America/New_York","dateFormat": "MM/DD/YYYY","dateFormatForActivity": "HH:mm","enabledCustomPointLabel": false,"pointPosition": "before","prefixDiscountCodeGlobal": "REWARD-","customerApplyDiscountBehavior": "stay_current","customerFreeGiftBehavior": "manual_add_to_cart","exchangeRatePoints": 100,"statusForReview": "approveAuto","statusForGoogleReview": "pending","earnByOrderStatus": "financial_status","isSendWeeklyReport": true,"enableGlobalEarningLimit": false,"isShowFreeCouponInCart": false},"meta": {},"timestamp": "2026-03-24T10:00:00.000Z"}
Update shop settings
Partial update — send only the fields you want to change. Unknown fields are stripped by validation.
Returns the full merged settings state after update.
Widget display language
"en"Show language selector in widget
falseShop timezone (IANA format)
"America/New_York"Date display format
"MM/DD/YYYY"Time format for activity log (24h or 12h)
"HH:mm"Enable custom point label
falseLabel position relative to point number
"before"Discount code prefix
"REWARD-"Behavior after applying discount
"stay_current"CSS selector for cart drawer button (required when behavior = open_cart_drawer)
".cart-drawer-btn"Free gift add-to-cart behavior
"manual_add_to_cart"Points-to-currency exchange rate
100Review approval mode
"approveAuto"Google review approval mode
"pending"Enable weekly email report
trueBCC recipients for weekly report
["[email protected]"]When to award points for orders
"financial_status"Log pending fulfillment orders (only when earnByOrderStatus = fulfillment_status)
falseFreeze conditions at order creation (only when earnByOrderStatus = fulfillment_status)
falseEnable order/customer tag sync
falseTag value for orders and customers
"loyalty-member"Enable Shop App SSO
falseEnable Multipass SSO (flag only, set secret via admin UI)
falseEnable Google SSO (requires Multipass)
falseEnable Facebook SSO (requires Multipass)
falseAllow third-party apps to read metafields
falseEnable auto-tag for engaged members
falseTags to apply to engaged members
["loyalty-active"]Pending points duration (positive integer as string)
"7"Pending points time unit
"day"Sign-up page redirect URL
"https://example.com/signup"Allow self-revoke coupon
falseLimit revoke count (requires allowRefundCoupon)
falseMax revokes allowed (positive integer as string)
"3"Revoke limit time unit
"month"Limit revoke time window (requires allowRefundCoupon)
falseRevoke window duration
7Revoke window time unit
"days"Enable global earning cap
falseEarning limit timeframe
"monthly"Rolling window days (only when timeframe = rolling)
30Max points per period
5000Different limits per tier
falsePer-tier limit overrides. Format: { [tierId]: { maxPoints: number, unlimited: boolean } }
{"tier_abc":{"maxPoints":10000,"unlimited":false}}Show free product in cart
falseMax free products displayed
3200Settings updated successfully
trueShop configuration settings. Only simple flag/option fields are exposed. Settings with side effects (colors, metafield sync, image upload, encryption) are managed via admin UI only.
Show properties
Widget display language
"en"Show language selector in widget
falseShop timezone (IANA format)
"America/New_York"Date display format
"MM/DD/YYYY"Time format for activity log (24h or 12h)
"HH:mm"Enable custom point label
falseLabel position relative to point number
"before"Discount code prefix
"REWARD-"Behavior after applying discount
"stay_current"CSS selector for cart drawer button (required when behavior = open_cart_drawer)
".cart-drawer-btn"Free gift add-to-cart behavior
"manual_add_to_cart"Points-to-currency exchange rate
100Review approval mode
"approveAuto"Google review approval mode
"pending"Enable weekly email report
trueBCC recipients for weekly report
["[email protected]"]When to award points for orders
"financial_status"Log pending fulfillment orders (only when earnByOrderStatus = fulfillment_status)
falseFreeze conditions at order creation (only when earnByOrderStatus = fulfillment_status)
falseEnable order/customer tag sync
falseTag value for orders and customers
"loyalty-member"Enable Shop App SSO
falseEnable Multipass SSO (flag only, set secret via admin UI)
falseEnable Google SSO (requires Multipass)
falseEnable Facebook SSO (requires Multipass)
falseAllow third-party apps to read metafields
falseEnable auto-tag for engaged members
falseTags to apply to engaged members
["loyalty-active"]Pending points duration (positive integer as string)
"7"Pending points time unit
"day"Sign-up page redirect URL
"https://example.com/signup"Allow self-revoke coupon
falseLimit revoke count (requires allowRefundCoupon)
falseMax revokes allowed (positive integer as string)
"3"Revoke limit time unit
"month"Limit revoke time window (requires allowRefundCoupon)
falseRevoke window duration
7Revoke window time unit
"days"Enable global earning cap
falseEarning limit timeframe
"monthly"Rolling window days (only when timeframe = rolling)
30Max points per period
5000Different limits per tier
falsePer-tier limit overrides. Format: { [tierId]: { maxPoints: number, unlimited: boolean } }
{"tier_abc":{"maxPoints":10000,"unlimited":false}}Show free product in cart
falseMax free products displayed
3Additional metadata such as counts and pagination
"Operation completed successfully""2023-07-28T07:27:54.123Z"400Validation error or no valid fields provided
falseShow properties
"Resource not found""NOT_FOUND"404"2023-07-28T07:27:54.123Z"401Authentication required
falseShow properties
"Resource not found""NOT_FOUND"404"2023-07-28T07:27:54.123Z"PUT /rest_api/v2/shop/settings HTTP/1.1Host: dev-api.joy.soX-Joy-Loyalty-App-Key: YOUR_API_KEYX-Joy-Loyalty-Secret-Key: YOUR_API_KEYContent-Type: application/jsonAccept: */*Content-Length: 115{"prefixDiscountCodeGlobal": "REWARD-","earnByOrderStatus": "financial_status","exchangeRatePoints": 100}
{"success": true,"data": {"primaryLanguageInApp": "en","isShowSettingLanguage": false,"timezoneSelected": "America/New_York","dateFormat": "MM/DD/YYYY","dateFormatForActivity": "HH:mm","enabledCustomPointLabel": false,"pointPosition": "before","prefixDiscountCodeGlobal": "REWARD-","customerApplyDiscountBehavior": "stay_current","cartDrawerButtonSelector": ".cart-drawer-btn","customerFreeGiftBehavior": "manual_add_to_cart","exchangeRatePoints": 100,"statusForReview": "approveAuto","statusForGoogleReview": "pending","isSendWeeklyReport": true,"listBccMailWeeklyReports": [],"earnByOrderStatus": "financial_status","enableLogOrderPendingFulfill": false,"freezeConditionsOnOrderCreated": false,"statusSyncTagOrder": false,"orderAndCustomerTag": "loyalty-member","enableShopAppSSO": false,"enableMultipassSSO": false,"enableGoogleSSO": false,"enableFacebookSSO": false,"allowThirdPartyAppAccess": false,"autoTagEngagedMembersEnabled": false,"autoTagEngagedMembersTags": ["loyalty-active"],"valuePendingPointV2": "7","unitPendingPointV2": "day","signUpLinkRedirect": "https://example.com/signup","allowRefundCoupon": false,"enableRevokeLimit": false,"revokeLimitInterval": "3","revokeLimitUnit": "month","enableRevokeTimeLimit": false,"revokeTimeLimitDuration": 7,"revokeTimeLimitUnit": "days","enableGlobalEarningLimit": false,"globalEarningLimitTimeframe": "monthly","globalEarningLimitRollingDays": 30,"globalEarningLimitMaxPoints": 5000,"globalEarningLimitByTier": false,"globalEarningLimitTiers": {"tier_abc": {"maxPoints": 10000,"unlimited": false}},"isShowFreeCouponInCart": false,"limitShowFreeProductCart": 3},"meta": {},"message": "Operation completed successfully","timestamp": "2023-07-28T07:27:54.123Z"}