square.rb 44.0.0.20250820 → 44.0.1.20250820

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (268) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +62 -9
  3. data/lib/square/apple_pay/client.rb +12 -6
  4. data/lib/square/bank_accounts/client.rb +40 -19
  5. data/lib/square/bookings/client.rb +124 -62
  6. data/lib/square/bookings/custom_attribute_definitions/client.rb +68 -32
  7. data/lib/square/bookings/custom_attributes/client.rb +80 -38
  8. data/lib/square/bookings/location_profiles/client.rb +16 -7
  9. data/lib/square/bookings/team_member_profiles/client.rb +28 -13
  10. data/lib/square/cards/client.rb +53 -24
  11. data/lib/square/cash_drawers/shifts/client.rb +48 -21
  12. data/lib/square/catalog/client.rb +112 -55
  13. data/lib/square/catalog/images/client.rb +22 -10
  14. data/lib/square/catalog/object/client.rb +40 -19
  15. data/lib/square/catalog/object/types/delete_object_request.rb +1 -1
  16. data/lib/square/catalog/object/types/get_object_request.rb +1 -1
  17. data/lib/square/checkout/client.rb +48 -24
  18. data/lib/square/checkout/payment_links/client.rb +64 -31
  19. data/lib/square/client.rb +1 -1
  20. data/lib/square/customers/cards/client.rb +24 -12
  21. data/lib/square/customers/client.rb +128 -62
  22. data/lib/square/customers/custom_attribute_definitions/client.rb +80 -38
  23. data/lib/square/customers/custom_attributes/client.rb +56 -26
  24. data/lib/square/customers/groups/client.rb +88 -43
  25. data/lib/square/customers/segments/client.rb +28 -13
  26. data/lib/square/devices/client.rb +28 -13
  27. data/lib/square/devices/codes/client.rb +40 -19
  28. data/lib/square/disputes/client.rb +75 -36
  29. data/lib/square/disputes/evidence/client.rb +40 -19
  30. data/lib/square/employees/client.rb +28 -13
  31. data/lib/square/errors/api_error.rb +8 -0
  32. data/lib/square/errors/client_error.rb +17 -0
  33. data/lib/square/errors/redirect_error.rb +8 -0
  34. data/lib/square/errors/response_error.rb +42 -0
  35. data/lib/square/errors/server_error.rb +11 -0
  36. data/lib/square/errors/timeout_error.rb +8 -0
  37. data/lib/square/events/client.rb +52 -25
  38. data/lib/square/gift_cards/activities/client.rb +28 -14
  39. data/lib/square/gift_cards/client.rb +88 -43
  40. data/lib/square/inventory/client.rb +164 -80
  41. data/lib/square/invoices/client.rb +127 -61
  42. data/lib/square/labor/break_types/client.rb +64 -31
  43. data/lib/square/labor/client.rb +132 -66
  44. data/lib/square/labor/employee_wages/client.rb +28 -13
  45. data/lib/square/labor/shifts/client.rb +60 -30
  46. data/lib/square/labor/team_member_wages/client.rb +28 -13
  47. data/lib/square/labor/workweek_configs/client.rb +28 -13
  48. data/lib/square/locations/client.rb +60 -30
  49. data/lib/square/locations/custom_attribute_definitions/client.rb +68 -32
  50. data/lib/square/locations/custom_attributes/client.rb +80 -38
  51. data/lib/square/locations/transactions/client.rb +52 -25
  52. data/lib/square/loyalty/accounts/client.rb +60 -30
  53. data/lib/square/loyalty/client.rb +12 -6
  54. data/lib/square/loyalty/programs/client.rb +36 -18
  55. data/lib/square/loyalty/programs/promotions/client.rb +52 -25
  56. data/lib/square/loyalty/rewards/client.rb +60 -30
  57. data/lib/square/merchants/client.rb +28 -13
  58. data/lib/square/merchants/custom_attribute_definitions/client.rb +68 -32
  59. data/lib/square/merchants/custom_attributes/client.rb +80 -38
  60. data/lib/square/mobile/client.rb +12 -6
  61. data/lib/square/o_auth/client.rb +46 -22
  62. data/lib/square/orders/client.rb +98 -46
  63. data/lib/square/orders/custom_attribute_definitions/client.rb +68 -32
  64. data/lib/square/orders/custom_attributes/client.rb +80 -38
  65. data/lib/square/payments/client.rb +90 -44
  66. data/lib/square/payouts/client.rb +44 -20
  67. data/lib/square/refunds/client.rb +42 -20
  68. data/lib/square/sites/client.rb +12 -6
  69. data/lib/square/snippets/client.rb +36 -18
  70. data/lib/square/subscriptions/client.rb +153 -73
  71. data/lib/square/team/client.rb +53 -24
  72. data/lib/square/team_members/client.rb +72 -36
  73. data/lib/square/team_members/wage_setting/client.rb +24 -12
  74. data/lib/square/terminal/actions/client.rb +48 -24
  75. data/lib/square/terminal/checkouts/client.rb +48 -24
  76. data/lib/square/terminal/client.rb +36 -18
  77. data/lib/square/terminal/refunds/client.rb +48 -24
  78. data/lib/square/types/action_cancel_reason.rb +2 -1
  79. data/lib/square/types/activity_type.rb +2 -1
  80. data/lib/square/types/application_details_external_square_product.rb +2 -1
  81. data/lib/square/types/archived_state.rb +2 -1
  82. data/lib/square/types/bank_account_status.rb +2 -1
  83. data/lib/square/types/bank_account_type.rb +2 -1
  84. data/lib/square/types/booking_booking_source.rb +2 -1
  85. data/lib/square/types/booking_creator_details_creator_type.rb +2 -1
  86. data/lib/square/types/booking_status.rb +2 -1
  87. data/lib/square/types/business_appointment_settings_alignment_time.rb +2 -1
  88. data/lib/square/types/business_appointment_settings_booking_location_type.rb +2 -1
  89. data/lib/square/types/business_appointment_settings_cancellation_policy.rb +2 -1
  90. data/lib/square/types/business_appointment_settings_max_appointments_per_day_limit_type.rb +2 -1
  91. data/lib/square/types/business_booking_profile_booking_policy.rb +2 -1
  92. data/lib/square/types/business_booking_profile_customer_timezone_choice.rb +2 -1
  93. data/lib/square/types/card_brand.rb +2 -1
  94. data/lib/square/types/card_co_brand.rb +2 -1
  95. data/lib/square/types/card_prepaid_type.rb +2 -1
  96. data/lib/square/types/card_type.rb +2 -1
  97. data/lib/square/types/cash_drawer_event_type.rb +2 -1
  98. data/lib/square/types/cash_drawer_shift_state.rb +2 -1
  99. data/lib/square/types/catalog_category_type.rb +2 -1
  100. data/lib/square/types/catalog_custom_attribute_definition_app_visibility.rb +2 -1
  101. data/lib/square/types/catalog_custom_attribute_definition_seller_visibility.rb +2 -1
  102. data/lib/square/types/catalog_custom_attribute_definition_type.rb +2 -1
  103. data/lib/square/types/catalog_discount_modify_tax_basis.rb +2 -1
  104. data/lib/square/types/catalog_discount_type.rb +2 -1
  105. data/lib/square/types/catalog_id_mapping.rb +1 -1
  106. data/lib/square/types/catalog_item_food_and_beverage_details_dietary_preference_standard_dietary_preference.rb +2 -1
  107. data/lib/square/types/catalog_item_food_and_beverage_details_dietary_preference_type.rb +2 -1
  108. data/lib/square/types/catalog_item_food_and_beverage_details_ingredient_standard_ingredient.rb +2 -1
  109. data/lib/square/types/catalog_item_product_type.rb +2 -1
  110. data/lib/square/types/catalog_modifier_list_modifier_type.rb +2 -1
  111. data/lib/square/types/catalog_modifier_list_selection_type.rb +2 -1
  112. data/lib/square/types/catalog_object_reference.rb +1 -1
  113. data/lib/square/types/catalog_object_type.rb +2 -1
  114. data/lib/square/types/catalog_pricing_type.rb +2 -1
  115. data/lib/square/types/catalog_quick_amount_type.rb +2 -1
  116. data/lib/square/types/catalog_quick_amounts_settings_option.rb +2 -1
  117. data/lib/square/types/change_timing.rb +2 -1
  118. data/lib/square/types/checkout_location_settings_branding_button_shape.rb +2 -1
  119. data/lib/square/types/checkout_location_settings_branding_header_type.rb +2 -1
  120. data/lib/square/types/checkout_options_payment_type.rb +2 -1
  121. data/lib/square/types/component_component_type.rb +2 -1
  122. data/lib/square/types/country.rb +2 -1
  123. data/lib/square/types/create_catalog_image_request.rb +1 -1
  124. data/lib/square/types/currency.rb +2 -1
  125. data/lib/square/types/custom_attribute_definition_visibility.rb +2 -1
  126. data/lib/square/types/customer_creation_source.rb +2 -1
  127. data/lib/square/types/customer_inclusion_exclusion.rb +2 -1
  128. data/lib/square/types/customer_sort_field.rb +2 -1
  129. data/lib/square/types/data_collection_options_input_type.rb +2 -1
  130. data/lib/square/types/day_of_week.rb +2 -1
  131. data/lib/square/types/destination_type.rb +2 -1
  132. data/lib/square/types/device_code_status.rb +2 -1
  133. data/lib/square/types/device_component_details_external_power.rb +2 -1
  134. data/lib/square/types/device_status_category.rb +2 -1
  135. data/lib/square/types/dispute_evidence_type.rb +2 -1
  136. data/lib/square/types/dispute_reason.rb +2 -1
  137. data/lib/square/types/dispute_state.rb +2 -1
  138. data/lib/square/types/ecom_visibility.rb +2 -1
  139. data/lib/square/types/employee_status.rb +2 -1
  140. data/lib/square/types/error_category.rb +2 -1
  141. data/lib/square/types/error_code.rb +2 -1
  142. data/lib/square/types/exclude_strategy.rb +2 -1
  143. data/lib/square/types/fulfillment_delivery_details_order_fulfillment_delivery_details_schedule_type.rb +2 -1
  144. data/lib/square/types/fulfillment_fulfillment_line_item_application.rb +2 -1
  145. data/lib/square/types/fulfillment_pickup_details_schedule_type.rb +2 -1
  146. data/lib/square/types/fulfillment_state.rb +2 -1
  147. data/lib/square/types/fulfillment_type.rb +2 -1
  148. data/lib/square/types/gift_card_activity_adjust_decrement_reason.rb +2 -1
  149. data/lib/square/types/gift_card_activity_adjust_increment_reason.rb +2 -1
  150. data/lib/square/types/gift_card_activity_clear_balance_reason.rb +2 -1
  151. data/lib/square/types/gift_card_activity_deactivate_reason.rb +2 -1
  152. data/lib/square/types/gift_card_activity_redeem_status.rb +2 -1
  153. data/lib/square/types/gift_card_activity_type.rb +2 -1
  154. data/lib/square/types/gift_card_gan_source.rb +2 -1
  155. data/lib/square/types/gift_card_status.rb +2 -1
  156. data/lib/square/types/gift_card_type.rb +2 -1
  157. data/lib/square/types/inventory_alert_type.rb +2 -1
  158. data/lib/square/types/inventory_change_type.rb +2 -1
  159. data/lib/square/types/inventory_state.rb +2 -1
  160. data/lib/square/types/invoice_attachment.rb +1 -1
  161. data/lib/square/types/invoice_automatic_payment_source.rb +2 -1
  162. data/lib/square/types/invoice_custom_field_placement.rb +2 -1
  163. data/lib/square/types/invoice_delivery_method.rb +2 -1
  164. data/lib/square/types/invoice_payment_reminder_status.rb +2 -1
  165. data/lib/square/types/invoice_request_method.rb +2 -1
  166. data/lib/square/types/invoice_request_type.rb +2 -1
  167. data/lib/square/types/invoice_status.rb +2 -1
  168. data/lib/square/types/job_assignment_pay_type.rb +2 -1
  169. data/lib/square/types/list_payment_refunds_request_sort_field.rb +2 -1
  170. data/lib/square/types/list_payments_request_sort_field.rb +2 -1
  171. data/lib/square/types/location_capability.rb +2 -1
  172. data/lib/square/types/location_status.rb +2 -1
  173. data/lib/square/types/location_type.rb +2 -1
  174. data/lib/square/types/loyalty_event_source.rb +2 -1
  175. data/lib/square/types/loyalty_event_type.rb +2 -1
  176. data/lib/square/types/loyalty_program_accrual_rule_tax_mode.rb +2 -1
  177. data/lib/square/types/loyalty_program_accrual_rule_type.rb +2 -1
  178. data/lib/square/types/loyalty_program_status.rb +2 -1
  179. data/lib/square/types/loyalty_promotion_incentive_type.rb +2 -1
  180. data/lib/square/types/loyalty_promotion_status.rb +2 -1
  181. data/lib/square/types/loyalty_promotion_trigger_limit_interval.rb +2 -1
  182. data/lib/square/types/loyalty_reward_status.rb +2 -1
  183. data/lib/square/types/measurement_unit_area.rb +2 -1
  184. data/lib/square/types/measurement_unit_length.rb +2 -1
  185. data/lib/square/types/measurement_unit_time.rb +2 -1
  186. data/lib/square/types/measurement_unit_unit_type.rb +2 -1
  187. data/lib/square/types/measurement_unit_volume.rb +2 -1
  188. data/lib/square/types/measurement_unit_weight.rb +2 -1
  189. data/lib/square/types/merchant_status.rb +2 -1
  190. data/lib/square/types/oauth_authorization_revoked_event_revoker_type.rb +2 -1
  191. data/lib/square/types/order_fulfillment_delivery_details_schedule_type.rb +2 -1
  192. data/lib/square/types/order_fulfillment_fulfillment_line_item_application.rb +2 -1
  193. data/lib/square/types/order_fulfillment_pickup_details_schedule_type.rb +2 -1
  194. data/lib/square/types/order_fulfillment_state.rb +2 -1
  195. data/lib/square/types/order_fulfillment_type.rb +2 -1
  196. data/lib/square/types/order_line_item_discount_scope.rb +2 -1
  197. data/lib/square/types/order_line_item_discount_type.rb +2 -1
  198. data/lib/square/types/order_line_item_item_type.rb +2 -1
  199. data/lib/square/types/order_line_item_tax_scope.rb +2 -1
  200. data/lib/square/types/order_line_item_tax_type.rb +2 -1
  201. data/lib/square/types/order_service_charge_calculation_phase.rb +2 -1
  202. data/lib/square/types/order_service_charge_scope.rb +2 -1
  203. data/lib/square/types/order_service_charge_treatment_type.rb +2 -1
  204. data/lib/square/types/order_service_charge_type.rb +2 -1
  205. data/lib/square/types/order_state.rb +2 -1
  206. data/lib/square/types/payment_options_delay_action.rb +2 -1
  207. data/lib/square/types/payout_fee_type.rb +2 -1
  208. data/lib/square/types/payout_status.rb +2 -1
  209. data/lib/square/types/payout_type.rb +2 -1
  210. data/lib/square/types/product.rb +2 -1
  211. data/lib/square/types/refund_status.rb +2 -1
  212. data/lib/square/types/register_domain_response_status.rb +2 -1
  213. data/lib/square/types/risk_evaluation_risk_level.rb +2 -1
  214. data/lib/square/types/scheduled_shift_filter_assignment_status.rb +2 -1
  215. data/lib/square/types/scheduled_shift_filter_scheduled_shift_status.rb +2 -1
  216. data/lib/square/types/scheduled_shift_notification_audience.rb +2 -1
  217. data/lib/square/types/scheduled_shift_sort_field.rb +2 -1
  218. data/lib/square/types/scheduled_shift_workday_matcher.rb +2 -1
  219. data/lib/square/types/search_catalog_items_request_stock_level.rb +2 -1
  220. data/lib/square/types/search_orders_sort_field.rb +2 -1
  221. data/lib/square/types/search_vendors_request_sort_field.rb +2 -1
  222. data/lib/square/types/shift_filter_status.rb +2 -1
  223. data/lib/square/types/shift_sort_field.rb +2 -1
  224. data/lib/square/types/shift_status.rb +2 -1
  225. data/lib/square/types/shift_workday_matcher.rb +2 -1
  226. data/lib/square/types/sort_order.rb +2 -1
  227. data/lib/square/types/subscription_action_type.rb +2 -1
  228. data/lib/square/types/subscription_cadence.rb +2 -1
  229. data/lib/square/types/subscription_event_info_code.rb +2 -1
  230. data/lib/square/types/subscription_event_subscription_event_type.rb +2 -1
  231. data/lib/square/types/subscription_pricing_type.rb +2 -1
  232. data/lib/square/types/subscription_status.rb +2 -1
  233. data/lib/square/types/tax_calculation_phase.rb +2 -1
  234. data/lib/square/types/tax_inclusion_type.rb +2 -1
  235. data/lib/square/types/team_member_assigned_locations_assignment_type.rb +2 -1
  236. data/lib/square/types/team_member_invitation_status.rb +2 -1
  237. data/lib/square/types/team_member_status.rb +2 -1
  238. data/lib/square/types/tender_bank_account_details_status.rb +2 -1
  239. data/lib/square/types/tender_buy_now_pay_later_details_brand.rb +2 -1
  240. data/lib/square/types/tender_buy_now_pay_later_details_status.rb +2 -1
  241. data/lib/square/types/tender_card_details_entry_method.rb +2 -1
  242. data/lib/square/types/tender_card_details_status.rb +2 -1
  243. data/lib/square/types/tender_square_account_details_status.rb +2 -1
  244. data/lib/square/types/tender_type.rb +2 -1
  245. data/lib/square/types/terminal_action_action_type.rb +2 -1
  246. data/lib/square/types/timecard_filter_status.rb +2 -1
  247. data/lib/square/types/timecard_sort_field.rb +2 -1
  248. data/lib/square/types/timecard_status.rb +2 -1
  249. data/lib/square/types/timecard_workday_matcher.rb +2 -1
  250. data/lib/square/types/transaction_product.rb +2 -1
  251. data/lib/square/types/transaction_type.rb +2 -1
  252. data/lib/square/types/v_1_order_history_entry_action.rb +2 -1
  253. data/lib/square/types/v_1_order_state.rb +2 -1
  254. data/lib/square/types/v_1_tender_card_brand.rb +2 -1
  255. data/lib/square/types/v_1_tender_entry_method.rb +2 -1
  256. data/lib/square/types/v_1_tender_type.rb +2 -1
  257. data/lib/square/types/v_1_update_order_request_action.rb +2 -1
  258. data/lib/square/types/vendor_status.rb +2 -1
  259. data/lib/square/types/visibility_filter.rb +2 -1
  260. data/lib/square/types/weekday.rb +2 -1
  261. data/lib/square/v_1_transactions/client.rb +40 -15
  262. data/lib/square/vendors/client.rb +84 -42
  263. data/lib/square/version.rb +5 -0
  264. data/lib/square/webhooks/event_types/client.rb +16 -7
  265. data/lib/square/webhooks/subscriptions/client.rb +88 -43
  266. data/lib/square.rb +7 -6
  267. data/test/square/integration/client_tests/test_catalog.rb +3 -0
  268. metadata +9 -2
@@ -13,22 +13,31 @@ module Square
13
13
  #
14
14
  # @return [Square::Types::ListDevicesResponse]
15
15
  def list(request_options: {}, **params)
16
- _query_param_names = %w[cursor sort_order limit location_id]
16
+ _query_param_names = [
17
+ %w[cursor sort_order limit location_id],
18
+ %i[cursor sort_order limit location_id]
19
+ ].flatten
17
20
  _query = params.slice(*_query_param_names)
18
21
  params.except(*_query_param_names)
19
22
 
20
23
  _request = Square::Internal::JSON::Request.new(
21
- base_url: request_options[:base_url] || Square::Environment::SANDBOX,
24
+ base_url: request_options[:base_url] || Square::Environment::PRODUCTION,
22
25
  method: "GET",
23
26
  path: "v2/devices",
24
27
  query: _query
25
28
  )
26
- _response = @client.send(_request)
27
- if _response.code >= "200" && _response.code < "300"
28
- return Square::Types::ListDevicesResponse.load(_response.body)
29
+ begin
30
+ _response = @client.send(_request)
31
+ rescue Net::HTTPRequestTimeout
32
+ raise Square::Errors::TimeoutError
33
+ end
34
+ code = _response.code.to_i
35
+ if code.between?(200, 299)
36
+ Square::Types::ListDevicesResponse.load(_response.body)
37
+ else
38
+ error_class = Square::Errors::ResponseError.subclass_for_code(code)
39
+ raise error_class.new(_response.body, code: code)
29
40
  end
30
-
31
- raise _response.body
32
41
  end
33
42
 
34
43
  # Retrieves Device with the associated `device_id`.
@@ -36,16 +45,22 @@ module Square
36
45
  # @return [Square::Types::GetDeviceResponse]
37
46
  def get(request_options: {}, **params)
38
47
  _request = Square::Internal::JSON::Request.new(
39
- base_url: request_options[:base_url] || Square::Environment::SANDBOX,
48
+ base_url: request_options[:base_url] || Square::Environment::PRODUCTION,
40
49
  method: "GET",
41
50
  path: "v2/devices/#{params[:device_id]}"
42
51
  )
43
- _response = @client.send(_request)
44
- if _response.code >= "200" && _response.code < "300"
45
- return Square::Types::GetDeviceResponse.load(_response.body)
52
+ begin
53
+ _response = @client.send(_request)
54
+ rescue Net::HTTPRequestTimeout
55
+ raise Square::Errors::TimeoutError
56
+ end
57
+ code = _response.code.to_i
58
+ if code.between?(200, 299)
59
+ Square::Types::GetDeviceResponse.load(_response.body)
60
+ else
61
+ error_class = Square::Errors::ResponseError.subclass_for_code(code)
62
+ raise error_class.new(_response.body, code: code)
46
63
  end
47
-
48
- raise _response.body
49
64
  end
50
65
 
51
66
  # @return [Square::Codes::Client]
@@ -13,22 +13,31 @@ module Square
13
13
  #
14
14
  # @return [Square::Types::ListDeviceCodesResponse]
15
15
  def list(request_options: {}, **params)
16
- _query_param_names = %w[cursor location_id product_type status]
16
+ _query_param_names = [
17
+ %w[cursor location_id product_type status],
18
+ %i[cursor location_id product_type status]
19
+ ].flatten
17
20
  _query = params.slice(*_query_param_names)
18
21
  params.except(*_query_param_names)
19
22
 
20
23
  _request = Square::Internal::JSON::Request.new(
21
- base_url: request_options[:base_url] || Square::Environment::SANDBOX,
24
+ base_url: request_options[:base_url] || Square::Environment::PRODUCTION,
22
25
  method: "GET",
23
26
  path: "v2/devices/codes",
24
27
  query: _query
25
28
  )
26
- _response = @client.send(_request)
27
- if _response.code >= "200" && _response.code < "300"
28
- return Square::Types::ListDeviceCodesResponse.load(_response.body)
29
+ begin
30
+ _response = @client.send(_request)
31
+ rescue Net::HTTPRequestTimeout
32
+ raise Square::Errors::TimeoutError
33
+ end
34
+ code = _response.code.to_i
35
+ if code.between?(200, 299)
36
+ Square::Types::ListDeviceCodesResponse.load(_response.body)
37
+ else
38
+ error_class = Square::Errors::ResponseError.subclass_for_code(code)
39
+ raise error_class.new(_response.body, code: code)
29
40
  end
30
-
31
- raise _response.body
32
41
  end
33
42
 
34
43
  # Creates a DeviceCode that can be used to login to a Square Terminal device to enter the connected
@@ -37,17 +46,23 @@ module Square
37
46
  # @return [Square::Types::CreateDeviceCodeResponse]
38
47
  def create(request_options: {}, **params)
39
48
  _request = Square::Internal::JSON::Request.new(
40
- base_url: request_options[:base_url] || Square::Environment::SANDBOX,
49
+ base_url: request_options[:base_url] || Square::Environment::PRODUCTION,
41
50
  method: "POST",
42
51
  path: "v2/devices/codes",
43
52
  body: params
44
53
  )
45
- _response = @client.send(_request)
46
- if _response.code >= "200" && _response.code < "300"
47
- return Square::Types::CreateDeviceCodeResponse.load(_response.body)
54
+ begin
55
+ _response = @client.send(_request)
56
+ rescue Net::HTTPRequestTimeout
57
+ raise Square::Errors::TimeoutError
58
+ end
59
+ code = _response.code.to_i
60
+ if code.between?(200, 299)
61
+ Square::Types::CreateDeviceCodeResponse.load(_response.body)
62
+ else
63
+ error_class = Square::Errors::ResponseError.subclass_for_code(code)
64
+ raise error_class.new(_response.body, code: code)
48
65
  end
49
-
50
- raise _response.body
51
66
  end
52
67
 
53
68
  # Retrieves DeviceCode with the associated ID.
@@ -55,16 +70,22 @@ module Square
55
70
  # @return [Square::Types::GetDeviceCodeResponse]
56
71
  def get(request_options: {}, **params)
57
72
  _request = Square::Internal::JSON::Request.new(
58
- base_url: request_options[:base_url] || Square::Environment::SANDBOX,
73
+ base_url: request_options[:base_url] || Square::Environment::PRODUCTION,
59
74
  method: "GET",
60
75
  path: "v2/devices/codes/#{params[:id]}"
61
76
  )
62
- _response = @client.send(_request)
63
- if _response.code >= "200" && _response.code < "300"
64
- return Square::Types::GetDeviceCodeResponse.load(_response.body)
77
+ begin
78
+ _response = @client.send(_request)
79
+ rescue Net::HTTPRequestTimeout
80
+ raise Square::Errors::TimeoutError
81
+ end
82
+ code = _response.code.to_i
83
+ if code.between?(200, 299)
84
+ Square::Types::GetDeviceCodeResponse.load(_response.body)
85
+ else
86
+ error_class = Square::Errors::ResponseError.subclass_for_code(code)
87
+ raise error_class.new(_response.body, code: code)
65
88
  end
66
-
67
- raise _response.body
68
89
  end
69
90
  end
70
91
  end
@@ -12,22 +12,31 @@ module Square
12
12
  #
13
13
  # @return [Square::Types::ListDisputesResponse]
14
14
  def list(request_options: {}, **params)
15
- _query_param_names = %w[cursor states location_id]
15
+ _query_param_names = [
16
+ %w[cursor states location_id],
17
+ %i[cursor states location_id]
18
+ ].flatten
16
19
  _query = params.slice(*_query_param_names)
17
20
  params.except(*_query_param_names)
18
21
 
19
22
  _request = Square::Internal::JSON::Request.new(
20
- base_url: request_options[:base_url] || Square::Environment::SANDBOX,
23
+ base_url: request_options[:base_url] || Square::Environment::PRODUCTION,
21
24
  method: "GET",
22
25
  path: "v2/disputes",
23
26
  query: _query
24
27
  )
25
- _response = @client.send(_request)
26
- if _response.code >= "200" && _response.code < "300"
27
- return Square::Types::ListDisputesResponse.load(_response.body)
28
+ begin
29
+ _response = @client.send(_request)
30
+ rescue Net::HTTPRequestTimeout
31
+ raise Square::Errors::TimeoutError
32
+ end
33
+ code = _response.code.to_i
34
+ if code.between?(200, 299)
35
+ Square::Types::ListDisputesResponse.load(_response.body)
36
+ else
37
+ error_class = Square::Errors::ResponseError.subclass_for_code(code)
38
+ raise error_class.new(_response.body, code: code)
28
39
  end
29
-
30
- raise _response.body
31
40
  end
32
41
 
33
42
  # Returns details about a specific dispute.
@@ -35,16 +44,22 @@ module Square
35
44
  # @return [Square::Types::GetDisputeResponse]
36
45
  def get(request_options: {}, **params)
37
46
  _request = Square::Internal::JSON::Request.new(
38
- base_url: request_options[:base_url] || Square::Environment::SANDBOX,
47
+ base_url: request_options[:base_url] || Square::Environment::PRODUCTION,
39
48
  method: "GET",
40
49
  path: "v2/disputes/#{params[:dispute_id]}"
41
50
  )
42
- _response = @client.send(_request)
43
- if _response.code >= "200" && _response.code < "300"
44
- return Square::Types::GetDisputeResponse.load(_response.body)
51
+ begin
52
+ _response = @client.send(_request)
53
+ rescue Net::HTTPRequestTimeout
54
+ raise Square::Errors::TimeoutError
55
+ end
56
+ code = _response.code.to_i
57
+ if code.between?(200, 299)
58
+ Square::Types::GetDisputeResponse.load(_response.body)
59
+ else
60
+ error_class = Square::Errors::ResponseError.subclass_for_code(code)
61
+ raise error_class.new(_response.body, code: code)
45
62
  end
46
-
47
- raise _response.body
48
63
  end
49
64
 
50
65
  # Accepts the loss on a dispute. Square returns the disputed amount to the cardholder and
@@ -56,16 +71,22 @@ module Square
56
71
  # @return [Square::Types::AcceptDisputeResponse]
57
72
  def accept(request_options: {}, **params)
58
73
  _request = Square::Internal::JSON::Request.new(
59
- base_url: request_options[:base_url] || Square::Environment::SANDBOX,
74
+ base_url: request_options[:base_url] || Square::Environment::PRODUCTION,
60
75
  method: "POST",
61
76
  path: "v2/disputes/#{params[:dispute_id]}/accept"
62
77
  )
63
- _response = @client.send(_request)
64
- if _response.code >= "200" && _response.code < "300"
65
- return Square::Types::AcceptDisputeResponse.load(_response.body)
78
+ begin
79
+ _response = @client.send(_request)
80
+ rescue Net::HTTPRequestTimeout
81
+ raise Square::Errors::TimeoutError
82
+ end
83
+ code = _response.code.to_i
84
+ if code.between?(200, 299)
85
+ Square::Types::AcceptDisputeResponse.load(_response.body)
86
+ else
87
+ error_class = Square::Errors::ResponseError.subclass_for_code(code)
88
+ raise error_class.new(_response.body, code: code)
66
89
  end
67
-
68
- raise _response.body
69
90
  end
70
91
 
71
92
  # Uploads a file to use as evidence in a dispute challenge. The endpoint accepts HTTP
@@ -89,12 +110,18 @@ module Square
89
110
  path: "v2/disputes/#{params[:dispute_id]}/evidence-files",
90
111
  body: body
91
112
  )
92
- _response = @client.send(_request)
93
- if _response.code >= "200" && _response.code < "300"
94
- return Square::Types::CreateDisputeEvidenceFileResponse.load(_response.body)
113
+ begin
114
+ _response = @client.send(_request)
115
+ rescue Net::HTTPRequestTimeout
116
+ raise Square::Errors::TimeoutError
117
+ end
118
+ code = _response.code.to_i
119
+ if code.between?(200, 299)
120
+ Square::Types::CreateDisputeEvidenceFileResponse.load(_response.body)
121
+ else
122
+ error_class = Square::Errors::ResponseError.subclass_for_code(code)
123
+ raise error_class.new(_response.body, code: code)
95
124
  end
96
-
97
- raise _response.body
98
125
  end
99
126
 
100
127
  # Uploads text to use as evidence for a dispute challenge.
@@ -104,17 +131,23 @@ module Square
104
131
  _path_param_names = ["dispute_id"]
105
132
 
106
133
  _request = Square::Internal::JSON::Request.new(
107
- base_url: request_options[:base_url] || Square::Environment::SANDBOX,
134
+ base_url: request_options[:base_url] || Square::Environment::PRODUCTION,
108
135
  method: "POST",
109
136
  path: "v2/disputes/#{params[:dispute_id]}/evidence-text",
110
137
  body: params.except(*_path_param_names)
111
138
  )
112
- _response = @client.send(_request)
113
- if _response.code >= "200" && _response.code < "300"
114
- return Square::Types::CreateDisputeEvidenceTextResponse.load(_response.body)
139
+ begin
140
+ _response = @client.send(_request)
141
+ rescue Net::HTTPRequestTimeout
142
+ raise Square::Errors::TimeoutError
143
+ end
144
+ code = _response.code.to_i
145
+ if code.between?(200, 299)
146
+ Square::Types::CreateDisputeEvidenceTextResponse.load(_response.body)
147
+ else
148
+ error_class = Square::Errors::ResponseError.subclass_for_code(code)
149
+ raise error_class.new(_response.body, code: code)
115
150
  end
116
-
117
- raise _response.body
118
151
  end
119
152
 
120
153
  # Submits evidence to the cardholder's bank.
@@ -128,16 +161,22 @@ module Square
128
161
  # @return [Square::Types::SubmitEvidenceResponse]
129
162
  def submit_evidence(request_options: {}, **params)
130
163
  _request = Square::Internal::JSON::Request.new(
131
- base_url: request_options[:base_url] || Square::Environment::SANDBOX,
164
+ base_url: request_options[:base_url] || Square::Environment::PRODUCTION,
132
165
  method: "POST",
133
166
  path: "v2/disputes/#{params[:dispute_id]}/submit-evidence"
134
167
  )
135
- _response = @client.send(_request)
136
- if _response.code >= "200" && _response.code < "300"
137
- return Square::Types::SubmitEvidenceResponse.load(_response.body)
168
+ begin
169
+ _response = @client.send(_request)
170
+ rescue Net::HTTPRequestTimeout
171
+ raise Square::Errors::TimeoutError
172
+ end
173
+ code = _response.code.to_i
174
+ if code.between?(200, 299)
175
+ Square::Types::SubmitEvidenceResponse.load(_response.body)
176
+ else
177
+ error_class = Square::Errors::ResponseError.subclass_for_code(code)
178
+ raise error_class.new(_response.body, code: code)
138
179
  end
139
-
140
- raise _response.body
141
180
  end
142
181
 
143
182
  # @return [Square::Evidence::Client]
@@ -13,22 +13,31 @@ module Square
13
13
  #
14
14
  # @return [Square::Types::ListDisputeEvidenceResponse]
15
15
  def list(request_options: {}, **params)
16
- _query_param_names = ["cursor"]
16
+ _query_param_names = [
17
+ ["cursor"],
18
+ %i[cursor]
19
+ ].flatten
17
20
  _query = params.slice(*_query_param_names)
18
21
  params = params.except(*_query_param_names)
19
22
 
20
23
  _request = Square::Internal::JSON::Request.new(
21
- base_url: request_options[:base_url] || Square::Environment::SANDBOX,
24
+ base_url: request_options[:base_url] || Square::Environment::PRODUCTION,
22
25
  method: "GET",
23
26
  path: "v2/disputes/#{params[:dispute_id]}/evidence",
24
27
  query: _query
25
28
  )
26
- _response = @client.send(_request)
27
- if _response.code >= "200" && _response.code < "300"
28
- return Square::Types::ListDisputeEvidenceResponse.load(_response.body)
29
+ begin
30
+ _response = @client.send(_request)
31
+ rescue Net::HTTPRequestTimeout
32
+ raise Square::Errors::TimeoutError
33
+ end
34
+ code = _response.code.to_i
35
+ if code.between?(200, 299)
36
+ Square::Types::ListDisputeEvidenceResponse.load(_response.body)
37
+ else
38
+ error_class = Square::Errors::ResponseError.subclass_for_code(code)
39
+ raise error_class.new(_response.body, code: code)
29
40
  end
30
-
31
- raise _response.body
32
41
  end
33
42
 
34
43
  # Returns the metadata for the evidence specified in the request URL path.
@@ -38,16 +47,22 @@ module Square
38
47
  # @return [Square::Types::GetDisputeEvidenceResponse]
39
48
  def get(request_options: {}, **params)
40
49
  _request = Square::Internal::JSON::Request.new(
41
- base_url: request_options[:base_url] || Square::Environment::SANDBOX,
50
+ base_url: request_options[:base_url] || Square::Environment::PRODUCTION,
42
51
  method: "GET",
43
52
  path: "v2/disputes/#{params[:dispute_id]}/evidence/#{params[:evidence_id]}"
44
53
  )
45
- _response = @client.send(_request)
46
- if _response.code >= "200" && _response.code < "300"
47
- return Square::Types::GetDisputeEvidenceResponse.load(_response.body)
54
+ begin
55
+ _response = @client.send(_request)
56
+ rescue Net::HTTPRequestTimeout
57
+ raise Square::Errors::TimeoutError
58
+ end
59
+ code = _response.code.to_i
60
+ if code.between?(200, 299)
61
+ Square::Types::GetDisputeEvidenceResponse.load(_response.body)
62
+ else
63
+ error_class = Square::Errors::ResponseError.subclass_for_code(code)
64
+ raise error_class.new(_response.body, code: code)
48
65
  end
49
-
50
- raise _response.body
51
66
  end
52
67
 
53
68
  # Removes specified evidence from a dispute.
@@ -56,16 +71,22 @@ module Square
56
71
  # @return [Square::Types::DeleteDisputeEvidenceResponse]
57
72
  def delete(request_options: {}, **params)
58
73
  _request = Square::Internal::JSON::Request.new(
59
- base_url: request_options[:base_url] || Square::Environment::SANDBOX,
74
+ base_url: request_options[:base_url] || Square::Environment::PRODUCTION,
60
75
  method: "DELETE",
61
76
  path: "v2/disputes/#{params[:dispute_id]}/evidence/#{params[:evidence_id]}"
62
77
  )
63
- _response = @client.send(_request)
64
- if _response.code >= "200" && _response.code < "300"
65
- return Square::Types::DeleteDisputeEvidenceResponse.load(_response.body)
78
+ begin
79
+ _response = @client.send(_request)
80
+ rescue Net::HTTPRequestTimeout
81
+ raise Square::Errors::TimeoutError
82
+ end
83
+ code = _response.code.to_i
84
+ if code.between?(200, 299)
85
+ Square::Types::DeleteDisputeEvidenceResponse.load(_response.body)
86
+ else
87
+ error_class = Square::Errors::ResponseError.subclass_for_code(code)
88
+ raise error_class.new(_response.body, code: code)
66
89
  end
67
-
68
- raise _response.body
69
90
  end
70
91
  end
71
92
  end
@@ -10,37 +10,52 @@ module Square
10
10
 
11
11
  # @return [Square::Types::ListEmployeesResponse]
12
12
  def list(request_options: {}, **params)
13
- _query_param_names = %w[location_id status limit cursor]
13
+ _query_param_names = [
14
+ %w[location_id status limit cursor],
15
+ %i[location_id status limit cursor]
16
+ ].flatten
14
17
  _query = params.slice(*_query_param_names)
15
18
  params.except(*_query_param_names)
16
19
 
17
20
  _request = Square::Internal::JSON::Request.new(
18
- base_url: request_options[:base_url] || Square::Environment::SANDBOX,
21
+ base_url: request_options[:base_url] || Square::Environment::PRODUCTION,
19
22
  method: "GET",
20
23
  path: "v2/employees",
21
24
  query: _query
22
25
  )
23
- _response = @client.send(_request)
24
- if _response.code >= "200" && _response.code < "300"
25
- return Square::Types::ListEmployeesResponse.load(_response.body)
26
+ begin
27
+ _response = @client.send(_request)
28
+ rescue Net::HTTPRequestTimeout
29
+ raise Square::Errors::TimeoutError
30
+ end
31
+ code = _response.code.to_i
32
+ if code.between?(200, 299)
33
+ Square::Types::ListEmployeesResponse.load(_response.body)
34
+ else
35
+ error_class = Square::Errors::ResponseError.subclass_for_code(code)
36
+ raise error_class.new(_response.body, code: code)
26
37
  end
27
-
28
- raise _response.body
29
38
  end
30
39
 
31
40
  # @return [Square::Types::GetEmployeeResponse]
32
41
  def get(request_options: {}, **params)
33
42
  _request = Square::Internal::JSON::Request.new(
34
- base_url: request_options[:base_url] || Square::Environment::SANDBOX,
43
+ base_url: request_options[:base_url] || Square::Environment::PRODUCTION,
35
44
  method: "GET",
36
45
  path: "v2/employees/#{params[:id]}"
37
46
  )
38
- _response = @client.send(_request)
39
- if _response.code >= "200" && _response.code < "300"
40
- return Square::Types::GetEmployeeResponse.load(_response.body)
47
+ begin
48
+ _response = @client.send(_request)
49
+ rescue Net::HTTPRequestTimeout
50
+ raise Square::Errors::TimeoutError
51
+ end
52
+ code = _response.code.to_i
53
+ if code.between?(200, 299)
54
+ Square::Types::GetEmployeeResponse.load(_response.body)
55
+ else
56
+ error_class = Square::Errors::ResponseError.subclass_for_code(code)
57
+ raise error_class.new(_response.body, code: code)
41
58
  end
42
-
43
- raise _response.body
44
59
  end
45
60
  end
46
61
  end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Square
4
+ module Errors
5
+ class ApiError < StandardError
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Square
4
+ module Errors
5
+ class ClientError < ResponseError
6
+ end
7
+
8
+ class UnauthorizedError < ClientError
9
+ end
10
+
11
+ class ForbiddenError < ClientError
12
+ end
13
+
14
+ class NotFoundError < ClientError
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Square
4
+ module Errors
5
+ class RedirectError < ResponseError
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Square
4
+ module Errors
5
+ class ResponseError < ApiError
6
+ attr_reader :code
7
+
8
+ def initialize(msg, code:)
9
+ @code = code
10
+ super(msg)
11
+ end
12
+
13
+ def inspect
14
+ "#<#{self.class.name} @code=#{code} @body=#{message}>"
15
+ end
16
+
17
+ # Returns the most appropriate error class for the given code.
18
+ #
19
+ # @return [Class]
20
+ def self.subclass_for_code(code)
21
+ case code
22
+ when 300..399
23
+ RedirectError
24
+ when 401
25
+ UnauthorizedError
26
+ when 403
27
+ ForbiddenError
28
+ when 404
29
+ NotFoundError
30
+ when 400..499
31
+ ClientError
32
+ when 503
33
+ ServiceUnavailableError
34
+ when 500..599
35
+ ServerError
36
+ else
37
+ ResponseError
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Square
4
+ module Errors
5
+ class ServerError < ResponseError
6
+ end
7
+
8
+ class ServiceUnavailableError < ApiError
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Square
4
+ module Errors
5
+ class TimeoutError < ApiError
6
+ end
7
+ end
8
+ end