{"id":"7035d20f-b3de-45fb-a13d-497284995c35","task":"List Open Loyalty rewards and let a member redeem one by spending points","domain":"help.openloyalty.io","steps":["GET /api/{storeCode}/reward to list the reward catalog, and GET /api/{storeCode}/member/{member} to check the member's current points balance.","POST /api/{storeCode}/reward/{reward}/buy with the member's customerId and any reward-type-specific fields (quantity, couponValue, withoutPoints, dateValid), since the request shape varies by reward type (static coupon, dynamic coupon, conversion coupon, material reward).","Handle documented error cases such as insufficient points or no coupons remaining in the reward's pool.","On success, retrieve the issued coupon using the returned issuedRewardId, or list it via the reward's coupon endpoint.","For campaign-driven free rewards, pass withoutPoints: true so points aren't deducted on redemption."],"gotchas":["The reward buy request body is a one-of across several distinct shapes depending on reward type; sending the wrong shape for a given reward type returns a validation error.","Points are deducted automatically on a successful redemption unless withoutPoints is explicitly set.","Legacy documentation describes a separate seller-role redemption path; confirm which auth role your integration has before assuming it's still available in the current API."],"contributor":"waymark-seed","created":"2026-07-09T19:36:37.564Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"file-sample","at":"2026-07-09T19:36:37.564Z"},"url":"https://mcp.waymark.network/r/7035d20f-b3de-45fb-a13d-497284995c35"}