Class: Square::Loyalty::Rewards::Client
- Inherits:
-
Object
- Object
- Square::Loyalty::Rewards::Client
- Defined in:
- lib/square/loyalty/rewards/client.rb
Instance Method Summary collapse
-
#create(request_options: {}, **params) ⇒ Square::Types::CreateLoyaltyRewardResponse
Creates a loyalty reward.
-
#delete(request_options: {}, **params) ⇒ Square::Types::DeleteLoyaltyRewardResponse
Deletes a loyalty reward by doing the following:.
-
#get(request_options: {}, **params) ⇒ Square::Types::GetLoyaltyRewardResponse
Retrieves a loyalty reward.
- #initialize(client:) ⇒ void constructor
-
#redeem(request_options: {}, **params) ⇒ Square::Types::RedeemLoyaltyRewardResponse
Redeems a loyalty reward.
-
#search(request_options: {}, **params) ⇒ Square::Types::SearchLoyaltyRewardsResponse
Searches for loyalty rewards.
Constructor Details
#initialize(client:) ⇒ void
10 11 12 |
# File 'lib/square/loyalty/rewards/client.rb', line 10 def initialize(client:) @client = client end |
Instance Method Details
#create(request_options: {}, **params) ⇒ Square::Types::CreateLoyaltyRewardResponse
Creates a loyalty reward. In the process, the endpoint does following:
-
Uses the ‘reward_tier_id` in the request to determine the number of points
to lock for this reward.
-
If the request includes ‘order_id`, it adds the reward and related discount to the order.
After a reward is created, the points are locked and not available for the buyer to redeem another reward.
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/square/loyalty/rewards/client.rb', line 32 def create(request_options: {}, **params) params = Square::Internal::Types::Utils.normalize_keys(params) request = Square::Internal::JSON::Request.new( base_url: [:base_url], method: "POST", path: "v2/loyalty/rewards", body: Square::Loyalty::Rewards::Types::CreateLoyaltyRewardRequest.new(params).to_h, request_options: ) begin response = @client.send(request) rescue Net::HTTPRequestTimeout raise Square::Errors::TimeoutError end code = response.code.to_i if code.between?(200, 299) Square::Types::CreateLoyaltyRewardResponse.load(response.body) else error_class = Square::Errors::ResponseError.subclass_for_code(code) raise error_class.new(response.body, code: code) end end |
#delete(request_options: {}, **params) ⇒ Square::Types::DeleteLoyaltyRewardResponse
Deletes a loyalty reward by doing the following:
-
Returns the loyalty points back to the loyalty account.
-
If an order ID was specified when the reward was created
(see [CreateLoyaltyReward](api-endpoint:Loyalty-CreateLoyaltyReward)), it updates the order by removing the reward and related discounts.
You cannot delete a reward that has reached the terminal state (REDEEMED).
150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 |
# File 'lib/square/loyalty/rewards/client.rb', line 150 def delete(request_options: {}, **params) params = Square::Internal::Types::Utils.normalize_keys(params) request = Square::Internal::JSON::Request.new( base_url: [:base_url], method: "DELETE", path: "v2/loyalty/rewards/#{params[:reward_id]}", request_options: ) begin response = @client.send(request) rescue Net::HTTPRequestTimeout raise Square::Errors::TimeoutError end code = response.code.to_i if code.between?(200, 299) Square::Types::DeleteLoyaltyRewardResponse.load(response.body) else error_class = Square::Errors::ResponseError.subclass_for_code(code) raise error_class.new(response.body, code: code) end end |
#get(request_options: {}, **params) ⇒ Square::Types::GetLoyaltyRewardResponse
Retrieves a loyalty reward.
108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/square/loyalty/rewards/client.rb', line 108 def get(request_options: {}, **params) params = Square::Internal::Types::Utils.normalize_keys(params) request = Square::Internal::JSON::Request.new( base_url: [:base_url], method: "GET", path: "v2/loyalty/rewards/#{params[:reward_id]}", request_options: ) begin response = @client.send(request) rescue Net::HTTPRequestTimeout raise Square::Errors::TimeoutError end code = response.code.to_i if code.between?(200, 299) Square::Types::GetLoyaltyRewardResponse.load(response.body) else error_class = Square::Errors::ResponseError.subclass_for_code(code) raise error_class.new(response.body, code: code) end end |
#redeem(request_options: {}, **params) ⇒ Square::Types::RedeemLoyaltyRewardResponse
Redeems a loyalty reward.
The endpoint sets the reward to the ‘REDEEMED` terminal state.
If you are using your own order processing system (not using the Orders API), you call this endpoint after the buyer paid for the purchase.
After the reward reaches the terminal state, it cannot be deleted. In other words, points used for the reward cannot be returned to the account.
194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 |
# File 'lib/square/loyalty/rewards/client.rb', line 194 def redeem(request_options: {}, **params) params = Square::Internal::Types::Utils.normalize_keys(params) request_data = Square::Loyalty::Rewards::Types::RedeemLoyaltyRewardRequest.new(params).to_h non_body_param_names = ["reward_id"] body = request_data.except(*non_body_param_names) request = Square::Internal::JSON::Request.new( base_url: [:base_url], method: "POST", path: "v2/loyalty/rewards/#{params[:reward_id]}/redeem", body: body, request_options: ) begin response = @client.send(request) rescue Net::HTTPRequestTimeout raise Square::Errors::TimeoutError end code = response.code.to_i if code.between?(200, 299) Square::Types::RedeemLoyaltyRewardResponse.load(response.body) else error_class = Square::Errors::ResponseError.subclass_for_code(code) raise error_class.new(response.body, code: code) end end |
#search(request_options: {}, **params) ⇒ Square::Types::SearchLoyaltyRewardsResponse
Searches for loyalty rewards. This endpoint accepts a request with no query filters and returns results for all loyalty accounts. If you include a ‘query` object, `loyalty_account_id` is required and `status` is optional.
If you know a reward ID, use the [RetrieveLoyaltyReward](api-endpoint:Loyalty-RetrieveLoyaltyReward) endpoint.
Search results are sorted by ‘updated_at` in descending order.
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/square/loyalty/rewards/client.rb', line 73 def search(request_options: {}, **params) params = Square::Internal::Types::Utils.normalize_keys(params) request = Square::Internal::JSON::Request.new( base_url: [:base_url], method: "POST", path: "v2/loyalty/rewards/search", body: Square::Loyalty::Rewards::Types::SearchLoyaltyRewardsRequest.new(params).to_h, request_options: ) begin response = @client.send(request) rescue Net::HTTPRequestTimeout raise Square::Errors::TimeoutError end code = response.code.to_i if code.between?(200, 299) Square::Types::SearchLoyaltyRewardsResponse.load(response.body) else error_class = Square::Errors::ResponseError.subclass_for_code(code) raise error_class.new(response.body, code: code) end end |