square.rb 44.2.0.20251016 → 45.0.1.20260122

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 (499) hide show
  1. checksums.yaml +4 -4
  2. data/.fern/metadata.json +9 -0
  3. data/.fernignore +20 -0
  4. data/.rubocop.yml +60 -0
  5. data/LICENSE +1 -1
  6. data/Rakefile +29 -0
  7. data/custom.gemspec.rb +19 -0
  8. data/lib/square/apple_pay/client.rb +24 -10
  9. data/lib/square/bank_accounts/client.rb +144 -31
  10. data/lib/square/bank_accounts/types/create_bank_account_request.rb +13 -0
  11. data/lib/square/bank_accounts/types/disable_bank_account_request.rb +11 -0
  12. data/lib/square/bank_accounts/types/get_by_v_1_id_bank_accounts_request.rb +1 -1
  13. data/lib/square/bank_accounts/types/list_bank_accounts_request.rb +1 -0
  14. data/lib/square/bookings/client.rb +238 -100
  15. data/lib/square/bookings/custom_attribute_definitions/client.rb +139 -67
  16. data/lib/square/bookings/custom_attribute_definitions/types/create_booking_custom_attribute_definition_request.rb +1 -3
  17. data/lib/square/bookings/custom_attribute_definitions/types/update_booking_custom_attribute_definition_request.rb +1 -3
  18. data/lib/square/bookings/custom_attributes/client.rb +168 -76
  19. data/lib/square/bookings/custom_attributes/types/bulk_delete_booking_custom_attributes_request.rb +1 -3
  20. data/lib/square/bookings/custom_attributes/types/bulk_upsert_booking_custom_attributes_request.rb +1 -3
  21. data/lib/square/bookings/location_profiles/client.rb +44 -24
  22. data/lib/square/bookings/team_member_profiles/client.rb +66 -31
  23. data/lib/square/cards/client.rb +103 -45
  24. data/lib/square/cash_drawers/client.rb +3 -1
  25. data/lib/square/cash_drawers/shifts/client.rb +121 -61
  26. data/lib/square/catalog/client.rb +203 -91
  27. data/lib/square/catalog/images/client.rb +50 -20
  28. data/lib/square/catalog/object/client.rb +66 -29
  29. data/lib/square/catalog/object/types/delete_object_request.rb +1 -1
  30. data/lib/square/catalog/object/types/get_object_request.rb +1 -1
  31. data/lib/square/catalog/types/batch_upsert_catalog_objects_request.rb +1 -3
  32. data/lib/square/catalog/types/search_catalog_items_request.rb +3 -9
  33. data/lib/square/catalog/types/search_catalog_objects_request.rb +1 -3
  34. data/lib/square/channels/client.rb +85 -38
  35. data/lib/square/checkout/client.rb +77 -31
  36. data/lib/square/checkout/payment_links/client.rb +120 -54
  37. data/lib/square/client.rb +8 -10
  38. data/lib/square/customers/cards/client.rb +43 -16
  39. data/lib/square/customers/client.rb +220 -97
  40. data/lib/square/customers/custom_attribute_definitions/client.rb +157 -74
  41. data/lib/square/customers/custom_attribute_definitions/types/batch_upsert_customer_custom_attributes_request.rb +1 -3
  42. data/lib/square/customers/custom_attribute_definitions/types/create_customer_custom_attribute_definition_request.rb +1 -3
  43. data/lib/square/customers/custom_attribute_definitions/types/update_customer_custom_attribute_definition_request.rb +1 -3
  44. data/lib/square/customers/custom_attributes/client.rb +117 -53
  45. data/lib/square/customers/groups/client.rb +156 -67
  46. data/lib/square/customers/segments/client.rb +62 -31
  47. data/lib/square/customers/types/bulk_create_customers_request.rb +1 -3
  48. data/lib/square/customers/types/bulk_update_customers_request.rb +1 -3
  49. data/lib/square/devices/client.rb +66 -31
  50. data/lib/square/devices/codes/client.rb +83 -38
  51. data/lib/square/disputes/client.rb +140 -60
  52. data/lib/square/disputes/evidence/client.rb +83 -39
  53. data/lib/square/employees/client.rb +66 -31
  54. data/lib/square/events/client.rb +80 -38
  55. data/lib/square/file_param.rb +77 -77
  56. data/lib/square/gift_cards/activities/client.rb +73 -31
  57. data/lib/square/gift_cards/client.rb +163 -69
  58. data/lib/square/internal/http/base_request.rb +6 -0
  59. data/lib/square/internal/http/raw_client.rb +111 -20
  60. data/lib/square/internal/iterators/cursor_item_iterator.rb +28 -0
  61. data/lib/square/internal/iterators/cursor_page_iterator.rb +51 -0
  62. data/lib/square/internal/iterators/item_iterator.rb +65 -0
  63. data/lib/square/internal/iterators/offset_item_iterator.rb +30 -0
  64. data/lib/square/internal/iterators/offset_page_iterator.rb +83 -0
  65. data/lib/square/internal/json/request.rb +2 -1
  66. data/lib/square/internal/multipart/multipart_request.rb +2 -1
  67. data/lib/square/internal/types/enum.rb +8 -0
  68. data/lib/square/internal/types/model/field.rb +11 -1
  69. data/lib/square/internal/types/model.rb +14 -4
  70. data/lib/square/internal/types/union.rb +88 -7
  71. data/lib/square/internal/types/utils.rb +20 -4
  72. data/lib/square/inventory/client.rb +100 -76
  73. data/lib/square/invoices/client.rb +228 -99
  74. data/lib/square/labor/break_types/client.rb +120 -53
  75. data/lib/square/labor/client.rb +205 -81
  76. data/lib/square/labor/employee_wages/client.rb +64 -31
  77. data/lib/square/labor/shifts/client.rb +94 -37
  78. data/lib/square/labor/team_member_wages/client.rb +64 -31
  79. data/lib/square/labor/types/bulk_publish_scheduled_shifts_request.rb +2 -6
  80. data/lib/square/labor/types/publish_scheduled_shift_request.rb +1 -3
  81. data/lib/square/labor/workweek_configs/client.rb +65 -32
  82. data/lib/square/locations/client.rb +102 -41
  83. data/lib/square/locations/custom_attribute_definitions/client.rb +135 -64
  84. data/lib/square/locations/custom_attribute_definitions/types/create_location_custom_attribute_definition_request.rb +1 -3
  85. data/lib/square/locations/custom_attribute_definitions/types/update_location_custom_attribute_definition_request.rb +1 -3
  86. data/lib/square/locations/custom_attributes/client.rb +156 -68
  87. data/lib/square/locations/custom_attributes/types/bulk_delete_location_custom_attributes_request.rb +1 -3
  88. data/lib/square/locations/custom_attributes/types/bulk_upsert_location_custom_attributes_request.rb +1 -3
  89. data/lib/square/locations/transactions/client.rb +93 -37
  90. data/lib/square/locations/types/create_checkout_request.rb +1 -3
  91. data/lib/square/loyalty/accounts/client.rb +109 -44
  92. data/lib/square/loyalty/accounts/types/search_loyalty_accounts_request.rb +1 -3
  93. data/lib/square/loyalty/client.rb +20 -8
  94. data/lib/square/loyalty/programs/client.rb +72 -29
  95. data/lib/square/loyalty/programs/promotions/client.rb +106 -46
  96. data/lib/square/loyalty/rewards/client.rb +96 -38
  97. data/lib/square/loyalty/rewards/types/search_loyalty_rewards_request.rb +1 -3
  98. data/lib/square/merchants/client.rb +60 -31
  99. data/lib/square/merchants/custom_attribute_definitions/client.rb +137 -65
  100. data/lib/square/merchants/custom_attribute_definitions/types/create_merchant_custom_attribute_definition_request.rb +1 -3
  101. data/lib/square/merchants/custom_attribute_definitions/types/update_merchant_custom_attribute_definition_request.rb +1 -3
  102. data/lib/square/merchants/custom_attributes/client.rb +156 -68
  103. data/lib/square/merchants/custom_attributes/types/bulk_delete_merchant_custom_attributes_request.rb +1 -3
  104. data/lib/square/merchants/custom_attributes/types/bulk_upsert_merchant_custom_attributes_request.rb +1 -3
  105. data/lib/square/o_auth/client.rb +76 -31
  106. data/lib/square/o_auth/types/obtain_token_request.rb +1 -0
  107. data/lib/square/orders/client.rb +156 -63
  108. data/lib/square/orders/custom_attribute_definitions/client.rb +137 -65
  109. data/lib/square/orders/custom_attribute_definitions/types/create_order_custom_attribute_definition_request.rb +1 -3
  110. data/lib/square/orders/custom_attribute_definitions/types/update_order_custom_attribute_definition_request.rb +1 -3
  111. data/lib/square/orders/custom_attributes/client.rb +159 -69
  112. data/lib/square/orders/custom_attributes/types/bulk_delete_order_custom_attributes_request.rb +1 -3
  113. data/lib/square/orders/custom_attributes/types/bulk_upsert_order_custom_attributes_request.rb +1 -3
  114. data/lib/square/orders/types/calculate_order_request.rb +1 -3
  115. data/lib/square/payments/client.rb +182 -70
  116. data/lib/square/payouts/client.rb +116 -54
  117. data/lib/square/refunds/client.rb +97 -40
  118. data/lib/square/refunds/types/refund_payment_request.rb +1 -3
  119. data/lib/square/sites/client.rb +26 -11
  120. data/lib/square/snippets/client.rb +73 -28
  121. data/lib/square/subscriptions/client.rb +271 -117
  122. data/lib/square/team/client.rb +81 -36
  123. data/lib/square/team_members/client.rb +119 -49
  124. data/lib/square/team_members/types/batch_create_team_members_request.rb +1 -3
  125. data/lib/square/team_members/types/batch_update_team_members_request.rb +1 -3
  126. data/lib/square/team_members/wage_setting/client.rb +48 -19
  127. data/lib/square/terminal/actions/client.rb +75 -30
  128. data/lib/square/terminal/checkouts/client.rb +76 -30
  129. data/lib/square/terminal/client.rb +60 -23
  130. data/lib/square/terminal/refunds/client.rb +78 -31
  131. data/lib/square/transfer_orders/client.rb +26 -21
  132. data/lib/square/types/address.rb +2 -1
  133. data/lib/square/types/application_details.rb +1 -3
  134. data/lib/square/types/application_type.rb +23 -0
  135. data/lib/square/types/availability.rb +3 -4
  136. data/lib/square/types/bank_account.rb +1 -0
  137. data/lib/square/types/batch_create_team_members_response.rb +1 -3
  138. data/lib/square/types/batch_create_vendors_response.rb +1 -3
  139. data/lib/square/types/batch_get_catalog_objects_response.rb +1 -3
  140. data/lib/square/types/batch_get_vendors_response.rb +1 -3
  141. data/lib/square/types/batch_update_team_members_response.rb +1 -3
  142. data/lib/square/types/batch_update_vendors_response.rb +1 -3
  143. data/lib/square/types/batch_upsert_catalog_objects_response.rb +1 -3
  144. data/lib/square/types/batch_upsert_customer_custom_attributes_request_customer_custom_attribute_upsert_request.rb +2 -1
  145. data/lib/square/types/batch_upsert_customer_custom_attributes_response.rb +4 -4
  146. data/lib/square/types/batch_upsert_customer_custom_attributes_response_customer_custom_attribute_upsert_response.rb +3 -1
  147. data/lib/square/types/booking.rb +2 -6
  148. data/lib/square/types/booking_created_event.rb +2 -1
  149. data/lib/square/types/booking_custom_attribute_definition_visible_created_event.rb +2 -1
  150. data/lib/square/types/booking_custom_attribute_definition_visible_deleted_event.rb +2 -1
  151. data/lib/square/types/booking_custom_attribute_definition_visible_updated_event.rb +2 -1
  152. data/lib/square/types/booking_custom_attribute_delete_request.rb +4 -2
  153. data/lib/square/types/booking_custom_attribute_delete_response.rb +3 -1
  154. data/lib/square/types/booking_custom_attribute_upsert_request.rb +2 -1
  155. data/lib/square/types/booking_custom_attribute_upsert_response.rb +3 -1
  156. data/lib/square/types/booking_updated_event.rb +2 -1
  157. data/lib/square/types/bulk_create_customers_response.rb +1 -3
  158. data/lib/square/types/bulk_delete_booking_custom_attributes_response.rb +4 -4
  159. data/lib/square/types/bulk_delete_customers_response.rb +1 -3
  160. data/lib/square/types/bulk_delete_location_custom_attributes_request_location_custom_attribute_delete_request.rb +2 -1
  161. data/lib/square/types/bulk_delete_location_custom_attributes_response.rb +4 -4
  162. data/lib/square/types/bulk_delete_location_custom_attributes_response_location_custom_attribute_delete_response.rb +2 -1
  163. data/lib/square/types/bulk_delete_merchant_custom_attributes_request_merchant_custom_attribute_delete_request.rb +2 -1
  164. data/lib/square/types/bulk_delete_merchant_custom_attributes_response.rb +4 -4
  165. data/lib/square/types/bulk_delete_merchant_custom_attributes_response_merchant_custom_attribute_delete_response.rb +2 -1
  166. data/lib/square/types/bulk_delete_order_custom_attributes_response.rb +1 -3
  167. data/lib/square/types/bulk_publish_scheduled_shifts_response.rb +1 -3
  168. data/lib/square/types/bulk_retrieve_bookings_response.rb +1 -3
  169. data/lib/square/types/bulk_retrieve_channels_request_constants.rb +23 -0
  170. data/lib/square/types/bulk_retrieve_channels_response.rb +1 -3
  171. data/lib/square/types/bulk_retrieve_customers_response.rb +1 -3
  172. data/lib/square/types/bulk_retrieve_team_member_booking_profiles_response.rb +3 -4
  173. data/lib/square/types/bulk_update_customers_response.rb +1 -3
  174. data/lib/square/types/bulk_upsert_booking_custom_attributes_response.rb +4 -4
  175. data/lib/square/types/bulk_upsert_location_custom_attributes_request_location_custom_attribute_upsert_request.rb +2 -1
  176. data/lib/square/types/bulk_upsert_location_custom_attributes_response.rb +4 -4
  177. data/lib/square/types/bulk_upsert_location_custom_attributes_response_location_custom_attribute_upsert_response.rb +3 -1
  178. data/lib/square/types/bulk_upsert_merchant_custom_attributes_request_merchant_custom_attribute_upsert_request.rb +2 -1
  179. data/lib/square/types/bulk_upsert_merchant_custom_attributes_response.rb +4 -4
  180. data/lib/square/types/bulk_upsert_merchant_custom_attributes_response_merchant_custom_attribute_upsert_response.rb +3 -1
  181. data/lib/square/types/bulk_upsert_order_custom_attributes_response.rb +1 -3
  182. data/lib/square/types/business_appointment_settings.rb +4 -12
  183. data/lib/square/types/business_booking_profile.rb +2 -6
  184. data/lib/square/types/buy_now_pay_later_details.rb +1 -0
  185. data/lib/square/types/card.rb +2 -0
  186. data/lib/square/types/card_issuer_alert.rb +23 -0
  187. data/lib/square/types/catalog_category.rb +1 -3
  188. data/lib/square/types/catalog_custom_attribute_definition.rb +6 -18
  189. data/lib/square/types/catalog_custom_attribute_definition_selection_config.rb +1 -3
  190. data/lib/square/types/catalog_id_mapping.rb +1 -1
  191. data/lib/square/types/catalog_info_response.rb +1 -3
  192. data/lib/square/types/catalog_item.rb +6 -12
  193. data/lib/square/types/catalog_item_food_and_beverage_details.rb +2 -6
  194. data/lib/square/types/catalog_item_food_and_beverage_details_dietary_preference.rb +2 -6
  195. data/lib/square/types/catalog_item_food_and_beverage_details_ingredient.rb +2 -6
  196. data/lib/square/types/catalog_item_modifier_list_info.rb +6 -9
  197. data/lib/square/types/catalog_item_variation.rb +17 -13
  198. data/lib/square/types/catalog_modifier.rb +4 -4
  199. data/lib/square/types/catalog_modifier_list.rb +4 -2
  200. data/lib/square/types/catalog_modifier_override.rb +2 -2
  201. data/lib/square/types/catalog_modifier_toggle_override_type.rb +13 -0
  202. data/lib/square/types/catalog_object.rb +7 -3
  203. data/lib/square/types/catalog_object_base.rb +2 -4
  204. data/lib/square/types/catalog_object_category.rb +3 -4
  205. data/lib/square/types/catalog_object_custom_attribute_definition.rb +1 -3
  206. data/lib/square/types/catalog_object_quick_amounts_settings.rb +1 -3
  207. data/lib/square/types/catalog_object_reference.rb +1 -1
  208. data/lib/square/types/catalog_object_subscription_plan_variation.rb +1 -3
  209. data/lib/square/types/catalog_query.rb +11 -13
  210. data/lib/square/types/catalog_query_prefix.rb +2 -1
  211. data/lib/square/types/catalog_query_text.rb +2 -1
  212. data/lib/square/types/catalog_subscription_plan.rb +5 -5
  213. data/lib/square/types/catalog_subscription_plan_variation.rb +4 -2
  214. data/lib/square/types/catalog_v_1_id.rb +1 -1
  215. data/lib/square/types/catalog_version_updated_event_object.rb +1 -3
  216. data/lib/square/types/checkout.rb +1 -3
  217. data/lib/square/types/checkout_location_settings.rb +1 -3
  218. data/lib/square/types/checkout_location_settings_branding.rb +2 -6
  219. data/lib/square/types/checkout_merchant_settings.rb +1 -3
  220. data/lib/square/types/checkout_merchant_settings_payment_methods.rb +4 -12
  221. data/lib/square/types/checkout_merchant_settings_payment_methods_afterpay_clearpay.rb +2 -6
  222. data/lib/square/types/component.rb +4 -12
  223. data/lib/square/types/create_bank_account_response.rb +11 -0
  224. data/lib/square/types/create_booking_custom_attribute_definition_response.rb +4 -4
  225. data/lib/square/types/create_catalog_image_request.rb +1 -1
  226. data/lib/square/types/create_customer_custom_attribute_definition_response.rb +4 -4
  227. data/lib/square/types/create_location_custom_attribute_definition_response.rb +4 -4
  228. data/lib/square/types/create_merchant_custom_attribute_definition_response.rb +4 -4
  229. data/lib/square/types/create_order_custom_attribute_definition_response.rb +1 -3
  230. data/lib/square/types/create_transfer_order_data.rb +3 -4
  231. data/lib/square/types/create_webhook_subscription_response.rb +2 -1
  232. data/lib/square/types/custom_attribute.rb +1 -1
  233. data/lib/square/types/custom_attribute_definition.rb +1 -3
  234. data/lib/square/types/custom_attribute_definition_event_data_object.rb +1 -3
  235. data/lib/square/types/custom_field.rb +2 -1
  236. data/lib/square/types/customer_address_filter.rb +2 -1
  237. data/lib/square/types/customer_created_event.rb +4 -2
  238. data/lib/square/types/customer_created_event_event_context_merge.rb +2 -1
  239. data/lib/square/types/customer_creation_source_filter.rb +1 -3
  240. data/lib/square/types/customer_custom_attribute_filter.rb +2 -1
  241. data/lib/square/types/customer_custom_attribute_filter_value.rb +2 -1
  242. data/lib/square/types/customer_custom_attribute_filters.rb +7 -6
  243. data/lib/square/types/customer_custom_attribute_visible_updated_event.rb +6 -3
  244. data/lib/square/types/customer_deleted_event.rb +4 -2
  245. data/lib/square/types/customer_deleted_event_event_context_merge.rb +2 -1
  246. data/lib/square/types/customer_tax_ids.rb +4 -2
  247. data/lib/square/types/customer_updated_event.rb +4 -2
  248. data/lib/square/types/delete_booking_custom_attribute_definition_response.rb +5 -2
  249. data/lib/square/types/delete_booking_custom_attribute_response.rb +2 -1
  250. data/lib/square/types/delete_customer_custom_attribute_response.rb +2 -1
  251. data/lib/square/types/delete_location_custom_attribute_response.rb +2 -1
  252. data/lib/square/types/delete_merchant_custom_attribute_response.rb +2 -1
  253. data/lib/square/types/delete_subscription_action_response.rb +2 -1
  254. data/lib/square/types/delete_webhook_subscription_response.rb +2 -1
  255. data/lib/square/types/destination_details.rb +1 -3
  256. data/lib/square/types/device_checkout_options.rb +1 -0
  257. data/lib/square/types/device_component_details_ethernet_details.rb +1 -1
  258. data/lib/square/types/device_component_details_wi_fi_details.rb +1 -1
  259. data/lib/square/types/digital_wallet_details.rb +1 -0
  260. data/lib/square/types/disable_bank_account_response.rb +11 -0
  261. data/lib/square/types/dispute.rb +2 -1
  262. data/lib/square/types/dispute_evidence_added_event.rb +2 -1
  263. data/lib/square/types/dispute_evidence_created_event.rb +2 -1
  264. data/lib/square/types/employee_wage.rb +2 -1
  265. data/lib/square/types/error_code.rb +2 -0
  266. data/lib/square/types/event_data.rb +1 -3
  267. data/lib/square/types/fulfillment.rb +4 -7
  268. data/lib/square/types/fulfillment_delivery_details.rb +1 -3
  269. data/lib/square/types/fulfillment_pickup_details.rb +1 -3
  270. data/lib/square/types/get_bank_account_response.rb +1 -1
  271. data/lib/square/types/get_booking_request.rb +23 -0
  272. data/lib/square/types/get_business_booking_profile_request.rb +23 -0
  273. data/lib/square/types/get_card_request.rb +23 -0
  274. data/lib/square/types/get_catalog_object_response.rb +1 -3
  275. data/lib/square/types/get_customer_custom_attribute_definition_response.rb +4 -4
  276. data/lib/square/types/get_customer_custom_attribute_response.rb +2 -1
  277. data/lib/square/types/get_customer_group_request.rb +23 -0
  278. data/lib/square/types/get_customer_request.rb +23 -0
  279. data/lib/square/types/get_customer_segment_request.rb +23 -0
  280. data/lib/square/types/get_dispute_evidence_request.rb +23 -0
  281. data/lib/square/types/get_dispute_request.rb +23 -0
  282. data/lib/square/types/get_employee_request.rb +23 -0
  283. data/lib/square/types/get_gift_card_request.rb +23 -0
  284. data/lib/square/types/get_inventory_adjustment_request.rb +23 -0
  285. data/lib/square/types/get_inventory_physical_count_request.rb +23 -0
  286. data/lib/square/types/get_inventory_transfer_request.rb +23 -0
  287. data/lib/square/types/get_location_request.rb +23 -0
  288. data/lib/square/types/get_loyalty_account_request.rb +23 -0
  289. data/lib/square/types/get_loyalty_program_request.rb +23 -0
  290. data/lib/square/types/get_loyalty_promotion_request.rb +23 -0
  291. data/lib/square/types/get_loyalty_reward_request.rb +23 -0
  292. data/lib/square/types/get_merchant_request.rb +23 -0
  293. data/lib/square/types/get_order_request.rb +23 -0
  294. data/lib/square/types/get_payment_link_request.rb +23 -0
  295. data/lib/square/types/get_snippet_request.rb +23 -0
  296. data/lib/square/types/get_team_member_booking_profile_request.rb +23 -0
  297. data/lib/square/types/get_team_member_booking_profile_response.rb +1 -3
  298. data/lib/square/types/get_team_member_request.rb +23 -0
  299. data/lib/square/types/get_transaction_request.rb +23 -0
  300. data/lib/square/types/get_vendor_request.rb +23 -0
  301. data/lib/square/types/get_wage_setting_request.rb +23 -0
  302. data/lib/square/types/get_webhook_subscription_request.rb +23 -0
  303. data/lib/square/types/get_webhook_subscription_response.rb +2 -1
  304. data/lib/square/types/gift_card_activity.rb +8 -24
  305. data/lib/square/types/gift_card_activity_block_reason.rb +23 -0
  306. data/lib/square/types/gift_card_activity_unblock_reason.rb +23 -0
  307. data/lib/square/types/gift_card_activity_updated_event.rb +2 -1
  308. data/lib/square/types/inventory_count_updated_event_object.rb +1 -3
  309. data/lib/square/types/invoice.rb +6 -13
  310. data/lib/square/types/invoice_accepted_payment_methods.rb +2 -1
  311. data/lib/square/types/invoice_attachment.rb +1 -1
  312. data/lib/square/types/invoice_custom_field.rb +2 -1
  313. data/lib/square/types/invoice_payment_made_event.rb +2 -1
  314. data/lib/square/types/invoice_payment_request.rb +6 -8
  315. data/lib/square/types/invoice_refunded_event.rb +2 -1
  316. data/lib/square/types/invoice_sort_field.rb +23 -0
  317. data/lib/square/types/labor_scheduled_shift_created_event_object.rb +1 -1
  318. data/lib/square/types/labor_scheduled_shift_published_event_object.rb +1 -1
  319. data/lib/square/types/labor_scheduled_shift_updated_event_object.rb +1 -1
  320. data/lib/square/types/list_bank_accounts_response.rb +1 -1
  321. data/lib/square/types/list_booking_custom_attribute_definitions_response.rb +4 -4
  322. data/lib/square/types/list_booking_custom_attributes_response.rb +3 -4
  323. data/lib/square/types/list_cash_drawer_shift_events_response.rb +1 -3
  324. data/lib/square/types/list_cash_drawer_shifts_response.rb +1 -3
  325. data/lib/square/types/list_channels_request_constants.rb +23 -0
  326. data/lib/square/types/list_customer_custom_attribute_definitions_response.rb +4 -4
  327. data/lib/square/types/list_customer_custom_attributes_response.rb +3 -4
  328. data/lib/square/types/list_gift_card_activities_response.rb +1 -3
  329. data/lib/square/types/list_location_booking_profiles_response.rb +1 -3
  330. data/lib/square/types/list_location_custom_attribute_definitions_response.rb +4 -4
  331. data/lib/square/types/list_location_custom_attributes_response.rb +3 -4
  332. data/lib/square/types/list_loyalty_promotions_response.rb +1 -3
  333. data/lib/square/types/list_merchant_custom_attribute_definitions_response.rb +4 -4
  334. data/lib/square/types/list_merchant_custom_attributes_response.rb +3 -4
  335. data/lib/square/types/list_order_custom_attribute_definitions_response.rb +1 -3
  336. data/lib/square/types/list_order_custom_attributes_response.rb +1 -3
  337. data/lib/square/types/list_subscription_events_response.rb +1 -3
  338. data/lib/square/types/list_team_member_booking_profiles_response.rb +1 -3
  339. data/lib/square/types/list_team_member_wages_response.rb +1 -3
  340. data/lib/square/types/list_webhook_subscriptions_response.rb +1 -3
  341. data/lib/square/types/list_workweek_configs_response.rb +1 -3
  342. data/lib/square/types/location.rb +1 -3
  343. data/lib/square/types/location_booking_profile.rb +2 -1
  344. data/lib/square/types/location_custom_attribute_visible_updated_event.rb +6 -3
  345. data/lib/square/types/loyalty_account.rb +1 -3
  346. data/lib/square/types/loyalty_account_mapping_type.rb +23 -0
  347. data/lib/square/types/loyalty_event.rb +3 -4
  348. data/lib/square/types/loyalty_event_filter.rb +1 -3
  349. data/lib/square/types/loyalty_program.rb +4 -7
  350. data/lib/square/types/loyalty_program_accrual_rule.rb +3 -4
  351. data/lib/square/types/loyalty_program_reward_tier.rb +3 -1
  352. data/lib/square/types/loyalty_promotion_incentive.rb +2 -6
  353. data/lib/square/types/loyalty_promotion_incentive_points_addition_data.rb +2 -1
  354. data/lib/square/types/loyalty_promotion_incentive_points_multiplier_data.rb +2 -1
  355. data/lib/square/types/loyalty_promotion_trigger_limit.rb +2 -1
  356. data/lib/square/types/loyalty_reward.rb +4 -2
  357. data/lib/square/types/measurement_unit_generic.rb +23 -0
  358. data/lib/square/types/oauth_authorization_revoked_event_object.rb +1 -3
  359. data/lib/square/types/oauth_authorization_revoked_event_revocation_object.rb +1 -3
  360. data/lib/square/types/order.rb +2 -6
  361. data/lib/square/types/order_card_surcharge_treatment_type.rb +12 -0
  362. data/lib/square/types/order_custom_attribute_definition_owned_created_event.rb +2 -1
  363. data/lib/square/types/order_custom_attribute_definition_owned_deleted_event.rb +2 -1
  364. data/lib/square/types/order_custom_attribute_definition_owned_updated_event.rb +2 -1
  365. data/lib/square/types/order_custom_attribute_definition_visible_created_event.rb +2 -1
  366. data/lib/square/types/order_custom_attribute_definition_visible_deleted_event.rb +2 -1
  367. data/lib/square/types/order_custom_attribute_definition_visible_updated_event.rb +2 -1
  368. data/lib/square/types/order_custom_attribute_owned_deleted_event.rb +2 -1
  369. data/lib/square/types/order_custom_attribute_owned_updated_event.rb +2 -1
  370. data/lib/square/types/order_custom_attribute_visible_deleted_event.rb +2 -1
  371. data/lib/square/types/order_custom_attribute_visible_updated_event.rb +2 -1
  372. data/lib/square/types/order_fulfillment_updated.rb +1 -3
  373. data/lib/square/types/order_line_item.rb +4 -12
  374. data/lib/square/types/order_line_item_applied_tax.rb +1 -0
  375. data/lib/square/types/order_line_item_pricing_blocklists.rb +3 -6
  376. data/lib/square/types/order_line_item_pricing_blocklists_blocked_service_charge.rb +14 -0
  377. data/lib/square/types/order_return.rb +3 -9
  378. data/lib/square/types/order_return_line_item.rb +4 -12
  379. data/lib/square/types/order_return_service_charge.rb +3 -6
  380. data/lib/square/types/order_service_charge.rb +2 -6
  381. data/lib/square/types/payment.rb +1 -3
  382. data/lib/square/types/payment_link_related_resources.rb +1 -3
  383. data/lib/square/types/payment_refund.rb +1 -3
  384. data/lib/square/types/payout_entry.rb +24 -72
  385. data/lib/square/types/pre_populated_data.rb +2 -1
  386. data/lib/square/types/product_type.rb +23 -0
  387. data/lib/square/types/refund.rb +1 -3
  388. data/lib/square/types/retrieve_booking_custom_attribute_definition_response.rb +4 -4
  389. data/lib/square/types/retrieve_booking_custom_attribute_response.rb +2 -1
  390. data/lib/square/types/retrieve_location_custom_attribute_definition_response.rb +4 -4
  391. data/lib/square/types/retrieve_location_custom_attribute_response.rb +2 -1
  392. data/lib/square/types/retrieve_merchant_custom_attribute_definition_response.rb +4 -4
  393. data/lib/square/types/retrieve_merchant_custom_attribute_response.rb +2 -1
  394. data/lib/square/types/retrieve_order_custom_attribute_definition_response.rb +1 -3
  395. data/lib/square/types/scheduled_shift_filter.rb +3 -7
  396. data/lib/square/types/scheduled_shift_workday.rb +1 -3
  397. data/lib/square/types/search_availability_filter.rb +1 -3
  398. data/lib/square/types/search_catalog_items_response.rb +2 -1
  399. data/lib/square/types/search_catalog_objects_response.rb +1 -3
  400. data/lib/square/types/search_events_sort_field.rb +23 -0
  401. data/lib/square/types/search_loyalty_accounts_request_loyalty_account_query.rb +1 -3
  402. data/lib/square/types/search_loyalty_accounts_response.rb +1 -3
  403. data/lib/square/types/search_orders_date_time_filter.rb +2 -1
  404. data/lib/square/types/search_orders_fulfillment_filter.rb +2 -6
  405. data/lib/square/types/search_orders_source_filter.rb +2 -0
  406. data/lib/square/types/search_scheduled_shifts_response.rb +1 -3
  407. data/lib/square/types/search_transfer_orders_response.rb +1 -3
  408. data/lib/square/types/shift_filter.rb +3 -2
  409. data/lib/square/types/shift_query.rb +2 -1
  410. data/lib/square/types/shift_sort.rb +2 -1
  411. data/lib/square/types/shift_wage.rb +2 -1
  412. data/lib/square/types/shift_workday.rb +2 -1
  413. data/lib/square/types/snippet.rb +2 -1
  414. data/lib/square/types/standard_unit_description_group.rb +1 -3
  415. data/lib/square/types/subscription_event.rb +1 -3
  416. data/lib/square/types/subscription_phase.rb +2 -1
  417. data/lib/square/types/subscription_test_result.rb +5 -3
  418. data/lib/square/types/team_member_assigned_locations.rb +1 -3
  419. data/lib/square/types/team_member_booking_profile.rb +2 -1
  420. data/lib/square/types/tender.rb +2 -6
  421. data/lib/square/types/tender_buy_now_pay_later_details.rb +1 -3
  422. data/lib/square/types/terminal_refund.rb +2 -1
  423. data/lib/square/types/test_webhook_subscription_response.rb +5 -5
  424. data/lib/square/types/timecard_filter.rb +1 -1
  425. data/lib/square/types/transfer_order.rb +1 -3
  426. data/lib/square/types/transfer_order_filter.rb +1 -3
  427. data/lib/square/types/transfer_order_goods_receipt.rb +1 -3
  428. data/lib/square/types/update_booking_custom_attribute_definition_response.rb +4 -4
  429. data/lib/square/types/update_customer_custom_attribute_definition_response.rb +4 -4
  430. data/lib/square/types/update_location_custom_attribute_definition_response.rb +4 -4
  431. data/lib/square/types/update_merchant_custom_attribute_definition_response.rb +4 -4
  432. data/lib/square/types/update_order_custom_attribute_definition_response.rb +1 -3
  433. data/lib/square/types/update_transfer_order_data.rb +1 -3
  434. data/lib/square/types/update_webhook_subscription_response.rb +2 -1
  435. data/lib/square/types/update_webhook_subscription_signature_key_response.rb +3 -1
  436. data/lib/square/types/upsert_booking_custom_attribute_response.rb +2 -1
  437. data/lib/square/types/upsert_catalog_object_response.rb +1 -3
  438. data/lib/square/types/upsert_customer_custom_attribute_response.rb +2 -1
  439. data/lib/square/types/upsert_location_custom_attribute_response.rb +2 -1
  440. data/lib/square/types/upsert_merchant_custom_attribute_response.rb +2 -1
  441. data/lib/square/types/v_1_get_payment_request.rb +23 -0
  442. data/lib/square/types/v_1_get_settlement_request.rb +23 -0
  443. data/lib/square/types/v_1_order.rb +1 -3
  444. data/lib/square/types/vendor_created_event_object_operation.rb +23 -0
  445. data/lib/square/types/vendor_updated_event_object_operation.rb +23 -0
  446. data/lib/square/types/wage_setting.rb +1 -3
  447. data/lib/square/v_1_transactions/client.rb +72 -29
  448. data/lib/square/vendors/client.rb +126 -51
  449. data/lib/square/vendors/types/batch_update_vendors_request.rb +1 -3
  450. data/lib/square/version.rb +1 -1
  451. data/lib/square/webhooks/client.rb +3 -1
  452. data/lib/square/webhooks/event_types/client.rb +25 -14
  453. data/lib/square/webhooks/subscriptions/client.rb +164 -69
  454. data/lib/square.rb +57 -5
  455. data/lib/square_legacy/utilities/webhooks_helper.rb +1 -1
  456. data/reference.md +29588 -0
  457. data/wiremock/docker-compose.test.yml +14 -0
  458. data/wiremock/wiremock-mappings.json +1 -0
  459. metadata +69 -45
  460. data/lib/square/mobile/client.rb +0 -50
  461. data/lib/square/mobile/types/create_mobile_authorization_code_request.rb +0 -11
  462. data/lib/square/types/create_mobile_authorization_code_response.rb +0 -13
  463. data/test/square/integration/client_tests/test_cash_drawers.rb +0 -27
  464. data/test/square/integration/client_tests/test_catalog.rb +0 -704
  465. data/test/square/integration/client_tests/test_customers.rb +0 -65
  466. data/test/square/integration/client_tests/test_customers_groups.rb +0 -144
  467. data/test/square/integration/client_tests/test_customers_segments.rb +0 -36
  468. data/test/square/integration/client_tests/test_devices.rb +0 -67
  469. data/test/square/integration/client_tests/test_inventory.rb +0 -28
  470. data/test/square/integration/client_tests/test_locations.rb +0 -18
  471. data/test/square/integration/client_tests/test_merchants.rb +0 -40
  472. data/test/square/integration/client_tests/test_mobile.rb +0 -21
  473. data/test/square/integration/client_tests/test_orders.rb +0 -177
  474. data/test/square/integration/client_tests/test_payments.rb +0 -167
  475. data/test/square/integration/client_tests/test_refunds.rb +0 -133
  476. data/test/square/integration/client_tests/test_team_members.rb +0 -97
  477. data/test/square/integration/client_tests/test_terminal.rb +0 -107
  478. data/test/square/integration/integration_test_base.rb +0 -16
  479. data/test/square/integration/testdata/image.jpeg +0 -0
  480. data/test/square/internal/multipart/test_form_data.rb +0 -311
  481. data/test/square/internal/types/test_array.rb +0 -37
  482. data/test/square/internal/types/test_boolean.rb +0 -35
  483. data/test/square/internal/types/test_enum.rb +0 -42
  484. data/test/square/internal/types/test_hash.rb +0 -50
  485. data/test/square/internal/types/test_model.rb +0 -105
  486. data/test/square/internal/types/test_union.rb +0 -52
  487. data/test/square/internal/types/test_utils.rb +0 -216
  488. data/test/square_legacy/api/api_test_base.rb +0 -27
  489. data/test/square_legacy/api/test_catalog_api.rb +0 -57
  490. data/test/square_legacy/api/test_customers_api.rb +0 -43
  491. data/test/square_legacy/api/test_employees_api.rb +0 -34
  492. data/test/square_legacy/api/test_labor_api.rb +0 -82
  493. data/test/square_legacy/api/test_locations_api.rb +0 -22
  494. data/test/square_legacy/api/test_merchants_api.rb +0 -38
  495. data/test/square_legacy/api/test_payments_api.rb +0 -40
  496. data/test/square_legacy/api/test_refunds_api.rb +0 -42
  497. data/test/square_legacy/http_response_catcher.rb +0 -14
  498. data/test/square_legacy/webhooks/test_webhooks_helper.rb +0 -153
  499. data/test/test_helper.rb +0 -123
@@ -1,704 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "test_helper"
4
-
5
- describe Square::Catalog::Client do
6
- MAX_CATALOG_PAGE_SIZE = 100
7
- MAX_RETRIES_CATALOG = 5
8
- MAX_TIMEOUT = 120
9
-
10
- def delete_all_catalog_objects(client)
11
- catalog_objects_resp = client.catalog.list
12
- refute_nil catalog_objects_resp
13
- assert_equal catalog_objects_resp.class, Square::Types::ListCatalogResponse
14
- object_ids = []
15
-
16
- catalog_objects_resp.data.each do |catalog_object|
17
- next unless catalog_object.id
18
-
19
- object_ids << catalog_object.id
20
-
21
- next unless catalog_object.respond_to?(:item_data)
22
-
23
- variation = catalog_object.item_data&.variations&.first
24
- next unless variation&.id
25
-
26
- object_ids << variation.id
27
- end
28
-
29
- _batch_delete_request = Square::Catalog::Types::BatchDeleteCatalogObjectsRequest.new(
30
- object_ids: object_ids
31
- )
32
- client.catalog.batch_delete(**_batch_delete_request.to_h)
33
- end
34
-
35
- def create_test_catalog_item(name: "Test Item #{SecureRandom.uuid}", description: "Test Description", abbreviation: "TI", price: 100, variation_name: "Regular")
36
- {
37
- type: "ITEM",
38
- id: "##{SecureRandom.uuid}",
39
- present_at_all_locations: true,
40
- item_data: {
41
- name: name,
42
- description: description,
43
- abbreviation: abbreviation,
44
- variations: [
45
- {
46
- type: "ITEM_VARIATION",
47
- id: "##{SecureRandom.uuid}",
48
- present_at_all_locations: true,
49
- item_variation_data: {
50
- name: variation_name,
51
- track_inventory: false,
52
- pricing_type: "FIXED_PRICING",
53
- price_money: {
54
- amount: price,
55
- currency: "USD"
56
- }
57
- }
58
- }
59
- ]
60
- }
61
- }
62
- end
63
-
64
- def get_test_file
65
- # Return the actual test image file path
66
- "../testdata/image.jpeg"
67
- end
68
-
69
- before do
70
- sleep(2)
71
- modifier = {
72
- type: "MODIFIER",
73
- id: "#temp-modifier-id",
74
- modifier_data: {
75
- name: "Limited Time Only Price",
76
- price_money: {
77
- amount: 200,
78
- currency: "USD"
79
- }
80
- }
81
- }
82
-
83
- modifier_list = {
84
- type: "MODIFIER_LIST",
85
- id: "#temp-modifier-list-id",
86
- modifier_list_data: {
87
- name: "Special weekend deals",
88
- modifiers: [modifier]
89
- }
90
- }
91
-
92
- tax = {
93
- type: "TAX",
94
- id: "#temp-tax-id",
95
- tax_data: {
96
- name: "Online only Tax",
97
- calculation_phase: "TAX_SUBTOTAL_PHASE",
98
- inclusion_type: "ADDITIVE",
99
- percentage: "5.0",
100
- applies_to_custom_amounts: true,
101
- enabled: true
102
- }
103
- }
104
-
105
- _request = Square::Catalog::Types::BatchUpsertCatalogObjectsRequest.new(
106
- idempotency_key: SecureRandom.uuid,
107
- batches: [
108
- {
109
- objects: [tax, modifier_list]
110
- }
111
- ]
112
- )
113
-
114
- response = client.catalog.batch_upsert(**_request.to_h)
115
-
116
- # Store IDs for later use
117
- response.id_mappings&.each do |mapping|
118
- case mapping.client_object_id
119
- when "#temp-tax-id"
120
- @catalog_tax_id = mapping.object_id
121
- when "#temp-modifier-id"
122
- @catalog_modifier_id = mapping.object_id
123
- when "#temp-modifier-list-id"
124
- @catalog_modifier_list_id = mapping.object_id
125
- end
126
- end
127
- end
128
-
129
- describe "#batch_upsert" do
130
- it "creates multiple catalog objects" do
131
- skip "Getting rate limited. Skipping for now."
132
- _request = Square::Catalog::Types::BatchUpsertCatalogObjectsRequest.new(
133
- idempotency_key: SecureRandom.uuid,
134
- batches: [
135
- {
136
- objects: [
137
- {
138
- type: "ITEM",
139
- id: "##{SecureRandom.uuid}",
140
- present_at_all_locations: true,
141
- item_data: {
142
- name: "Coffee",
143
- description: "Strong coffee",
144
- abbreviation: "C",
145
- variations: [
146
- {
147
- type: "ITEM_VARIATION",
148
- id: "##{SecureRandom.uuid}",
149
- present_at_all_locations: true,
150
- item_variation_data: {
151
- name: "Kona Coffee",
152
- track_inventory: false,
153
- pricing_type: "FIXED_PRICING",
154
- price_money: {
155
- amount: 1000,
156
- currency: "USD"
157
- }
158
- }
159
- }
160
- ]
161
- }
162
- },
163
- {
164
- type: "ITEM",
165
- id: "##{SecureRandom.uuid}",
166
- present_at_all_locations: true,
167
- item_data: {
168
- name: "Tea",
169
- description: "Strong tea",
170
- abbreviation: "T",
171
- variations: [
172
- {
173
- type: "ITEM_VARIATION",
174
- id: "##{SecureRandom.uuid}",
175
- present_at_all_locations: true,
176
- item_variation_data: {
177
- name: "Gunpowder Green",
178
- track_inventory: false,
179
- pricing_type: "FIXED_PRICING",
180
- price_money: {
181
- amount: 2000,
182
- currency: "USD"
183
- }
184
- }
185
- }
186
- ]
187
- }
188
- }
189
- ]
190
- }
191
- ]
192
- )
193
-
194
- puts "request #{_request.to_h}" if verbose?
195
-
196
- response = client.catalog.batch_upsert(**_request.to_h)
197
- refute_nil response
198
-
199
- puts "response #{response.to_h}" if verbose?
200
- end
201
-
202
- it "batch upsert catalog objects with modifiers and taxes" do
203
- skip "Getting rate limited. Skipping for now."
204
- sleep(2) # Wait before batch upsert
205
-
206
- modifier = {
207
- type: "MODIFIER",
208
- id: "#temp-modifier-id",
209
- modifier_data: {
210
- name: "Limited Time Only Price",
211
- price_money: {
212
- amount: 200,
213
- currency: "USD"
214
- }
215
- }
216
- }
217
-
218
- modifier_list = {
219
- type: "MODIFIER_LIST",
220
- id: "#temp-modifier-list-id",
221
- modifier_list_data: {
222
- name: "Special weekend deals",
223
- modifiers: [modifier]
224
- }
225
- }
226
-
227
- tax = {
228
- type: "TAX",
229
- id: "#temp-tax-id",
230
- tax_data: {
231
- name: "Online only Tax",
232
- calculation_phase: "TAX_SUBTOTAL_PHASE",
233
- inclusion_type: "ADDITIVE",
234
- percentage: "5.0",
235
- applies_to_custom_amounts: true,
236
- enabled: true
237
- }
238
- }
239
-
240
- _request = Square::Catalog::Types::BatchUpsertCatalogObjectsRequest.new(
241
- idempotency_key: SecureRandom.uuid,
242
- batches: [
243
- {
244
- objects: [tax, modifier_list]
245
- }
246
- ]
247
- )
248
-
249
- puts "request #{_request.to_h}" if verbose?
250
-
251
- response = client.catalog.batch_upsert(**_request.to_h)
252
-
253
- assert response
254
- assert_equal 2, response.objects.length
255
- assert_equal response.class, Square::Types::BatchUpsertCatalogObjectsResponse
256
-
257
- # Store IDs for later use
258
- response.id_mappings&.each do |mapping|
259
- case mapping.client_object_id
260
- when "#temp-tax-id"
261
- @catalog_tax_id = mapping.object_id
262
- when "#temp-modifier-id"
263
- @catalog_modifier_id = mapping.object_id
264
- when "#temp-modifier-list-id"
265
- @catalog_modifier_list_id = mapping.object_id
266
- end
267
- end
268
-
269
- puts "response objects_count=#{response.objects.length}" if verbose?
270
- end
271
- end
272
-
273
- describe "#bulk operations and pagination" do
274
- it "bulk create and iterate through paginated catalog objects" do
275
- skip "Getting rate limited. Skipping for now."
276
- delete_all_catalog_objects(client)
277
- sleep(2) # Wait after deletion
278
-
279
- # Setup: Create 200 catalog objects with 1 CatalogItemVariation each
280
- catalog_objects = Array.new(200) { create_test_catalog_item }
281
-
282
- _request = {
283
- idempotency_key: SecureRandom.uuid,
284
- batches: [
285
- {
286
- objects: catalog_objects
287
- }
288
- ]
289
- }
290
-
291
- puts "request #{_request.to_h}" if verbose?
292
-
293
- # Create the catalog objects in a bulk request
294
- create_catalog_objects_resp = client.catalog.batch_upsert(**_request.to_h)
295
- assert_equal 200, create_catalog_objects_resp.objects.length
296
- assert_equal create_catalog_objects_resp.class, Square::Types::BatchUpsertCatalogObjectsResponse
297
- sleep(2) # Wait after bulk creation
298
-
299
- puts "create_response objects_count=#{create_catalog_objects_resp.objects.length}" if verbose?
300
-
301
- # List all catalog objects
302
- number_of_pages = 0
303
- catalog_objects_resp = client.catalog.list
304
- number_of_pages += 1
305
- assert_equal MAX_CATALOG_PAGE_SIZE, catalog_objects_resp.data.length
306
-
307
- while catalog_objects_resp.has_next_page?
308
- sleep(1) # Wait between page requests
309
- catalog_objects_resp = catalog_objects_resp.get_next_page
310
- number_of_pages += 1
311
- end
312
-
313
- assert number_of_pages > 1
314
- sleep(2) # Wait before cleanup
315
-
316
- delete_catalog_objects_resp = delete_all_catalog_objects(client)
317
- assert_equal 200, delete_catalog_objects_resp.deleted_object_ids.length
318
-
319
- puts "delete_response deleted_count=#{delete_catalog_objects_resp.deleted_object_ids.length}" if verbose?
320
- end
321
- end
322
-
323
- describe "#images" do
324
- it "upload catalog image" do
325
- skip "Getting rate limited. Skipping for now."
326
- # Add retry logic for the image upload
327
- max_retries = 5
328
- last_error = nil
329
-
330
- max_retries.times do |attempt|
331
- begin
332
- # If this isn't the first attempt, wait before retrying
333
- if attempt > 0
334
- puts "Attempt #{attempt + 1} for image upload..." if verbose?
335
- # Increase wait time between retries exponentially
336
- sleep(2 ** attempt * 5)
337
- end
338
-
339
- puts "Starting image upload attempt #{attempt + 1}" if verbose?
340
-
341
- # Setup: Load a test image file
342
- image_file = get_test_file
343
- puts 'Test file loaded' if verbose?
344
-
345
- # Setup: Create a catalog object to associate the image with
346
- catalog_object = create_test_catalog_item
347
-
348
- # Add delay before catalog creation
349
- sleep(3)
350
- puts 'Creating catalog object...' if verbose?
351
-
352
- _create_request = Square::Catalog::Types::BatchUpsertCatalogObjectsRequest.new(
353
- idempotency_key: SecureRandom.uuid,
354
- batches: [
355
- {
356
- objects: [catalog_object]
357
- }
358
- ]
359
- )
360
-
361
- puts "create_catalog_request #{_create_request.keys}" if verbose?
362
-
363
- create_catalog_resp = client.catalog.batch_upsert(**_create_request.to_h)
364
-
365
- puts 'Catalog object created' if verbose?
366
- assert_equal 1, create_catalog_resp.objects.length
367
- created_catalog_object = create_catalog_resp.objects.first
368
- assert created_catalog_object
369
-
370
- puts "create_catalog_response object_id=#{created_catalog_object.id}" if verbose?
371
-
372
- # Add delay before image upload
373
- sleep(5)
374
- puts 'Uploading image...' if verbose?
375
-
376
- # Create a new catalog image
377
- image_name = "Test Image #{SecureRandom.uuid}"
378
-
379
- _image_request = Square::Catalog::Types::UpsertCatalogImageRequest.new(
380
- image_file: image_file,
381
- request: {
382
- idempotency_key: SecureRandom.uuid,
383
- object_id: created_catalog_object.id,
384
- image: {
385
- type: "IMAGE",
386
- id: "##{SecureRandom.uuid}",
387
- image_data: {
388
- name: image_name
389
- }
390
- }
391
- }
392
- )
393
-
394
- puts "image_upload_request #{_image_request[:request].to_h}" if verbose?
395
-
396
- create_catalog_image_resp = client.catalog.images.create(**_image_request.to_h)
397
-
398
- puts 'Image uploaded successfully' if verbose?
399
- assert create_catalog_image_resp.image
400
-
401
- puts "image_upload_response image_id=#{create_catalog_image_resp.image.id}" if verbose?
402
-
403
- # Add delay before cleanup
404
- sleep(3)
405
- puts 'Starting cleanup...' if verbose?
406
-
407
- # Cleanup: Delete the created catalog object and image
408
- _batch_delete_request = Square::Catalog::Types::BatchDeleteCatalogObjectsRequest.new(
409
- object_ids: [created_catalog_object.id, create_catalog_image_resp.image.id]
410
- )
411
- _batch_delete_resp = client.catalog.batch_delete(**_batch_delete_request.to_h)
412
- refute_nil _batch_delete_resp
413
- assert_equal _batch_delete_resp.class, Square::Types::BatchDeleteCatalogObjectsResponse
414
-
415
- puts 'Cleanup completed' if verbose?
416
- # If we get here, the test succeeded, so break out of retry loop
417
- return
418
-
419
- rescue => error
420
- last_error = error
421
- puts "Attempt #{attempt + 1} failed with error: #{error}" if verbose?
422
- # If this was the last attempt, the error will be thrown below
423
- end
424
- end
425
-
426
- # If we get here, all retries failed
427
- puts 'All image upload attempts failed' if verbose?
428
- raise last_error
429
- end
430
- end
431
-
432
- describe "#info" do
433
- it "catalog info" do
434
- sleep(2) # Wait before info request
435
-
436
- response = client.catalog.info
437
- refute_nil response
438
- assert_equal response.class, Square::Types::CatalogInfoResponse
439
-
440
- puts "response #{response.to_h}" if verbose?
441
- end
442
- end
443
-
444
- describe "#list" do
445
- it "list catalog" do
446
- sleep(2) # Wait before list request
447
-
448
- response = client.catalog.list
449
- refute_nil response
450
- assert_equal response.class, Square::Types::ListCatalogResponse
451
-
452
- puts "response items_count=#{response.data&.length || 0}" if verbose?
453
- end
454
- end
455
-
456
- describe "#search" do
457
- it "search catalog objects" do
458
- sleep(2) # Wait before search
459
-
460
- _request = Square::Catalog::Types::SearchCatalogObjectsRequest.new(
461
- limit: 1
462
- )
463
-
464
- response = client.catalog.search(**_request.to_h)
465
- refute_nil response
466
- assert_equal response.class, Square::Types::SearchCatalogObjectsResponse
467
-
468
- puts "response items_count=#{response.objects&.length || 0}" if verbose?
469
- end
470
- end
471
-
472
- describe "#search_items" do
473
- it "search catalog items" do
474
- sleep(2) # Wait before search items
475
-
476
- _request = { limit: 1 }
477
-
478
- puts "request #{_request.to_h}" if verbose?
479
-
480
- response = client.catalog.search_items(limit: 1)
481
- assert response
482
-
483
- puts "response items_count=#{response.items&.length || 0}" if verbose?
484
- end
485
- end
486
-
487
- describe "#batch_get" do
488
- it "batch retrieve catalog objects" do
489
- sleep(2) # Wait before batch retrieve
490
-
491
- # Use the IDs created in the batch upsert test
492
- _request = Square::Catalog::Types::BatchGetCatalogObjectsRequest.new(
493
- object_ids: [@catalog_modifier_id, @catalog_modifier_list_id, @catalog_tax_id]
494
- )
495
-
496
- puts "request #{_request.to_h}" if verbose?
497
-
498
- response = client.catalog.batch_get(**_request.to_h)
499
-
500
- refute_nil response
501
- assert_equal response.class, Square::Types::BatchGetCatalogObjectsResponse
502
- refute_nil response.objects
503
- assert_equal 3, response.objects.length
504
- assert_equal [@catalog_modifier_id, @catalog_modifier_list_id, @catalog_tax_id].sort,
505
- response.objects.map(&:id).sort
506
-
507
- puts "response objects_count=#{response.objects.length}" if verbose?
508
- end
509
- end
510
-
511
- describe "#update_item_taxes" do
512
- it "update item taxes" do
513
- sleep(2) # Wait before test start
514
-
515
- # First create a test item
516
- item = create_test_catalog_item
517
- create_resp = client.catalog.object.upsert(
518
- object: item,
519
- idempotency_key: SecureRandom.uuid
520
- )
521
-
522
- sleep(2) # Wait before update
523
-
524
- _request = Square::Catalog::Types::UpdateItemTaxesRequest.new(
525
- item_ids: [create_resp.catalog_object.id],
526
- taxes_to_enable: [@catalog_tax_id]
527
- )
528
-
529
- puts "request #{_request.to_h}" if verbose?
530
-
531
- response = client.catalog.update_item_taxes(**_request.to_h)
532
-
533
- refute_nil response
534
- assert_equal response.class, Square::Types::UpdateItemTaxesResponse
535
- refute_nil response.updated_at
536
-
537
- puts "response updated_at=#{response.updated_at}" if verbose?
538
-
539
- sleep(2) # Wait before cleanup
540
-
541
- # Cleanup
542
- _delete_resp = client.catalog.object.delete(object_id: create_resp.catalog_object.id)
543
- refute_nil _delete_resp
544
- assert_equal _delete_resp.class, Square::Types::DeleteCatalogObjectResponse
545
- end
546
- end
547
-
548
- describe "#update_item_modifier_lists" do
549
- it "update item modifier lists" do
550
- skip "Getting rate limited. Skipping for now."
551
- sleep(2) # Wait before test start
552
-
553
- # First create a test item
554
- item = create_test_catalog_item
555
- create_resp = client.catalog.object.upsert(
556
- object: item,
557
- idempotency_key: SecureRandom.uuid
558
- )
559
-
560
- sleep(2) # Wait before update
561
-
562
- _request = Square::Catalog::Types::UpdateItemModifierListsRequest.new(
563
- item_ids: [create_resp.catalog_object.id],
564
- modifier_lists_to_enable: [@catalog_modifier_list_id]
565
- )
566
-
567
- puts "request #{_request.to_h}" if verbose?
568
-
569
- response = client.catalog.update_item_modifier_lists(**_request.to_h)
570
-
571
- refute_nil response
572
- assert_equal response.class, Square::Types::UpdateItemModifierListsResponse
573
- refute_nil response.updated_at
574
-
575
- puts "response updated_at=#{response.updated_at}" if verbose?
576
-
577
- sleep(2) # Wait before cleanup
578
-
579
- # Cleanup
580
- _delete_resp = client.catalog.object.delete(object_id: create_resp.catalog_object.id)
581
- refute_nil _delete_resp
582
- assert_equal _delete_resp.class, Square::Types::DeleteCatalogObjectResponse
583
- end
584
- end
585
-
586
- describe "#upsert" do
587
- it "upserts an object" do
588
- _request = Square::Catalog::Object_::Types::UpsertCatalogObjectRequest.new(
589
- idempotency_key: SecureRandom.uuid,
590
- object: {
591
- type: "ITEM",
592
- id: "##{SecureRandom.uuid}",
593
- present_at_all_locations: true,
594
- item_data: {
595
- name: "Coffee",
596
- description: "Strong coffee",
597
- abbreviation: "C",
598
- variations: [
599
- {
600
- type: "ITEM_VARIATION",
601
- id: "##{SecureRandom.uuid}",
602
- present_at_all_locations: true,
603
- item_variation_data: {
604
- name: "Kona Coffee",
605
- track_inventory: false,
606
- pricing_type: "FIXED_PRICING",
607
- price_money: {
608
- amount: 1000,
609
- currency: "USD"
610
- }
611
- }
612
- }
613
- ]
614
- }
615
- }
616
- )
617
-
618
- puts "request #{_request.to_h}" if verbose?
619
-
620
- response = client.catalog.object.upsert(**_request.to_h)
621
- refute_nil response
622
- assert_equal response.class, Square::Types::UpsertCatalogObjectResponse
623
- refute_nil response.catalog_object
624
-
625
- puts "response #{response.to_h}" if verbose?
626
- end
627
-
628
- it "upsert catalog object with custom data" do
629
- skip "Getting rate limited. Skipping for now."
630
- coffee = create_test_catalog_item(
631
- name: "Coffee",
632
- description: "Strong coffee",
633
- abbreviation: "C",
634
- price: 100,
635
- variation_name: "Colombian Fair Trade"
636
- )
637
-
638
- sleep(2) # Wait before upsert
639
-
640
- _request = Square::Catalog::Object_::Types::UpsertCatalogObjectRequest.new(
641
- object: coffee,
642
- idempotency_key: SecureRandom.uuid
643
- )
644
-
645
- puts "request #{_request.to_h}" if verbose?
646
-
647
- response = client.catalog.object.upsert(**_request.to_h)
648
- refute_nil response
649
- assert_equal response.class, Square::Types::UpsertCatalogObjectResponse
650
- refute_nil response.catalog_object
651
-
652
- catalog_object = response.catalog_object
653
-
654
- assert catalog_object
655
- assert_equal "ITEM", catalog_object.type
656
- assert_equal 1, catalog_object.item_data.variations.length
657
-
658
- variation = catalog_object.item_data.variations.first
659
- assert_equal "Colombian Fair Trade", variation.item_variation_data.name
660
-
661
- puts "response object_id=#{catalog_object.id}" if verbose?
662
- end
663
- end
664
-
665
- describe "#get" do
666
- it "retrieve catalog object" do
667
- sleep(2) # Wait before test start
668
-
669
- # First create a catalog object
670
- coffee = create_test_catalog_item
671
-
672
- _create_request = Square::Catalog::Object_::Types::UpsertCatalogObjectRequest.new(
673
- object: coffee,
674
- idempotency_key: SecureRandom.uuid
675
- )
676
-
677
- puts "create_request #{_create_request.keys}" if verbose?
678
-
679
- create_resp = client.catalog.object.upsert(**_create_request.to_h)
680
-
681
- sleep(2) # Wait before retrieve
682
-
683
- _request = { object_id: create_resp.catalog_object.id }
684
-
685
- puts "request #{_request.to_h}" if verbose?
686
-
687
- # Then retrieve it
688
- response = client.catalog.object.get(object_id: create_resp.catalog_object.id)
689
- refute_nil response
690
- assert_equal response.class, Square::Types::GetCatalogObjectResponse
691
- refute_nil response.object
692
- assert_equal create_resp.catalog_object.id, response.object.id
693
-
694
- puts "response object_id=#{response.object.id}" if verbose?
695
-
696
- sleep(2) # Wait before cleanup
697
-
698
- # Cleanup
699
- _delete_resp = client.catalog.object.delete(object_id: create_resp.catalog_object.id)
700
- refute_nil _delete_resp
701
- assert_equal _delete_resp.class, Square::Types::DeleteCatalogObjectResponse
702
- end
703
- end
704
- end