shopify_api 13.0.0 → 14.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (643) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CODEOWNERS +1 -1
  3. data/.github/workflows/build.yml +4 -1
  4. data/.rubocop.yml +2 -0
  5. data/BREAKING_CHANGES_FOR_V10.md +231 -0
  6. data/CHANGELOG.md +38 -1
  7. data/CODE_OF_CONDUCT.md +46 -0
  8. data/CONTRIBUTING.md +25 -0
  9. data/Gemfile.lock +56 -54
  10. data/README.md +10 -41
  11. data/ROADMAP.md +10 -0
  12. data/dev.yml +3 -2
  13. data/docs/README.md +0 -1
  14. data/docs/getting_started.md +21 -11
  15. data/docs/usage/custom_apps.md +75 -0
  16. data/docs/usage/graphql.md +91 -17
  17. data/docs/usage/oauth.md +160 -27
  18. data/docs/usage/rest.md +269 -59
  19. data/docs/usage/webhooks.md +54 -11
  20. data/lib/shopify_api/admin_versions.rb +4 -1
  21. data/lib/shopify_api/auth/jwt_payload.rb +2 -2
  22. data/lib/shopify_api/auth/oauth/access_token_response.rb +37 -0
  23. data/lib/shopify_api/auth/oauth.rb +17 -38
  24. data/lib/shopify_api/auth/session.rb +31 -0
  25. data/lib/shopify_api/auth/token_exchange.rb +80 -0
  26. data/lib/shopify_api/clients/graphql/client.rb +1 -0
  27. data/lib/shopify_api/clients/http_client.rb +12 -3
  28. data/lib/shopify_api/clients/http_response.rb +29 -2
  29. data/lib/shopify_api/context.rb +19 -5
  30. data/lib/shopify_api/logger.rb +1 -1
  31. data/lib/shopify_api/rest/base.rb +112 -29
  32. data/lib/shopify_api/rest/resources/2022_04/abandoned_checkout.rb +7 -3
  33. data/lib/shopify_api/rest/resources/2022_04/access_scope.rb +7 -3
  34. data/lib/shopify_api/rest/resources/2022_04/android_pay_key.rb +7 -3
  35. data/lib/shopify_api/rest/resources/2022_04/apple_pay_certificate.rb +7 -3
  36. data/lib/shopify_api/rest/resources/2022_04/application_charge.rb +7 -3
  37. data/lib/shopify_api/rest/resources/2022_04/application_credit.rb +7 -3
  38. data/lib/shopify_api/rest/resources/2022_04/article.rb +7 -3
  39. data/lib/shopify_api/rest/resources/2022_04/asset.rb +7 -3
  40. data/lib/shopify_api/rest/resources/2022_04/assigned_fulfillment_order.rb +12 -6
  41. data/lib/shopify_api/rest/resources/2022_04/balance.rb +6 -3
  42. data/lib/shopify_api/rest/resources/2022_04/blog.rb +7 -3
  43. data/lib/shopify_api/rest/resources/2022_04/cancellation_request.rb +7 -3
  44. data/lib/shopify_api/rest/resources/2022_04/carrier_service.rb +7 -3
  45. data/lib/shopify_api/rest/resources/2022_04/checkout.rb +7 -3
  46. data/lib/shopify_api/rest/resources/2022_04/collect.rb +7 -3
  47. data/lib/shopify_api/rest/resources/2022_04/collection.rb +7 -3
  48. data/lib/shopify_api/rest/resources/2022_04/collection_listing.rb +7 -3
  49. data/lib/shopify_api/rest/resources/2022_04/comment.rb +7 -3
  50. data/lib/shopify_api/rest/resources/2022_04/country.rb +7 -3
  51. data/lib/shopify_api/rest/resources/2022_04/currency.rb +7 -3
  52. data/lib/shopify_api/rest/resources/2022_04/custom_collection.rb +7 -3
  53. data/lib/shopify_api/rest/resources/2022_04/customer.rb +7 -3
  54. data/lib/shopify_api/rest/resources/2022_04/customer_address.rb +17 -3
  55. data/lib/shopify_api/rest/resources/2022_04/customer_saved_search.rb +7 -3
  56. data/lib/shopify_api/rest/resources/2022_04/deprecated_api_call.rb +7 -3
  57. data/lib/shopify_api/rest/resources/2022_04/discount_code.rb +7 -3
  58. data/lib/shopify_api/rest/resources/2022_04/dispute.rb +7 -3
  59. data/lib/shopify_api/rest/resources/2022_04/draft_order.rb +7 -3
  60. data/lib/shopify_api/rest/resources/2022_04/event.rb +7 -3
  61. data/lib/shopify_api/rest/resources/2022_04/fulfillment.rb +7 -3
  62. data/lib/shopify_api/rest/resources/2022_04/fulfillment_event.rb +7 -3
  63. data/lib/shopify_api/rest/resources/2022_04/fulfillment_order.rb +10 -10
  64. data/lib/shopify_api/rest/resources/2022_04/fulfillment_request.rb +17 -3
  65. data/lib/shopify_api/rest/resources/2022_04/fulfillment_service.rb +7 -3
  66. data/lib/shopify_api/rest/resources/2022_04/gift_card.rb +7 -3
  67. data/lib/shopify_api/rest/resources/2022_04/gift_card_adjustment.rb +7 -3
  68. data/lib/shopify_api/rest/resources/2022_04/image.rb +7 -3
  69. data/lib/shopify_api/rest/resources/2022_04/inventory_item.rb +7 -3
  70. data/lib/shopify_api/rest/resources/2022_04/inventory_level.rb +7 -3
  71. data/lib/shopify_api/rest/resources/2022_04/location.rb +7 -3
  72. data/lib/shopify_api/rest/resources/2022_04/locations_for_move.rb +7 -3
  73. data/lib/shopify_api/rest/resources/2022_04/marketing_event.rb +7 -3
  74. data/lib/shopify_api/rest/resources/2022_04/metafield.rb +7 -3
  75. data/lib/shopify_api/rest/resources/2022_04/mobile_platform_application.rb +7 -3
  76. data/lib/shopify_api/rest/resources/2022_04/order.rb +7 -3
  77. data/lib/shopify_api/rest/resources/2022_04/order_risk.rb +12 -6
  78. data/lib/shopify_api/rest/resources/2022_04/page.rb +7 -3
  79. data/lib/shopify_api/rest/resources/2022_04/payment.rb +7 -3
  80. data/lib/shopify_api/rest/resources/2022_04/payment_gateway.rb +7 -3
  81. data/lib/shopify_api/rest/resources/2022_04/payment_transaction.rb +7 -3
  82. data/lib/shopify_api/rest/resources/2022_04/payout.rb +7 -3
  83. data/lib/shopify_api/rest/resources/2022_04/policy.rb +7 -3
  84. data/lib/shopify_api/rest/resources/2022_04/price_rule.rb +7 -3
  85. data/lib/shopify_api/rest/resources/2022_04/product.rb +7 -3
  86. data/lib/shopify_api/rest/resources/2022_04/product_listing.rb +7 -3
  87. data/lib/shopify_api/rest/resources/2022_04/product_resource_feedback.rb +7 -3
  88. data/lib/shopify_api/rest/resources/2022_04/province.rb +7 -3
  89. data/lib/shopify_api/rest/resources/2022_04/recurring_application_charge.rb +7 -3
  90. data/lib/shopify_api/rest/resources/2022_04/redirect.rb +7 -3
  91. data/lib/shopify_api/rest/resources/2022_04/refund.rb +7 -3
  92. data/lib/shopify_api/rest/resources/2022_04/report.rb +7 -3
  93. data/lib/shopify_api/rest/resources/2022_04/resource_feedback.rb +7 -3
  94. data/lib/shopify_api/rest/resources/2022_04/script_tag.rb +7 -3
  95. data/lib/shopify_api/rest/resources/2022_04/shipping_zone.rb +7 -3
  96. data/lib/shopify_api/rest/resources/2022_04/shop.rb +9 -5
  97. data/lib/shopify_api/rest/resources/2022_04/smart_collection.rb +7 -3
  98. data/lib/shopify_api/rest/resources/2022_04/storefront_access_token.rb +7 -3
  99. data/lib/shopify_api/rest/resources/2022_04/tender_transaction.rb +7 -3
  100. data/lib/shopify_api/rest/resources/2022_04/theme.rb +7 -3
  101. data/lib/shopify_api/rest/resources/2022_04/transaction.rb +7 -3
  102. data/lib/shopify_api/rest/resources/2022_04/usage_charge.rb +7 -3
  103. data/lib/shopify_api/rest/resources/2022_04/user.rb +7 -3
  104. data/lib/shopify_api/rest/resources/2022_04/variant.rb +7 -3
  105. data/lib/shopify_api/rest/resources/2022_04/webhook.rb +7 -3
  106. data/lib/shopify_api/rest/resources/2022_07/abandoned_checkout.rb +7 -3
  107. data/lib/shopify_api/rest/resources/2022_07/access_scope.rb +7 -3
  108. data/lib/shopify_api/rest/resources/2022_07/android_pay_key.rb +7 -3
  109. data/lib/shopify_api/rest/resources/2022_07/apple_pay_certificate.rb +7 -3
  110. data/lib/shopify_api/rest/resources/2022_07/application_charge.rb +7 -3
  111. data/lib/shopify_api/rest/resources/2022_07/application_credit.rb +7 -3
  112. data/lib/shopify_api/rest/resources/2022_07/article.rb +7 -3
  113. data/lib/shopify_api/rest/resources/2022_07/asset.rb +7 -3
  114. data/lib/shopify_api/rest/resources/2022_07/assigned_fulfillment_order.rb +12 -6
  115. data/lib/shopify_api/rest/resources/2022_07/balance.rb +11 -3
  116. data/lib/shopify_api/rest/resources/2022_07/blog.rb +7 -3
  117. data/lib/shopify_api/rest/resources/2022_07/cancellation_request.rb +7 -3
  118. data/lib/shopify_api/rest/resources/2022_07/carrier_service.rb +7 -3
  119. data/lib/shopify_api/rest/resources/2022_07/checkout.rb +7 -3
  120. data/lib/shopify_api/rest/resources/2022_07/collect.rb +7 -3
  121. data/lib/shopify_api/rest/resources/2022_07/collection.rb +7 -3
  122. data/lib/shopify_api/rest/resources/2022_07/collection_listing.rb +7 -3
  123. data/lib/shopify_api/rest/resources/2022_07/comment.rb +7 -3
  124. data/lib/shopify_api/rest/resources/2022_07/country.rb +7 -3
  125. data/lib/shopify_api/rest/resources/2022_07/currency.rb +7 -3
  126. data/lib/shopify_api/rest/resources/2022_07/custom_collection.rb +7 -3
  127. data/lib/shopify_api/rest/resources/2022_07/customer.rb +7 -3
  128. data/lib/shopify_api/rest/resources/2022_07/customer_address.rb +17 -3
  129. data/lib/shopify_api/rest/resources/2022_07/deprecated_api_call.rb +7 -3
  130. data/lib/shopify_api/rest/resources/2022_07/discount_code.rb +7 -3
  131. data/lib/shopify_api/rest/resources/2022_07/dispute.rb +7 -3
  132. data/lib/shopify_api/rest/resources/2022_07/dispute_evidence.rb +7 -3
  133. data/lib/shopify_api/rest/resources/2022_07/dispute_file_upload.rb +7 -3
  134. data/lib/shopify_api/rest/resources/2022_07/draft_order.rb +7 -3
  135. data/lib/shopify_api/rest/resources/2022_07/event.rb +7 -3
  136. data/lib/shopify_api/rest/resources/2022_07/fulfillment.rb +7 -3
  137. data/lib/shopify_api/rest/resources/2022_07/fulfillment_event.rb +7 -3
  138. data/lib/shopify_api/rest/resources/2022_07/fulfillment_order.rb +10 -10
  139. data/lib/shopify_api/rest/resources/2022_07/fulfillment_request.rb +17 -3
  140. data/lib/shopify_api/rest/resources/2022_07/fulfillment_service.rb +7 -3
  141. data/lib/shopify_api/rest/resources/2022_07/gift_card.rb +7 -3
  142. data/lib/shopify_api/rest/resources/2022_07/gift_card_adjustment.rb +7 -3
  143. data/lib/shopify_api/rest/resources/2022_07/image.rb +7 -3
  144. data/lib/shopify_api/rest/resources/2022_07/inventory_item.rb +7 -3
  145. data/lib/shopify_api/rest/resources/2022_07/inventory_level.rb +7 -3
  146. data/lib/shopify_api/rest/resources/2022_07/location.rb +7 -3
  147. data/lib/shopify_api/rest/resources/2022_07/locations_for_move.rb +7 -3
  148. data/lib/shopify_api/rest/resources/2022_07/marketing_event.rb +7 -3
  149. data/lib/shopify_api/rest/resources/2022_07/metafield.rb +7 -3
  150. data/lib/shopify_api/rest/resources/2022_07/mobile_platform_application.rb +7 -3
  151. data/lib/shopify_api/rest/resources/2022_07/order.rb +10 -3
  152. data/lib/shopify_api/rest/resources/2022_07/order_risk.rb +12 -6
  153. data/lib/shopify_api/rest/resources/2022_07/page.rb +7 -3
  154. data/lib/shopify_api/rest/resources/2022_07/payment.rb +7 -3
  155. data/lib/shopify_api/rest/resources/2022_07/payment_gateway.rb +7 -3
  156. data/lib/shopify_api/rest/resources/2022_07/payment_transaction.rb +7 -3
  157. data/lib/shopify_api/rest/resources/2022_07/payout.rb +7 -3
  158. data/lib/shopify_api/rest/resources/2022_07/policy.rb +7 -3
  159. data/lib/shopify_api/rest/resources/2022_07/price_rule.rb +7 -3
  160. data/lib/shopify_api/rest/resources/2022_07/product.rb +7 -3
  161. data/lib/shopify_api/rest/resources/2022_07/product_listing.rb +7 -3
  162. data/lib/shopify_api/rest/resources/2022_07/product_resource_feedback.rb +7 -3
  163. data/lib/shopify_api/rest/resources/2022_07/province.rb +7 -3
  164. data/lib/shopify_api/rest/resources/2022_07/recurring_application_charge.rb +7 -3
  165. data/lib/shopify_api/rest/resources/2022_07/redirect.rb +7 -3
  166. data/lib/shopify_api/rest/resources/2022_07/refund.rb +7 -3
  167. data/lib/shopify_api/rest/resources/2022_07/report.rb +7 -3
  168. data/lib/shopify_api/rest/resources/2022_07/resource_feedback.rb +7 -3
  169. data/lib/shopify_api/rest/resources/2022_07/script_tag.rb +7 -3
  170. data/lib/shopify_api/rest/resources/2022_07/shipping_zone.rb +7 -3
  171. data/lib/shopify_api/rest/resources/2022_07/shop.rb +9 -5
  172. data/lib/shopify_api/rest/resources/2022_07/smart_collection.rb +7 -3
  173. data/lib/shopify_api/rest/resources/2022_07/storefront_access_token.rb +7 -3
  174. data/lib/shopify_api/rest/resources/2022_07/tender_transaction.rb +7 -3
  175. data/lib/shopify_api/rest/resources/2022_07/theme.rb +7 -3
  176. data/lib/shopify_api/rest/resources/2022_07/transaction.rb +7 -3
  177. data/lib/shopify_api/rest/resources/2022_07/usage_charge.rb +7 -3
  178. data/lib/shopify_api/rest/resources/2022_07/user.rb +7 -3
  179. data/lib/shopify_api/rest/resources/2022_07/variant.rb +7 -3
  180. data/lib/shopify_api/rest/resources/2022_07/webhook.rb +7 -3
  181. data/lib/shopify_api/rest/resources/2022_10/abandoned_checkout.rb +7 -3
  182. data/lib/shopify_api/rest/resources/2022_10/access_scope.rb +7 -3
  183. data/lib/shopify_api/rest/resources/2022_10/android_pay_key.rb +7 -3
  184. data/lib/shopify_api/rest/resources/2022_10/apple_pay_certificate.rb +7 -3
  185. data/lib/shopify_api/rest/resources/2022_10/application_charge.rb +7 -3
  186. data/lib/shopify_api/rest/resources/2022_10/application_credit.rb +7 -3
  187. data/lib/shopify_api/rest/resources/2022_10/article.rb +7 -3
  188. data/lib/shopify_api/rest/resources/2022_10/asset.rb +7 -3
  189. data/lib/shopify_api/rest/resources/2022_10/assigned_fulfillment_order.rb +12 -6
  190. data/lib/shopify_api/rest/resources/2022_10/balance.rb +11 -3
  191. data/lib/shopify_api/rest/resources/2022_10/blog.rb +7 -3
  192. data/lib/shopify_api/rest/resources/2022_10/cancellation_request.rb +7 -3
  193. data/lib/shopify_api/rest/resources/2022_10/carrier_service.rb +7 -3
  194. data/lib/shopify_api/rest/resources/2022_10/checkout.rb +7 -3
  195. data/lib/shopify_api/rest/resources/2022_10/collect.rb +7 -3
  196. data/lib/shopify_api/rest/resources/2022_10/collection.rb +7 -3
  197. data/lib/shopify_api/rest/resources/2022_10/collection_listing.rb +7 -3
  198. data/lib/shopify_api/rest/resources/2022_10/comment.rb +7 -3
  199. data/lib/shopify_api/rest/resources/2022_10/country.rb +7 -3
  200. data/lib/shopify_api/rest/resources/2022_10/currency.rb +7 -3
  201. data/lib/shopify_api/rest/resources/2022_10/custom_collection.rb +7 -3
  202. data/lib/shopify_api/rest/resources/2022_10/customer.rb +7 -3
  203. data/lib/shopify_api/rest/resources/2022_10/customer_address.rb +17 -3
  204. data/lib/shopify_api/rest/resources/2022_10/deprecated_api_call.rb +7 -3
  205. data/lib/shopify_api/rest/resources/2022_10/discount_code.rb +7 -3
  206. data/lib/shopify_api/rest/resources/2022_10/dispute.rb +7 -3
  207. data/lib/shopify_api/rest/resources/2022_10/dispute_evidence.rb +7 -3
  208. data/lib/shopify_api/rest/resources/2022_10/dispute_file_upload.rb +7 -3
  209. data/lib/shopify_api/rest/resources/2022_10/draft_order.rb +7 -3
  210. data/lib/shopify_api/rest/resources/2022_10/event.rb +7 -3
  211. data/lib/shopify_api/rest/resources/2022_10/fulfillment.rb +7 -3
  212. data/lib/shopify_api/rest/resources/2022_10/fulfillment_event.rb +7 -3
  213. data/lib/shopify_api/rest/resources/2022_10/fulfillment_order.rb +10 -10
  214. data/lib/shopify_api/rest/resources/2022_10/fulfillment_request.rb +17 -3
  215. data/lib/shopify_api/rest/resources/2022_10/fulfillment_service.rb +7 -3
  216. data/lib/shopify_api/rest/resources/2022_10/gift_card.rb +7 -3
  217. data/lib/shopify_api/rest/resources/2022_10/gift_card_adjustment.rb +7 -3
  218. data/lib/shopify_api/rest/resources/2022_10/image.rb +7 -3
  219. data/lib/shopify_api/rest/resources/2022_10/inventory_item.rb +7 -3
  220. data/lib/shopify_api/rest/resources/2022_10/inventory_level.rb +7 -3
  221. data/lib/shopify_api/rest/resources/2022_10/location.rb +7 -3
  222. data/lib/shopify_api/rest/resources/2022_10/locations_for_move.rb +7 -3
  223. data/lib/shopify_api/rest/resources/2022_10/marketing_event.rb +7 -3
  224. data/lib/shopify_api/rest/resources/2022_10/metafield.rb +7 -3
  225. data/lib/shopify_api/rest/resources/2022_10/mobile_platform_application.rb +7 -3
  226. data/lib/shopify_api/rest/resources/2022_10/order.rb +10 -3
  227. data/lib/shopify_api/rest/resources/2022_10/order_risk.rb +12 -6
  228. data/lib/shopify_api/rest/resources/2022_10/page.rb +7 -3
  229. data/lib/shopify_api/rest/resources/2022_10/payment.rb +7 -3
  230. data/lib/shopify_api/rest/resources/2022_10/payment_gateway.rb +7 -3
  231. data/lib/shopify_api/rest/resources/2022_10/payment_transaction.rb +7 -3
  232. data/lib/shopify_api/rest/resources/2022_10/payout.rb +7 -3
  233. data/lib/shopify_api/rest/resources/2022_10/policy.rb +7 -3
  234. data/lib/shopify_api/rest/resources/2022_10/price_rule.rb +7 -3
  235. data/lib/shopify_api/rest/resources/2022_10/product.rb +7 -3
  236. data/lib/shopify_api/rest/resources/2022_10/product_listing.rb +7 -3
  237. data/lib/shopify_api/rest/resources/2022_10/product_resource_feedback.rb +7 -3
  238. data/lib/shopify_api/rest/resources/2022_10/province.rb +7 -3
  239. data/lib/shopify_api/rest/resources/2022_10/recurring_application_charge.rb +7 -3
  240. data/lib/shopify_api/rest/resources/2022_10/redirect.rb +7 -3
  241. data/lib/shopify_api/rest/resources/2022_10/refund.rb +7 -3
  242. data/lib/shopify_api/rest/resources/2022_10/report.rb +7 -3
  243. data/lib/shopify_api/rest/resources/2022_10/resource_feedback.rb +7 -3
  244. data/lib/shopify_api/rest/resources/2022_10/script_tag.rb +7 -3
  245. data/lib/shopify_api/rest/resources/2022_10/shipping_zone.rb +7 -3
  246. data/lib/shopify_api/rest/resources/2022_10/shop.rb +9 -8
  247. data/lib/shopify_api/rest/resources/2022_10/smart_collection.rb +7 -3
  248. data/lib/shopify_api/rest/resources/2022_10/storefront_access_token.rb +7 -3
  249. data/lib/shopify_api/rest/resources/2022_10/tender_transaction.rb +7 -3
  250. data/lib/shopify_api/rest/resources/2022_10/theme.rb +7 -3
  251. data/lib/shopify_api/rest/resources/2022_10/transaction.rb +7 -3
  252. data/lib/shopify_api/rest/resources/2022_10/usage_charge.rb +7 -3
  253. data/lib/shopify_api/rest/resources/2022_10/user.rb +7 -3
  254. data/lib/shopify_api/rest/resources/2022_10/variant.rb +8 -8
  255. data/lib/shopify_api/rest/resources/2022_10/webhook.rb +7 -3
  256. data/lib/shopify_api/rest/resources/2023_01/abandoned_checkout.rb +7 -3
  257. data/lib/shopify_api/rest/resources/2023_01/access_scope.rb +7 -3
  258. data/lib/shopify_api/rest/resources/2023_01/apple_pay_certificate.rb +7 -3
  259. data/lib/shopify_api/rest/resources/2023_01/application_charge.rb +7 -3
  260. data/lib/shopify_api/rest/resources/2023_01/application_credit.rb +7 -3
  261. data/lib/shopify_api/rest/resources/2023_01/article.rb +7 -3
  262. data/lib/shopify_api/rest/resources/2023_01/asset.rb +7 -3
  263. data/lib/shopify_api/rest/resources/2023_01/assigned_fulfillment_order.rb +12 -6
  264. data/lib/shopify_api/rest/resources/2023_01/balance.rb +11 -3
  265. data/lib/shopify_api/rest/resources/2023_01/blog.rb +7 -3
  266. data/lib/shopify_api/rest/resources/2023_01/cancellation_request.rb +7 -3
  267. data/lib/shopify_api/rest/resources/2023_01/carrier_service.rb +7 -3
  268. data/lib/shopify_api/rest/resources/2023_01/checkout.rb +7 -3
  269. data/lib/shopify_api/rest/resources/2023_01/collect.rb +7 -3
  270. data/lib/shopify_api/rest/resources/2023_01/collection.rb +7 -3
  271. data/lib/shopify_api/rest/resources/2023_01/collection_listing.rb +7 -3
  272. data/lib/shopify_api/rest/resources/2023_01/comment.rb +7 -3
  273. data/lib/shopify_api/rest/resources/2023_01/country.rb +7 -3
  274. data/lib/shopify_api/rest/resources/2023_01/currency.rb +7 -3
  275. data/lib/shopify_api/rest/resources/2023_01/custom_collection.rb +7 -3
  276. data/lib/shopify_api/rest/resources/2023_01/customer.rb +7 -3
  277. data/lib/shopify_api/rest/resources/2023_01/customer_address.rb +17 -3
  278. data/lib/shopify_api/rest/resources/2023_01/customer_saved_search.rb +7 -3
  279. data/lib/shopify_api/rest/resources/2023_01/deprecated_api_call.rb +7 -3
  280. data/lib/shopify_api/rest/resources/2023_01/discount_code.rb +7 -3
  281. data/lib/shopify_api/rest/resources/2023_01/dispute.rb +7 -3
  282. data/lib/shopify_api/rest/resources/2023_01/dispute_evidence.rb +7 -3
  283. data/lib/shopify_api/rest/resources/2023_01/dispute_file_upload.rb +7 -3
  284. data/lib/shopify_api/rest/resources/2023_01/draft_order.rb +7 -3
  285. data/lib/shopify_api/rest/resources/2023_01/event.rb +7 -3
  286. data/lib/shopify_api/rest/resources/2023_01/fulfillment.rb +7 -3
  287. data/lib/shopify_api/rest/resources/2023_01/fulfillment_event.rb +7 -3
  288. data/lib/shopify_api/rest/resources/2023_01/fulfillment_order.rb +15 -13
  289. data/lib/shopify_api/rest/resources/2023_01/fulfillment_request.rb +17 -3
  290. data/lib/shopify_api/rest/resources/2023_01/fulfillment_service.rb +7 -3
  291. data/lib/shopify_api/rest/resources/2023_01/gift_card.rb +7 -3
  292. data/lib/shopify_api/rest/resources/2023_01/gift_card_adjustment.rb +7 -3
  293. data/lib/shopify_api/rest/resources/2023_01/image.rb +7 -3
  294. data/lib/shopify_api/rest/resources/2023_01/inventory_item.rb +7 -3
  295. data/lib/shopify_api/rest/resources/2023_01/inventory_level.rb +7 -3
  296. data/lib/shopify_api/rest/resources/2023_01/location.rb +7 -3
  297. data/lib/shopify_api/rest/resources/2023_01/locations_for_move.rb +7 -3
  298. data/lib/shopify_api/rest/resources/2023_01/marketing_event.rb +7 -3
  299. data/lib/shopify_api/rest/resources/2023_01/metafield.rb +7 -3
  300. data/lib/shopify_api/rest/resources/2023_01/mobile_platform_application.rb +7 -3
  301. data/lib/shopify_api/rest/resources/2023_01/order.rb +10 -3
  302. data/lib/shopify_api/rest/resources/2023_01/order_risk.rb +12 -6
  303. data/lib/shopify_api/rest/resources/2023_01/page.rb +7 -3
  304. data/lib/shopify_api/rest/resources/2023_01/payment.rb +7 -3
  305. data/lib/shopify_api/rest/resources/2023_01/payment_gateway.rb +7 -3
  306. data/lib/shopify_api/rest/resources/2023_01/payment_transaction.rb +12 -5
  307. data/lib/shopify_api/rest/resources/2023_01/payout.rb +7 -3
  308. data/lib/shopify_api/rest/resources/2023_01/policy.rb +7 -3
  309. data/lib/shopify_api/rest/resources/2023_01/price_rule.rb +7 -3
  310. data/lib/shopify_api/rest/resources/2023_01/product.rb +7 -3
  311. data/lib/shopify_api/rest/resources/2023_01/product_listing.rb +7 -3
  312. data/lib/shopify_api/rest/resources/2023_01/product_resource_feedback.rb +7 -3
  313. data/lib/shopify_api/rest/resources/2023_01/province.rb +7 -3
  314. data/lib/shopify_api/rest/resources/2023_01/recurring_application_charge.rb +7 -3
  315. data/lib/shopify_api/rest/resources/2023_01/redirect.rb +7 -3
  316. data/lib/shopify_api/rest/resources/2023_01/refund.rb +7 -3
  317. data/lib/shopify_api/rest/resources/2023_01/report.rb +7 -3
  318. data/lib/shopify_api/rest/resources/2023_01/resource_feedback.rb +7 -3
  319. data/lib/shopify_api/rest/resources/2023_01/script_tag.rb +7 -3
  320. data/lib/shopify_api/rest/resources/2023_01/shipping_zone.rb +7 -3
  321. data/lib/shopify_api/rest/resources/2023_01/shop.rb +9 -8
  322. data/lib/shopify_api/rest/resources/2023_01/smart_collection.rb +7 -3
  323. data/lib/shopify_api/rest/resources/2023_01/storefront_access_token.rb +7 -3
  324. data/lib/shopify_api/rest/resources/2023_01/tender_transaction.rb +7 -3
  325. data/lib/shopify_api/rest/resources/2023_01/theme.rb +7 -3
  326. data/lib/shopify_api/rest/resources/2023_01/transaction.rb +7 -3
  327. data/lib/shopify_api/rest/resources/2023_01/usage_charge.rb +7 -3
  328. data/lib/shopify_api/rest/resources/2023_01/user.rb +7 -3
  329. data/lib/shopify_api/rest/resources/2023_01/variant.rb +8 -8
  330. data/lib/shopify_api/rest/resources/2023_01/webhook.rb +7 -3
  331. data/lib/shopify_api/rest/resources/2023_04/abandoned_checkout.rb +7 -3
  332. data/lib/shopify_api/rest/resources/2023_04/access_scope.rb +7 -3
  333. data/lib/shopify_api/rest/resources/2023_04/apple_pay_certificate.rb +7 -3
  334. data/lib/shopify_api/rest/resources/2023_04/application_charge.rb +7 -3
  335. data/lib/shopify_api/rest/resources/2023_04/application_credit.rb +7 -3
  336. data/lib/shopify_api/rest/resources/2023_04/article.rb +7 -3
  337. data/lib/shopify_api/rest/resources/2023_04/asset.rb +7 -3
  338. data/lib/shopify_api/rest/resources/2023_04/assigned_fulfillment_order.rb +12 -6
  339. data/lib/shopify_api/rest/resources/2023_04/balance.rb +11 -3
  340. data/lib/shopify_api/rest/resources/2023_04/blog.rb +7 -3
  341. data/lib/shopify_api/rest/resources/2023_04/cancellation_request.rb +7 -3
  342. data/lib/shopify_api/rest/resources/2023_04/carrier_service.rb +7 -3
  343. data/lib/shopify_api/rest/resources/2023_04/checkout.rb +7 -3
  344. data/lib/shopify_api/rest/resources/2023_04/collect.rb +7 -3
  345. data/lib/shopify_api/rest/resources/2023_04/collection.rb +7 -3
  346. data/lib/shopify_api/rest/resources/2023_04/collection_listing.rb +7 -3
  347. data/lib/shopify_api/rest/resources/2023_04/comment.rb +7 -3
  348. data/lib/shopify_api/rest/resources/2023_04/country.rb +7 -3
  349. data/lib/shopify_api/rest/resources/2023_04/currency.rb +7 -3
  350. data/lib/shopify_api/rest/resources/2023_04/custom_collection.rb +7 -3
  351. data/lib/shopify_api/rest/resources/2023_04/customer.rb +7 -3
  352. data/lib/shopify_api/rest/resources/2023_04/customer_address.rb +17 -3
  353. data/lib/shopify_api/rest/resources/2023_04/customer_saved_search.rb +7 -3
  354. data/lib/shopify_api/rest/resources/2023_04/deprecated_api_call.rb +7 -3
  355. data/lib/shopify_api/rest/resources/2023_04/discount_code.rb +7 -3
  356. data/lib/shopify_api/rest/resources/2023_04/dispute.rb +7 -3
  357. data/lib/shopify_api/rest/resources/2023_04/dispute_evidence.rb +7 -3
  358. data/lib/shopify_api/rest/resources/2023_04/dispute_file_upload.rb +7 -3
  359. data/lib/shopify_api/rest/resources/2023_04/draft_order.rb +7 -3
  360. data/lib/shopify_api/rest/resources/2023_04/event.rb +7 -3
  361. data/lib/shopify_api/rest/resources/2023_04/fulfillment.rb +7 -3
  362. data/lib/shopify_api/rest/resources/2023_04/fulfillment_event.rb +7 -3
  363. data/lib/shopify_api/rest/resources/2023_04/fulfillment_order.rb +12 -6
  364. data/lib/shopify_api/rest/resources/2023_04/fulfillment_request.rb +17 -3
  365. data/lib/shopify_api/rest/resources/2023_04/fulfillment_service.rb +7 -3
  366. data/lib/shopify_api/rest/resources/2023_04/gift_card.rb +7 -3
  367. data/lib/shopify_api/rest/resources/2023_04/gift_card_adjustment.rb +7 -3
  368. data/lib/shopify_api/rest/resources/2023_04/image.rb +7 -3
  369. data/lib/shopify_api/rest/resources/2023_04/inventory_item.rb +7 -3
  370. data/lib/shopify_api/rest/resources/2023_04/inventory_level.rb +7 -3
  371. data/lib/shopify_api/rest/resources/2023_04/location.rb +7 -3
  372. data/lib/shopify_api/rest/resources/2023_04/locations_for_move.rb +7 -3
  373. data/lib/shopify_api/rest/resources/2023_04/marketing_event.rb +7 -3
  374. data/lib/shopify_api/rest/resources/2023_04/metafield.rb +7 -3
  375. data/lib/shopify_api/rest/resources/2023_04/mobile_platform_application.rb +7 -3
  376. data/lib/shopify_api/rest/resources/2023_04/order.rb +10 -9
  377. data/lib/shopify_api/rest/resources/2023_04/order_risk.rb +12 -6
  378. data/lib/shopify_api/rest/resources/2023_04/page.rb +7 -3
  379. data/lib/shopify_api/rest/resources/2023_04/payment.rb +7 -3
  380. data/lib/shopify_api/rest/resources/2023_04/payment_gateway.rb +7 -3
  381. data/lib/shopify_api/rest/resources/2023_04/payment_transaction.rb +12 -5
  382. data/lib/shopify_api/rest/resources/2023_04/payout.rb +7 -3
  383. data/lib/shopify_api/rest/resources/2023_04/policy.rb +7 -3
  384. data/lib/shopify_api/rest/resources/2023_04/price_rule.rb +7 -3
  385. data/lib/shopify_api/rest/resources/2023_04/product.rb +7 -3
  386. data/lib/shopify_api/rest/resources/2023_04/product_listing.rb +7 -3
  387. data/lib/shopify_api/rest/resources/2023_04/product_resource_feedback.rb +7 -3
  388. data/lib/shopify_api/rest/resources/2023_04/province.rb +7 -3
  389. data/lib/shopify_api/rest/resources/2023_04/recurring_application_charge.rb +7 -3
  390. data/lib/shopify_api/rest/resources/2023_04/redirect.rb +7 -3
  391. data/lib/shopify_api/rest/resources/2023_04/refund.rb +7 -3
  392. data/lib/shopify_api/rest/resources/2023_04/report.rb +7 -3
  393. data/lib/shopify_api/rest/resources/2023_04/resource_feedback.rb +7 -3
  394. data/lib/shopify_api/rest/resources/2023_04/script_tag.rb +7 -3
  395. data/lib/shopify_api/rest/resources/2023_04/shipping_zone.rb +7 -3
  396. data/lib/shopify_api/rest/resources/2023_04/shop.rb +9 -8
  397. data/lib/shopify_api/rest/resources/2023_04/smart_collection.rb +7 -3
  398. data/lib/shopify_api/rest/resources/2023_04/storefront_access_token.rb +7 -3
  399. data/lib/shopify_api/rest/resources/2023_04/tender_transaction.rb +7 -3
  400. data/lib/shopify_api/rest/resources/2023_04/theme.rb +7 -3
  401. data/lib/shopify_api/rest/resources/2023_04/transaction.rb +7 -3
  402. data/lib/shopify_api/rest/resources/2023_04/usage_charge.rb +7 -3
  403. data/lib/shopify_api/rest/resources/2023_04/user.rb +7 -3
  404. data/lib/shopify_api/rest/resources/2023_04/variant.rb +8 -8
  405. data/lib/shopify_api/rest/resources/2023_04/webhook.rb +7 -3
  406. data/lib/shopify_api/rest/resources/2023_07/abandoned_checkout.rb +194 -0
  407. data/lib/shopify_api/rest/resources/2023_07/access_scope.rb +62 -0
  408. data/lib/shopify_api/rest/resources/2023_07/apple_pay_certificate.rb +109 -0
  409. data/lib/shopify_api/rest/resources/2023_07/application_charge.rb +113 -0
  410. data/lib/shopify_api/rest/resources/2023_07/application_credit.rb +95 -0
  411. data/lib/shopify_api/rest/resources/2023_07/article.rb +269 -0
  412. data/lib/shopify_api/rest/resources/2023_07/asset.rb +122 -0
  413. data/lib/shopify_api/rest/resources/2023_07/assigned_fulfillment_order.rb +92 -0
  414. data/lib/shopify_api/rest/resources/2023_07/balance.rb +58 -0
  415. data/lib/shopify_api/rest/resources/2023_07/blog.rb +166 -0
  416. data/lib/shopify_api/rest/resources/2023_07/cancellation_request.rb +87 -0
  417. data/lib/shopify_api/rest/resources/2023_07/carrier_service.rb +120 -0
  418. data/lib/shopify_api/rest/resources/2023_07/checkout.rb +213 -0
  419. data/lib/shopify_api/rest/resources/{2022_07/customer_saved_search.rb → 2023_07/collect.rb} +29 -52
  420. data/lib/shopify_api/rest/resources/2023_07/collection.rb +114 -0
  421. data/lib/shopify_api/rest/resources/2023_07/collection_listing.rb +159 -0
  422. data/lib/shopify_api/rest/resources/2023_07/comment.rb +287 -0
  423. data/lib/shopify_api/rest/resources/2023_07/country.rb +141 -0
  424. data/lib/shopify_api/rest/resources/2023_07/currency.rb +61 -0
  425. data/lib/shopify_api/rest/resources/2023_07/custom_collection.rb +191 -0
  426. data/lib/shopify_api/rest/resources/2023_07/customer.rb +333 -0
  427. data/lib/shopify_api/rest/resources/2023_07/customer_address.rb +215 -0
  428. data/lib/shopify_api/rest/resources/{2022_10 → 2023_07}/customer_saved_search.rb +7 -3
  429. data/lib/shopify_api/rest/resources/2023_07/deprecated_api_call.rb +61 -0
  430. data/lib/shopify_api/rest/resources/2023_07/discount_code.rb +226 -0
  431. data/lib/shopify_api/rest/resources/2023_07/dispute.rb +115 -0
  432. data/lib/shopify_api/rest/resources/2023_07/dispute_evidence.rb +121 -0
  433. data/lib/shopify_api/rest/resources/2023_07/dispute_file_upload.rb +85 -0
  434. data/lib/shopify_api/rest/resources/2023_07/draft_order.rb +279 -0
  435. data/lib/shopify_api/rest/resources/2023_07/event.rb +152 -0
  436. data/lib/shopify_api/rest/resources/2023_07/fulfillment.rb +235 -0
  437. data/lib/shopify_api/rest/resources/2023_07/fulfillment_event.rb +170 -0
  438. data/lib/shopify_api/rest/resources/2023_07/fulfillment_order.rb +318 -0
  439. data/lib/shopify_api/rest/resources/2023_07/fulfillment_request.rb +101 -0
  440. data/lib/shopify_api/rest/resources/2023_07/fulfillment_service.rb +134 -0
  441. data/lib/shopify_api/rest/resources/2023_07/gift_card.rb +222 -0
  442. data/lib/shopify_api/rest/resources/2023_07/gift_card_adjustment.rb +122 -0
  443. data/lib/shopify_api/rest/resources/2023_07/image.rb +161 -0
  444. data/lib/shopify_api/rest/resources/2023_07/inventory_item.rb +112 -0
  445. data/lib/shopify_api/rest/resources/2023_07/inventory_level.rb +183 -0
  446. data/lib/shopify_api/rest/resources/2023_07/location.rb +171 -0
  447. data/lib/shopify_api/rest/resources/2023_07/locations_for_move.rb +60 -0
  448. data/lib/shopify_api/rest/resources/2023_07/marketing_event.rb +213 -0
  449. data/lib/shopify_api/rest/resources/2023_07/metafield.rb +348 -0
  450. data/lib/shopify_api/rest/resources/2023_07/mobile_platform_application.rb +114 -0
  451. data/lib/shopify_api/rest/resources/2023_07/order.rb +489 -0
  452. data/lib/shopify_api/rest/resources/2023_07/order_risk.rb +148 -0
  453. data/lib/shopify_api/rest/resources/2023_07/page.rb +198 -0
  454. data/lib/shopify_api/rest/resources/2023_07/payment.rb +144 -0
  455. data/lib/shopify_api/rest/resources/2023_07/payment_gateway.rb +147 -0
  456. data/lib/shopify_api/rest/resources/2023_07/payment_transaction.rb +114 -0
  457. data/lib/shopify_api/rest/resources/2023_07/payout.rb +101 -0
  458. data/lib/shopify_api/rest/resources/2023_07/policy.rb +73 -0
  459. data/lib/shopify_api/rest/resources/2023_07/price_rule.rb +227 -0
  460. data/lib/shopify_api/rest/resources/2023_07/product.rb +227 -0
  461. data/lib/shopify_api/rest/resources/2023_07/product_listing.rb +200 -0
  462. data/lib/shopify_api/rest/resources/2023_07/product_resource_feedback.rb +92 -0
  463. data/lib/shopify_api/rest/resources/2023_07/province.rb +136 -0
  464. data/lib/shopify_api/rest/resources/2023_07/recurring_application_charge.rb +176 -0
  465. data/lib/shopify_api/rest/resources/2023_07/redirect.rb +143 -0
  466. data/lib/shopify_api/rest/resources/2023_07/refund.rb +155 -0
  467. data/lib/shopify_api/rest/resources/2023_07/report.rb +125 -0
  468. data/lib/shopify_api/rest/resources/2023_07/resource_feedback.rb +77 -0
  469. data/lib/shopify_api/rest/resources/2023_07/script_tag.rb +159 -0
  470. data/lib/shopify_api/rest/resources/2023_07/shipping_zone.rb +87 -0
  471. data/lib/shopify_api/rest/resources/2023_07/shop.rb +222 -0
  472. data/lib/shopify_api/rest/resources/2023_07/smart_collection.rb +220 -0
  473. data/lib/shopify_api/rest/resources/2023_07/storefront_access_token.rb +91 -0
  474. data/lib/shopify_api/rest/resources/2023_07/tender_transaction.rb +97 -0
  475. data/lib/shopify_api/rest/resources/2023_07/theme.rb +127 -0
  476. data/lib/shopify_api/rest/resources/2023_07/transaction.rb +188 -0
  477. data/lib/shopify_api/rest/resources/2023_07/usage_charge.rb +106 -0
  478. data/lib/shopify_api/rest/resources/2023_07/user.rb +142 -0
  479. data/lib/shopify_api/rest/resources/2023_07/variant.rb +212 -0
  480. data/lib/shopify_api/rest/resources/2023_07/webhook.rb +172 -0
  481. data/lib/shopify_api/rest/resources/2023_10/abandoned_checkout.rb +194 -0
  482. data/lib/shopify_api/rest/resources/2023_10/access_scope.rb +62 -0
  483. data/lib/shopify_api/rest/resources/2023_10/apple_pay_certificate.rb +109 -0
  484. data/lib/shopify_api/rest/resources/2023_10/application_charge.rb +113 -0
  485. data/lib/shopify_api/rest/resources/2023_10/application_credit.rb +95 -0
  486. data/lib/shopify_api/rest/resources/2023_10/article.rb +269 -0
  487. data/lib/shopify_api/rest/resources/2023_10/asset.rb +122 -0
  488. data/lib/shopify_api/rest/resources/2023_10/assigned_fulfillment_order.rb +92 -0
  489. data/lib/shopify_api/rest/resources/2023_10/balance.rb +58 -0
  490. data/lib/shopify_api/rest/resources/2023_10/blog.rb +166 -0
  491. data/lib/shopify_api/rest/resources/2023_10/cancellation_request.rb +87 -0
  492. data/lib/shopify_api/rest/resources/2023_10/carrier_service.rb +120 -0
  493. data/lib/shopify_api/rest/resources/2023_10/checkout.rb +213 -0
  494. data/lib/shopify_api/rest/resources/2023_10/collect.rb +146 -0
  495. data/lib/shopify_api/rest/resources/2023_10/collection.rb +114 -0
  496. data/lib/shopify_api/rest/resources/2023_10/collection_listing.rb +159 -0
  497. data/lib/shopify_api/rest/resources/2023_10/comment.rb +287 -0
  498. data/lib/shopify_api/rest/resources/2023_10/country.rb +141 -0
  499. data/lib/shopify_api/rest/resources/2023_10/currency.rb +61 -0
  500. data/lib/shopify_api/rest/resources/2023_10/custom_collection.rb +191 -0
  501. data/lib/shopify_api/rest/resources/2023_10/customer.rb +333 -0
  502. data/lib/shopify_api/rest/resources/2023_10/customer_address.rb +215 -0
  503. data/lib/shopify_api/rest/resources/2023_10/deprecated_api_call.rb +61 -0
  504. data/lib/shopify_api/rest/resources/2023_10/discount_code.rb +226 -0
  505. data/lib/shopify_api/rest/resources/2023_10/dispute.rb +115 -0
  506. data/lib/shopify_api/rest/resources/2023_10/dispute_evidence.rb +121 -0
  507. data/lib/shopify_api/rest/resources/2023_10/dispute_file_upload.rb +85 -0
  508. data/lib/shopify_api/rest/resources/2023_10/draft_order.rb +279 -0
  509. data/lib/shopify_api/rest/resources/2023_10/event.rb +152 -0
  510. data/lib/shopify_api/rest/resources/2023_10/fulfillment.rb +235 -0
  511. data/lib/shopify_api/rest/resources/2023_10/fulfillment_event.rb +170 -0
  512. data/lib/shopify_api/rest/resources/2023_10/fulfillment_order.rb +318 -0
  513. data/lib/shopify_api/rest/resources/2023_10/fulfillment_request.rb +101 -0
  514. data/lib/shopify_api/rest/resources/2023_10/fulfillment_service.rb +134 -0
  515. data/lib/shopify_api/rest/resources/2023_10/gift_card.rb +222 -0
  516. data/lib/shopify_api/rest/resources/2023_10/gift_card_adjustment.rb +122 -0
  517. data/lib/shopify_api/rest/resources/2023_10/image.rb +161 -0
  518. data/lib/shopify_api/rest/resources/2023_10/inventory_item.rb +112 -0
  519. data/lib/shopify_api/rest/resources/2023_10/inventory_level.rb +183 -0
  520. data/lib/shopify_api/rest/resources/2023_10/location.rb +171 -0
  521. data/lib/shopify_api/rest/resources/2023_10/locations_for_move.rb +60 -0
  522. data/lib/shopify_api/rest/resources/2023_10/marketing_event.rb +213 -0
  523. data/lib/shopify_api/rest/resources/2023_10/metafield.rb +348 -0
  524. data/lib/shopify_api/rest/resources/2023_10/mobile_platform_application.rb +114 -0
  525. data/lib/shopify_api/rest/resources/2023_10/order.rb +489 -0
  526. data/lib/shopify_api/rest/resources/2023_10/order_risk.rb +148 -0
  527. data/lib/shopify_api/rest/resources/2023_10/page.rb +198 -0
  528. data/lib/shopify_api/rest/resources/2023_10/payment.rb +144 -0
  529. data/lib/shopify_api/rest/resources/2023_10/payment_gateway.rb +147 -0
  530. data/lib/shopify_api/rest/resources/2023_10/payment_transaction.rb +114 -0
  531. data/lib/shopify_api/rest/resources/2023_10/payout.rb +101 -0
  532. data/lib/shopify_api/rest/resources/2023_10/policy.rb +73 -0
  533. data/lib/shopify_api/rest/resources/2023_10/price_rule.rb +227 -0
  534. data/lib/shopify_api/rest/resources/2023_10/product.rb +227 -0
  535. data/lib/shopify_api/rest/resources/2023_10/product_listing.rb +200 -0
  536. data/lib/shopify_api/rest/resources/2023_10/product_resource_feedback.rb +92 -0
  537. data/lib/shopify_api/rest/resources/2023_10/province.rb +136 -0
  538. data/lib/shopify_api/rest/resources/2023_10/recurring_application_charge.rb +176 -0
  539. data/lib/shopify_api/rest/resources/2023_10/redirect.rb +143 -0
  540. data/lib/shopify_api/rest/resources/2023_10/refund.rb +155 -0
  541. data/lib/shopify_api/rest/resources/2023_10/report.rb +125 -0
  542. data/lib/shopify_api/rest/resources/2023_10/resource_feedback.rb +77 -0
  543. data/lib/shopify_api/rest/resources/2023_10/script_tag.rb +159 -0
  544. data/lib/shopify_api/rest/resources/2023_10/shipping_zone.rb +87 -0
  545. data/lib/shopify_api/rest/resources/2023_10/shop.rb +222 -0
  546. data/lib/shopify_api/rest/resources/2023_10/smart_collection.rb +220 -0
  547. data/lib/shopify_api/rest/resources/2023_10/storefront_access_token.rb +91 -0
  548. data/lib/shopify_api/rest/resources/2023_10/tender_transaction.rb +97 -0
  549. data/lib/shopify_api/rest/resources/2023_10/theme.rb +127 -0
  550. data/lib/shopify_api/rest/resources/2023_10/transaction.rb +188 -0
  551. data/lib/shopify_api/rest/resources/2023_10/usage_charge.rb +106 -0
  552. data/lib/shopify_api/rest/resources/2023_10/user.rb +142 -0
  553. data/lib/shopify_api/rest/resources/2023_10/variant.rb +212 -0
  554. data/lib/shopify_api/rest/resources/2023_10/webhook.rb +172 -0
  555. data/lib/shopify_api/rest/resources/2024_01/abandoned_checkout.rb +194 -0
  556. data/lib/shopify_api/rest/resources/2024_01/access_scope.rb +62 -0
  557. data/lib/shopify_api/rest/resources/2024_01/apple_pay_certificate.rb +109 -0
  558. data/lib/shopify_api/rest/resources/2024_01/application_charge.rb +113 -0
  559. data/lib/shopify_api/rest/resources/2024_01/application_credit.rb +95 -0
  560. data/lib/shopify_api/rest/resources/2024_01/article.rb +269 -0
  561. data/lib/shopify_api/rest/resources/2024_01/asset.rb +122 -0
  562. data/lib/shopify_api/rest/resources/2024_01/assigned_fulfillment_order.rb +92 -0
  563. data/lib/shopify_api/rest/resources/2024_01/balance.rb +58 -0
  564. data/lib/shopify_api/rest/resources/2024_01/blog.rb +166 -0
  565. data/lib/shopify_api/rest/resources/2024_01/cancellation_request.rb +87 -0
  566. data/lib/shopify_api/rest/resources/2024_01/carrier_service.rb +120 -0
  567. data/lib/shopify_api/rest/resources/2024_01/checkout.rb +213 -0
  568. data/lib/shopify_api/rest/resources/2024_01/collect.rb +146 -0
  569. data/lib/shopify_api/rest/resources/2024_01/collection.rb +114 -0
  570. data/lib/shopify_api/rest/resources/2024_01/collection_listing.rb +159 -0
  571. data/lib/shopify_api/rest/resources/2024_01/comment.rb +287 -0
  572. data/lib/shopify_api/rest/resources/2024_01/country.rb +141 -0
  573. data/lib/shopify_api/rest/resources/2024_01/currency.rb +61 -0
  574. data/lib/shopify_api/rest/resources/2024_01/custom_collection.rb +191 -0
  575. data/lib/shopify_api/rest/resources/2024_01/customer.rb +333 -0
  576. data/lib/shopify_api/rest/resources/2024_01/customer_address.rb +215 -0
  577. data/lib/shopify_api/rest/resources/2024_01/deprecated_api_call.rb +61 -0
  578. data/lib/shopify_api/rest/resources/2024_01/discount_code.rb +226 -0
  579. data/lib/shopify_api/rest/resources/2024_01/dispute.rb +115 -0
  580. data/lib/shopify_api/rest/resources/2024_01/dispute_evidence.rb +121 -0
  581. data/lib/shopify_api/rest/resources/2024_01/dispute_file_upload.rb +85 -0
  582. data/lib/shopify_api/rest/resources/2024_01/draft_order.rb +279 -0
  583. data/lib/shopify_api/rest/resources/2024_01/event.rb +152 -0
  584. data/lib/shopify_api/rest/resources/2024_01/fulfillment.rb +235 -0
  585. data/lib/shopify_api/rest/resources/2024_01/fulfillment_event.rb +170 -0
  586. data/lib/shopify_api/rest/resources/2024_01/fulfillment_order.rb +326 -0
  587. data/lib/shopify_api/rest/resources/2024_01/fulfillment_request.rb +101 -0
  588. data/lib/shopify_api/rest/resources/2024_01/fulfillment_service.rb +134 -0
  589. data/lib/shopify_api/rest/resources/2024_01/gift_card.rb +222 -0
  590. data/lib/shopify_api/rest/resources/2024_01/gift_card_adjustment.rb +122 -0
  591. data/lib/shopify_api/rest/resources/2024_01/image.rb +161 -0
  592. data/lib/shopify_api/rest/resources/2024_01/inventory_item.rb +112 -0
  593. data/lib/shopify_api/rest/resources/2024_01/inventory_level.rb +183 -0
  594. data/lib/shopify_api/rest/resources/2024_01/location.rb +171 -0
  595. data/lib/shopify_api/rest/resources/2024_01/locations_for_move.rb +60 -0
  596. data/lib/shopify_api/rest/resources/2024_01/marketing_event.rb +213 -0
  597. data/lib/shopify_api/rest/resources/2024_01/metafield.rb +348 -0
  598. data/lib/shopify_api/rest/resources/2024_01/mobile_platform_application.rb +114 -0
  599. data/lib/shopify_api/rest/resources/2024_01/order.rb +489 -0
  600. data/lib/shopify_api/rest/resources/2024_01/order_risk.rb +148 -0
  601. data/lib/shopify_api/rest/resources/2024_01/page.rb +198 -0
  602. data/lib/shopify_api/rest/resources/2024_01/payment.rb +144 -0
  603. data/lib/shopify_api/rest/resources/2024_01/payment_gateway.rb +147 -0
  604. data/lib/shopify_api/rest/resources/2024_01/payment_transaction.rb +114 -0
  605. data/lib/shopify_api/rest/resources/2024_01/payout.rb +101 -0
  606. data/lib/shopify_api/rest/resources/2024_01/policy.rb +73 -0
  607. data/lib/shopify_api/rest/resources/2024_01/price_rule.rb +227 -0
  608. data/lib/shopify_api/rest/resources/2024_01/product.rb +227 -0
  609. data/lib/shopify_api/rest/resources/2024_01/product_listing.rb +200 -0
  610. data/lib/shopify_api/rest/resources/2024_01/product_resource_feedback.rb +92 -0
  611. data/lib/shopify_api/rest/resources/2024_01/province.rb +136 -0
  612. data/lib/shopify_api/rest/resources/2024_01/recurring_application_charge.rb +176 -0
  613. data/lib/shopify_api/rest/resources/2024_01/redirect.rb +143 -0
  614. data/lib/shopify_api/rest/resources/2024_01/refund.rb +155 -0
  615. data/lib/shopify_api/rest/resources/2024_01/report.rb +125 -0
  616. data/lib/shopify_api/rest/resources/2024_01/resource_feedback.rb +77 -0
  617. data/lib/shopify_api/rest/resources/2024_01/script_tag.rb +159 -0
  618. data/lib/shopify_api/rest/resources/2024_01/shipping_zone.rb +87 -0
  619. data/lib/shopify_api/rest/resources/2024_01/shop.rb +222 -0
  620. data/lib/shopify_api/rest/resources/2024_01/smart_collection.rb +220 -0
  621. data/lib/shopify_api/rest/resources/2024_01/storefront_access_token.rb +91 -0
  622. data/lib/shopify_api/rest/resources/2024_01/tender_transaction.rb +97 -0
  623. data/lib/shopify_api/rest/resources/2024_01/theme.rb +127 -0
  624. data/lib/shopify_api/rest/resources/2024_01/transaction.rb +188 -0
  625. data/lib/shopify_api/rest/resources/2024_01/usage_charge.rb +106 -0
  626. data/lib/shopify_api/rest/resources/2024_01/user.rb +142 -0
  627. data/lib/shopify_api/rest/resources/2024_01/variant.rb +212 -0
  628. data/lib/shopify_api/rest/resources/2024_01/webhook.rb +172 -0
  629. data/lib/shopify_api/utils/attributes_comparator.rb +85 -0
  630. data/lib/shopify_api/utils/hmac_validator.rb +2 -2
  631. data/lib/shopify_api/version.rb +1 -1
  632. data/lib/shopify_api/webhooks/handler.rb +24 -1
  633. data/lib/shopify_api/webhooks/registration.rb +21 -6
  634. data/lib/shopify_api/webhooks/registrations/event_bridge.rb +1 -1
  635. data/lib/shopify_api/webhooks/registrations/http.rb +1 -1
  636. data/lib/shopify_api/webhooks/registrations/pub_sub.rb +2 -1
  637. data/lib/shopify_api/webhooks/registry.rb +49 -7
  638. data/lib/shopify_api/webhooks/request.rb +10 -0
  639. data/shopify_api.gemspec +2 -3
  640. metadata +234 -29
  641. data/.github/workflows/stale.yml +0 -43
  642. data/docs/issues.md +0 -39
  643. data/docs/usage/session_storage.md +0 -46
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d36c6512c91e12fdcc4d3f9ee1049241498e41b0406448d19cafb94d97d7c815
4
- data.tar.gz: 9633547697ee1493db17837b28ea7e0b1e539d6d062e5066bd3f983fdaf4090f
3
+ metadata.gz: d335207bd3fc2cf7798f48f3b7a0ff9ea05c05969e189423a9cd89a06c9d155b
4
+ data.tar.gz: 873f2d725e8e1b84e4d8fc617e1b9aa6d3ddec6a9791646a76fb2f946d39ac9b
5
5
  SHA512:
6
- metadata.gz: 8964e99218d49f9e0a9bd5e277ead941ad8252d59c59e97a2eba9234f7a7396d92a52628ac7268599f454c2c60cbb8f696d0501ea1e75c5c531b74d4708a28c0
7
- data.tar.gz: 1d38649055c009278cabec33441525df0086a5fc078e2974da48d845d6f98014409d12068791cefa99c3ef5bc4a79f2012d60a514aeeba5db1a87e8ed1739070
6
+ metadata.gz: 994fa799e6f84043aeec3ffd7c49789588299cf55d40de6bfe091b1b3d935fa99312666d78addb4238532345d6cae97d65f3785ef4fc38a576dfdc9eaa127ca9
7
+ data.tar.gz: 2ff189f2ecb5bb7a9ead4852162857c6e13a29f5fa2229e15378b1ba05ff92cd9c0a3e663161f4f17285a843a88882b53a358c1070ca881e49ba185be98184e7
data/.github/CODEOWNERS CHANGED
@@ -1 +1 @@
1
- * @shopify/learn-libs-superteam
1
+ * @Shopify/client-libraries-app-templates
@@ -11,7 +11,6 @@ jobs:
11
11
  strategy:
12
12
  matrix:
13
13
  version:
14
- - 2.7
15
14
  - 3.0
16
15
  - 3.1
17
16
  steps:
@@ -20,6 +19,10 @@ jobs:
20
19
  uses: ruby/setup-ruby@v1
21
20
  with:
22
21
  ruby-version: ${{ matrix.version }}
22
+ - name: Install OpenSSL
23
+ run: |
24
+ sudo apt-get update
25
+ sudo apt-get install -y libssl-dev
23
26
  - name: Run Bundle Commands
24
27
  run: |
25
28
  bundle config set --with docs
data/.rubocop.yml CHANGED
@@ -57,6 +57,8 @@ Layout/EmptyLineAfterGuardClause:
57
57
  Enabled: true
58
58
  Style/GlobalStdStream:
59
59
  Enabled: true
60
+ Style/OpenStructUse:
61
+ Enabled: false
60
62
  Layout/LineLength:
61
63
  Exclude:
62
64
  - "test/clients/*"
@@ -0,0 +1,231 @@
1
+ # Breaking change notice for version 10.0.0
2
+
3
+ We've rewritten this library for v10, so that it provides all essential features for a Shopify app without depending on the [Active Resource](https://github.com/rails/activeresource) or [graphql-client](https://github.com/github/graphql-client) libraries.
4
+
5
+ #### Table of Contents
6
+ - [New Features](#new-features)
7
+ - [Upgrade Guide](#upgrade-guide)
8
+ - [1. Configuration Changes](#1-configuration-changes)
9
+ - [2. Session Changes](#2-session-changes)
10
+ - [ShopifyAPI::Auth::Session](#shopifyapiauthsession)
11
+ - [3. API Client Changes](#3-api-client-changes)
12
+ - [GraphQL](#graphql)
13
+ - [Rest](#rest)
14
+ - [Using Rest Resources](#using-rest-resources)
15
+ - [Using Rest Admin Client](#using-rest-admin-client)
16
+ - [Generic HTTP Client](#generic-http-client)
17
+ - [Useful References](#useful-references)
18
+
19
+ ## New Features
20
+ Here are the main features version 10 provides:
21
+
22
+ - OAuth support, both with online and offline tokens.
23
+ - Full, transparent support for JWT sessions for embedded apps and cookies for non-embedded ones.
24
+ - Removal of support for 3rd party cookies which are increasingly more difficult to use with modern browsers.
25
+ - Admin API support
26
+ - Auto-generated, version-specific REST resources which are similar to `ActiveResource` (though not identical), that provide methods for all endpoints defined in our [REST API reference](https://shopify.dev/docs/api/admin-rest), as well as direct definition of known attributes.
27
+ - A GraphQL client that doesn't rely on the ActiveResource implementation for REST.
28
+ - Webhook management, with features for adding handlers and registering them with Shopify.
29
+ - Storefront GraphQL API support
30
+
31
+ Please refer to the [Getting Started](docs/getting_started.md) guide in this repository for instructions on how to use each of these components.
32
+
33
+ ### Reasoning
34
+ - Browsers stopped allowing 3rd party cookies, even after jumping through several [ITP](https://webkit.org/tracking-prevention-policy/) hoops, which made the code
35
+ even more more complex and error prone.
36
+ - Session tokens and `authenticatedFetch` were introduced to make it possible for apps to authenticate requests without depending on cookies.
37
+ - The gem was too closely tied to rails on how it sets up sessions (which worked for cookies), so we had to detach the library from rails
38
+ in order to be able to work with both cookies and session tokens.
39
+ - We previously relied on an `omniauth-oauth2` strategy that worked fine when cookies were the only option. But it became increasingly
40
+ awkward when we moved towards session tokens, which meant re-writing the OAuth process in the gem as a whole.
41
+ - Introducing a DB stored session persistence rather than cookie stored.
42
+ - Most feedback we got previously was due to the `ActiveResource` classes failing out of sync with the API because:
43
+ 1. We have some endpoints that didn't 100% follow REST convention;
44
+ 2. We had a single class for each resource and manually maintained custom methods that didn't work across API versions.
45
+
46
+ - To solve the REST problems:
47
+ - We were adding support for auto-generated, version-specific resources for other languages, we decided to add them for Ruby too.
48
+ But those same instances where the API doesn't follow convention would become problematic. Thus we opted for the most explicit option where **every** method was "custom" rather than just some, so that the resources were always consistent.
49
+
50
+ ## Upgrade Guide
51
+ With this, a lot changed in how apps access the library. Here are the updates you should make when migrating to v10:
52
+
53
+ ### 1. Configuration Changes
54
+ #### Removed ShopifyAPI::Base
55
+ `ShopifyAPI::Base` class has been removed. Previous versions of this gem used this class to configure API request setting like:
56
+ - **API request version**
57
+ - **Previously**: Set by `ShopifyAPI::Base.api_version = "xxxx"`
58
+ - **Change**: Configured `api_version` in [ShopifyAPI::Context.setup](#shopifyapicontextsetup)
59
+ - **Set `User-Agent` on API request header**
60
+ - **Previously**: Set by `ShopifyAPI::Base.header["User-Agent"] = "xxxxx"`
61
+ - **Change**: Configured `user_agent_prefix` in [ShopifyAPI::Context.setup](#shopifyapicontextsetup)
62
+ - **Set custom headers on API requests**
63
+ - **Previously**: Set by `ShopifyAPI::Base.header["User-Agent"] = "xxxxx"`
64
+ - **Change**: Custom headers can be added to requests when you use [`ShopifyAPI::Clients::HttpRequest`](https://github.com/Shopify/shopify-api-ruby/blob/main/lib/shopify_api/clients/http_request.rb#L14)
65
+
66
+ #### ShopifyAPI::Context.setup
67
+ Initializing the `ShopifyAPI::Context` with the parameters of your app by calling `ShopifyAPI::Context.setup` (example below) when your app starts (e.g `application.rb` in a Rails app).
68
+ This class holds global configurations for your app and defines how the library behaves.
69
+
70
+ ```ruby
71
+ ShopifyAPI::Context.setup(
72
+ api_key: "<api-key>",
73
+ api_secret_key: "<api-secret-key>",
74
+ host_name: "<application-host-name>",
75
+ scope: "read_orders,read_products,etc",
76
+ is_embedded: true, # Set to true if you are building an embedded app
77
+ is_private: false, # Set to true if you are building a private app
78
+ api_version: "2021-01" # The version of the API you would like to use
79
+ user_agent_prefix: "<user_agent_prefix>" # Set a custom prefix for "User-Agent" header when making API requests
80
+ ###
81
+ )
82
+ ```
83
+
84
+ See other fields accepted during `ShopifyAPI::Context` setup in [context.rb](https://github.com/Shopify/shopify-api-ruby/blob/main/lib/shopify_api/context.rb).
85
+
86
+ ### 2. Session Changes
87
+ `ShopifyAPI::Base` class has been removed, you can no longer activate session using `ShopifyAPI::Base.activate_session`. Instead, you can use
88
+ `ShopifyAPI::Context.activate_session` to set the active session ([`ShopifyAPI::Auth::Session`](#shopifyapiauthsesion)).
89
+ If you're using the [ShopifyApp](https://github.com/Shopify/shopify_app) gem in a Rails app, you don't have to manually set the active session if you use the included `ActiveSupport` concerns. See [Session Docs](https://github.com/Shopify/shopify_app/blob/main/docs/shopify_app/sessions.md) from ShopifyApp gem.
90
+
91
+ You can also manually specify the session to use without setting the active session by passing in the session object ([`ShopifyAPI::Auth::Session`](#shopifyapiauthsesion)) when instantiating new `ShopifyAPI::Clients` objects.
92
+ If session is `nil`, it'll default to use active session from `ShopifyAPI::Context.active_session`.
93
+
94
+ ```ruby
95
+ # Manually specifying a session (ShopifyAPI::Auth::Session) in API clients.
96
+
97
+ # GraphQL Client
98
+ graphql_client = ShopifyAPI::Clients::Graphql::Admin.new(session: session)
99
+
100
+ # REST Client
101
+ rest_client = ShopifyAPI::Clients::Rest::Admin.new(session: session)
102
+
103
+ # Using REST Resources
104
+ rest_resource = ShopifyAPI::Shop.new(session: session)
105
+ ```
106
+
107
+ ##### ShopifyAPI::Auth::Session
108
+ If you're building a Rails app, it is highly recommended for you to use the [`ShopifyApp` gem to perform OAuth and session storage](https://github.com/Shopify/shopify_app/blob/main/docs/shopify_app/sessions.md).
109
+
110
+ If you're not using Rails, please see the [Performing OAuth](./docs/usage/oauth.md) guide on how to perform OAuth to retrieve and store sessions.
111
+
112
+ ### 3. API Client Changes
113
+
114
+ #### GraphQL
115
+ - We deprecated the dependency of [graphql-client](https://rubygems.org/gems/graphql-client) gem. You must refactor your existing query and response parsing to use our new GraphQL HTTP Client classes.
116
+ - [Admin API Client](https://github.com/Shopify/shopify-api-ruby/blob/main/lib/shopify_api/clients/graphql/admin.rb)
117
+ - [Storefront API Client](https://github.com/Shopify/shopify-api-ruby/blob/main/lib/shopify_api/clients/graphql/storefront.rb)
118
+ - There is no need to dump the schema to a local JSON file before using it anymore.
119
+ - The api version used to be set on `ShopifyAPI::Base.api_version`, however that's now deprecated.
120
+ You may specify a specific version when initializing your client, or it'll infer to `ShopifyAPI::Context.api_version` as default.
121
+
122
+ ⚠️ See other Admin API usage in ["Make a GraphQL API call" documentation](https://github.com/Shopify/shopify-api-ruby/blob/main/docs/usage/graphql.md).
123
+
124
+ ⚠️ See Storefront API client usage in ["Make a Storefront API call" documentation](https://github.com/Shopify/shopify-api-ruby/blob/main/docs/usage/graphql.md).
125
+
126
+ ###### Example refactor
127
+ ShopifyAPI Client v9
128
+ ```ruby
129
+ ShopifyAPI::Base.api_version = "2023-04"
130
+ client = ShopifyAPI::GraphQL.client
131
+
132
+ SHOP_NAME_QUERY = client.parse <<-'GRAPHQL'
133
+ {
134
+ shop {
135
+ name
136
+ }
137
+ }
138
+ GRAPHQL
139
+
140
+ result = client.query(SHOP_NAME_QUERY)
141
+ shop_name = result.data.shop.name
142
+ ```
143
+
144
+ ShopifyAPI Client v10+
145
+ ```ruby
146
+ client = ShopifyAPI::Clients::Graphql::Admin.new(session: session, api_version: "2023-04")
147
+ # session must be an instance of ShopifyAPI::Auth::Session, see Section - [2. Session Changes]
148
+
149
+ SHOP_NAME_QUERY =<<~QUERY
150
+ {
151
+ shop {
152
+ name
153
+ }
154
+ }
155
+ QUERY
156
+
157
+ response = client.query(query: query)
158
+ shop_name = response.body["data"]["shop"]["name"]
159
+ ```
160
+
161
+ #### REST
162
+ ##### Using REST Resources
163
+ - The use of `ActiveResource` has been deprecated, REST API requests must now be refactored to use the new format that better represents our REST API schema.
164
+ - Previously the api_version is specified in `ShopifyAPI::Base.api_version`, that has been deprecated. It's now configured in [`ShopifyAPI::Context.setup`](#shopifyapicontextsetup).
165
+
166
+ ###### Example refactor
167
+ ⚠️ You can find detailed examples on how each of the resource endpoints work in our [REST reference documentation](https://shopify.dev/docs/api/admin-rest).
168
+
169
+ Please see below a (non-exhaustive) list of common replacements to guide you in your updates, using the `Order` resource as an example.
170
+ For more detail, see [`order` reference documentation's](https://shopify.dev/docs/api/admin-rest/2023-07/resources/order#top) ruby example.
171
+
172
+ |Usage | Before| After |
173
+ | -----| --- | --- |
174
+ |Find partially paid orders| `Order.find(:all, params: {financial_status: "partially_paid"})`| `Order.all(financial_status: "partially_paid")` |
175
+ |Find order by ID `<id>` | `Order.find(<id>)` | `Order.find(id: <id>)` |
176
+ |Update an order's fulfillment status|`order = Order.find<id>`<br/>`order.fulfillment_status = "fulfilled"`<br/>`order.note = "Fulfilled on September 6, 2023"`<br/>`order.save`|`order = Order.find(id: <id>)`<br/>`order.fulfillment_status = "fulfilled"`<br/>`order.note = "Fulfilled on September 6, 2023"`<br/>`order.save!`|
177
+ |Close an order| `order = Order.new(<id>)`<br/>`order.post(:close)` | `order = Order.find(id: <id>)`<br/>`order.close` |
178
+ |Delete an order| `order = Order.new(<id>)`<br/>`order.delete` | `Order.delete(id: <id>)` |
179
+
180
+ ###### Note on resource connections
181
+ Previously we added helper methods to load related resource connections like [`orders.transactions`](https://github.com/Shopify/shopify-api-ruby/blob/97eec35fb76afbce1d948cee2963791457e934da/lib/shopify_api/resources/order.rb#L20).
182
+ After the upgrade, only connected properties listed in the REST API will be supported.
183
+
184
+ For example:
185
+ - `order.transactions` is not supported because `transactions` is not a property of the `Order` resource.
186
+ - `order.customer` is supported because `customer` is a property of the `Order` resource.
187
+
188
+ [See the full list of `Order` properties here.](https://shopify.dev/docs/api/admin-rest/2023-07/resources/order#resource-object)
189
+
190
+ ##### Using REST Admin Client
191
+ If you do not want to use the REST resource classes, you can use our REST Admin client directly to make HTTP requests.
192
+
193
+ ⚠️ See other REST client usage in ["Make a REST API call" documentation](https://github.com/Shopify/shopify-api-ruby/blob/main/docs/usage/rest.md).
194
+
195
+ Example:
196
+ ```ruby
197
+ # Create a new client.
198
+ client = ShopifyAPI::Clients::Rest::Admin.new(session: session)
199
+
200
+ # Update title for product with ID <id>
201
+ body = {
202
+ product: {
203
+ title: "My cool product"
204
+ }
205
+ }
206
+
207
+ # Use `client.put` to send your request to the specified Shopify Admin REST API endpoint.
208
+ client.put(path: "products/<id>.json", body: body)
209
+ ```
210
+
211
+ #### Generic HTTP Client
212
+ We added a new generic [HttpClient](https://github.com/Shopify/shopify-api-ruby/blob/main/lib/shopify_api/clients/http_client.rb) wrapper to make requests and handle Shopify specific errors. All of the REST and GraphQL Clients use this HTTP Client in its foundation.
213
+ You can use this to make direct HTTP API calls easily.
214
+ See how the GraphQL Client makes a request with this HttpClient class in its [implementation here](https://github.com/Shopify/shopify-api-ruby/blob/main/lib/shopify_api/clients/graphql/client.rb#L33-L45).
215
+
216
+ ## Useful references
217
+
218
+ ShopifyAPI:
219
+ - [Performing OAuth](https://github.com/Shopify/shopify-api-ruby/blob/main/docs/usage/oauth.md)
220
+ - [Make a GraphQL API Call](https://github.com/Shopify/shopify-api-ruby/blob/main/docs/usage/graphql.md)
221
+ - [Make a Storefront API Call (GraphQL)](https://github.com/Shopify/shopify-api-ruby/blob/main/docs/usage/graphql_storefront.md)
222
+ - [Make a REST API Call](https://github.com/Shopify/shopify-api-ruby/blob/main/docs/usage/rest.md)
223
+ - [Webhooks](https://github.com/Shopify/shopify-api-ruby/blob/main/docs/usage/webhooks.md)
224
+
225
+ ShopifyApp Gem (Rails):
226
+ - [Authentication](https://github.com/Shopify/shopify_app/blob/main/docs/shopify_app/authentication.md)
227
+ - [Sessions](https://github.com/Shopify/shopify_app/blob/main/docs/shopify_app/sessions.md)
228
+
229
+ Shopify API:
230
+ - [Admin GraphQL Reference](https://shopify.dev/docs/api/admin-graphql)
231
+ - [Admin REST Reference](https://shopify.dev/docs/api/admin-rest)
data/CHANGELOG.md CHANGED
@@ -4,11 +4,48 @@ Note: For changes to the API, see https://shopify.dev/changelog?filter=api
4
4
 
5
5
  ## Unreleased
6
6
 
7
+ ## 14.0.0
8
+ - [#1274](https://github.com/Shopify/shopify-api-ruby/pull/1274) ⚠️ [Breaking] Update sorbet and rbi dependencies. Remove support for ruby 2.7. Minimum required Ruby version is 3.0
9
+ - [#1282](https://github.com/Shopify/shopify-api-ruby/pull/1282) Fixes a bug where diffing attributes to update not take into account of Array changes and required ids.
10
+ - [#1254](https://github.com/Shopify/shopify-api-ruby/pull/1254) Introduce token exchange API for fetching access tokens. This feature is currently unstable and cannot be used yet.
11
+ - [#1268](https://github.com/Shopify/shopify-api-ruby/pull/1268) Add [new webhook handler interface](https://github.com/Shopify/shopify-api-ruby/blob/main/docs/usage/webhooks.md#create-a-webhook-handler) to provide `webhook_id ` and `api_version` information to webhook handlers.
12
+ - [#1275](https://github.com/Shopify/shopify-api-ruby/pull/1275) Allow adding custom headers in REST Resource HTTP calls.
13
+
14
+ ## 13.4.0
15
+ - [#1210](https://github.com/Shopify/shopify-api-ruby/pull/1246) Add context option `response_as_struct` to allow GraphQL API responses to be accessed via dot notation.
16
+ - [#1257](https://github.com/Shopify/shopify-api-ruby/pull/1257) Add `api_call_limit` and `retry_request_after` to REST resources to expose rate limit information.
17
+ - [#1257](https://github.com/Shopify/shopify-api-ruby/pull/1257) Added support for the 2024-01 API version. This also includes a fix for the `for_hash` option when creating resources.
18
+
19
+ ## 13.3.1
20
+
21
+ - [#1244](https://github.com/Shopify/shopify-api-ruby/pull/1244) Add `expired?` to `ShopifyAPI::Auth::Session` to check if the session is expired (mainly for user sessions)
22
+ - [#1249](https://github.com/Shopify/shopify-api-ruby/pull/1249) Fix bug where mandatory webhooks could not be processed
23
+ - [#1250](https://github.com/Shopify/shopify-api-ruby/pull/1250) Remove rails methods .empty? .present? that were breaking CI
24
+
25
+ ## 13.3.0
26
+
27
+ - [#1241](https://github.com/Shopify/shopify-api-ruby/pull/1241) Add `api_host` to `ShopifyAPI::Context.setup`, allowing the API host to be overridden in `ShopifyAPI::Clients::HttpClient`. This context option is intended for internal Shopify use only.
28
+ - [#1237](https://github.com/Shopify/shopify-api-ruby/pull/1237) Skip mandatory webhook topic registration/unregistrations
29
+ - [#1239](https://github.com/Shopify/shopify-api-ruby/pull/1239) Update `OAuth.validate_auth_callback` to use `ShopifyApi::Clients::HttpClient`.
30
+
31
+ ## 13.2.0
32
+
33
+ - [#1183](https://github.com/Shopify/shopify-api-ruby/pull/1189) Added string array support for fields parameter in Webhook::Registry
34
+ - [1208](https://github.com/Shopify/shopify-api-ruby/pull/1208) Fix CustomerAddress and FulfillmentRequest methods
35
+ - [1225](https://github.com/Shopify/shopify-api-ruby/pull/1225) Support for 2023_10 API version
36
+ - [#1186](https://github.com/Shopify/shopify-api-ruby/pull/1186) Extend webhook registration to support metafield_namespaces
37
+
38
+ ## 13.1.0
39
+
40
+ - [#1183](https://github.com/Shopify/shopify-api-ruby/pull/1183) Added support for API version 2023-07
41
+ - [#1157](https://github.com/Shopify/shopify-api-ruby/pull/1157) Fix an issue where read-only attributes are included when saving REST resources
42
+ - [#1169](https://github.com/Shopify/shopify-api-ruby/pull/1169) Unpin zeitwerk version from 2.6.5
43
+
7
44
  ## 13.0.0
8
45
 
9
46
  - [#1140](https://github.com/Shopify/shopify-api-ruby/pull/1140) ⚠️ [Breaking] Reformat Http error messages to be JSON parsable.
10
47
  - [#1142](https://github.com/Shopify/shopify-api-ruby/issues/1142) Restore API version 2022-04, in alignment with [this](https://shopify.dev/changelog/action-required-support-for-api-version-2022-04-extended-to-june-30-2023) changelog notice.
11
- - [#1155](https://github.com/Shopify/shopify-api-ruby/pull/1155) ⚠️ [Breaking] Remove session storage that was deprecated with [#1055](https://github.com/Shopify/shopify-api-ruby/pull/1055). ⚠️ [Breaking] GraphQL Proxy now requires `session` to be passed as an argument.
48
+ - [#1155](https://github.com/Shopify/shopify-api-ruby/pull/1155) ⚠️ [Breaking] Remove session storage that was deprecated with [#1055](https://github.com/Shopify/shopify-api-ruby/pull/1055). To upgrade, remove `session_storage` from your API context block. ⚠️ [Breaking] GraphQL Proxy now requires `session` to be passed as an argument.
12
49
  - [#1150](https://github.com/Shopify/shopify-api-ruby/pull/1150) [Patch] Add support for Event topic names.
13
50
 
14
51
  ## 12.5.0
@@ -0,0 +1,46 @@
1
+ # Contributor Code of Conduct
2
+
3
+ As contributors and maintainers of this project, and in the interest of
4
+ fostering an open and welcoming community, we pledge to respect all
5
+ people who contribute through reporting issues, posting feature
6
+ requests, updating documentation, submitting pull requests or patches,
7
+ and other activities.
8
+
9
+ We are committed to making participation in this project a
10
+ harassment-free experience for everyone, regardless of level of
11
+ experience, gender, gender identity and expression, sexual orientation,
12
+ disability, personal appearance, body size, race, ethnicity, age,
13
+ religion, or nationality.
14
+
15
+ Examples of unacceptable behavior by participants include:
16
+
17
+ - The use of sexualized language or imagery
18
+ - Personal attacks
19
+ - Trolling or insulting/derogatory comments
20
+ - Public or private harassment
21
+ - Publishing other's private information, such as physical or electronic
22
+ addresses, without explicit permission
23
+ - Other unethical or unprofessional conduct
24
+
25
+ Project maintainers have the right and responsibility to remove, edit,
26
+ or reject comments, commits, code, wiki edits, issues, and other
27
+ contributions that are not aligned to this Code of Conduct, or to ban
28
+ temporarily or permanently any contributor for other behaviors that they
29
+ deem inappropriate, threatening, offensive, or harmful.
30
+
31
+ By adopting this Code of Conduct, project maintainers commit themselves
32
+ to fairly and consistently applying these principles to every aspect of
33
+ managing this project. Project maintainers who do not follow or enforce
34
+ the Code of Conduct may be permanently removed from the project team.
35
+
36
+ This Code of Conduct applies both within project spaces and in public
37
+ spaces when an individual is representing the project or its community.
38
+
39
+ Instances of abusive, harassing, or otherwise unacceptable behavior may
40
+ be reported by contacting a project maintainer at <opensource@shopify.com>.
41
+ All complaints will be reviewed and investigated and will result in a response
42
+ that is deemed necessary and appropriate to the circumstances. Maintainers are
43
+ obligated to maintain confidentiality with regard to the reporter of an incident.
44
+
45
+ This Code of Conduct is adapted from the Contributor Covenant, version
46
+ 1.3.0, available from http://contributor-covenant.org/version/1/3/0/
data/CONTRIBUTING.md CHANGED
@@ -1,9 +1,34 @@
1
1
 
2
2
  Submitting Issues
3
3
  -----------------
4
+ Submitting Issues
4
5
 
5
6
  Please open an issue here if you encounter a specific bug with this API client library or if something is documented here https://shopify.dev/docs/apps but is missing from this package.
6
7
 
7
8
  General questions about the Shopify API and usage of this package (not necessarily a bug) should be posted on the [Shopify forums](https://community.shopify.com/c/partners-and-developers/ct-p/appdev).
8
9
 
9
10
  When in doubt, post on the forum first. You'll likely have your questions answered more quickly if you post there; more people monitor the forum than Github.
11
+
12
+ In order for us to best triage the issue, please include steps to reproduce the issue as well as the impacted feature.
13
+
14
+ ## Roadmap
15
+
16
+ The focus of development efforts by maintainers of this project a roadmap will be proposed via PR and accessible at any point in the ROADMAP.md file.
17
+
18
+ Working with a pull request modify the [ROADMAP.md](https://github.com/Shopify/shopify-api-ruby/blob/aa0b7f9a5a9095ca11f3f93f9aecc72e8daa6bce/ROADMAP.md) allows us to invite community feedback on the direction while not adding another communication avenue. While there are certainly better tools for the job than a markdown file for this, we are aiming to keep a minimal toolset to help us better manage the communication channels that we have open.
19
+
20
+ If there are concerns with the direction and priorities of the maintainers, this roadmap PR is the appropriate place to share your concerns.
21
+
22
+ ## Submitting Pull Requests
23
+
24
+ We welcome pull requests and help from the community! PRs fixing bugs will take priority to triaging proposed net new functionality. If you do want to add a feature, we recommend opening an issue first exploring the appetite of the community / maintainers to ensure there is alignment on direction before you spend time on the PR.
25
+
26
+ ## Gem Architecture
27
+ Understanding how all the components of the Shopify App development stack work together will help best understand what level of abstraction a feature is meant to be applied. Please consider this architecture before introducing new functionally to ensure it is in the right place:
28
+
29
+ | Gem Name | Job |
30
+ |---|---|
31
+ | Shopify API (this gem) | Obtain a session, clients for APIs (REST, GraphQL), error handling, webhook management |
32
+ | REST Resources | Interfaces to the APIs. Response casting into defined objects with attributes/methods |
33
+ | Shopify App | Build Shopify app using Rails conventions. Oauth, webhook processing, persistence, etc |
34
+ | App Template | Template demonstrating how to use all these components in one starting boilerplate application |
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- shopify_api (13.0.0)
4
+ shopify_api (14.0.0)
5
5
  activesupport
6
6
  concurrent-ruby
7
7
  hash_diff
@@ -11,62 +11,74 @@ PATH
11
11
  openssl
12
12
  securerandom
13
13
  sorbet-runtime
14
- zeitwerk (~> 2.5, < 2.6.5)
14
+ zeitwerk (~> 2.5)
15
15
 
16
16
  GEM
17
17
  remote: https://rubygems.org/
18
18
  specs:
19
- activesupport (7.0.4.3)
19
+ activesupport (7.1.3)
20
+ base64
21
+ bigdecimal
20
22
  concurrent-ruby (~> 1.0, >= 1.0.2)
23
+ connection_pool (>= 2.2.5)
24
+ drb
21
25
  i18n (>= 1.6, < 2)
22
26
  minitest (>= 5.1)
27
+ mutex_m
23
28
  tzinfo (~> 2.0)
24
29
  addressable (2.8.0)
25
30
  public_suffix (>= 2.0.2, < 5.0)
26
31
  ast (2.4.2)
32
+ base64 (0.2.0)
33
+ bigdecimal (3.1.6)
27
34
  byebug (11.1.3)
28
35
  coderay (1.1.3)
29
- concurrent-ruby (1.2.2)
36
+ concurrent-ruby (1.2.3)
37
+ connection_pool (2.4.1)
30
38
  crack (0.4.5)
31
39
  rexml
32
- diff-lcs (1.5.0)
40
+ drb (2.2.0)
41
+ ruby2_keywords
42
+ erubi (1.12.0)
33
43
  fakefs (1.4.1)
34
44
  hash_diff (1.1.1)
35
45
  hashdiff (1.0.1)
36
46
  httparty (0.21.0)
37
47
  mini_mime (>= 1.0.0)
38
48
  multi_xml (>= 0.5.2)
39
- i18n (1.13.0)
49
+ i18n (1.14.1)
40
50
  concurrent-ruby (~> 1.0)
41
51
  json (2.6.2)
42
- jwt (2.7.0)
43
- language_server-protocol (3.17.0.1)
52
+ jwt (2.7.1)
44
53
  method_source (1.0.0)
45
- mini_mime (1.1.2)
54
+ mini_mime (1.1.5)
46
55
  minitest (5.15.0)
47
56
  mocha (1.13.0)
48
57
  multi_xml (0.6.0)
58
+ mutex_m (0.2.0)
49
59
  netrc (0.11.0)
50
- oj (3.14.3)
51
- openssl (3.1.0)
52
- parallel (1.22.1)
53
- parser (3.1.2.1)
60
+ oj (3.16.3)
61
+ bigdecimal (>= 3.0)
62
+ openssl (3.2.0)
63
+ parallel (1.24.0)
64
+ parser (3.3.0.5)
54
65
  ast (~> 2.4.1)
55
- prettier_print (0.1.0)
56
- pry (0.14.1)
66
+ racc
67
+ prettier_print (1.2.1)
68
+ prism (0.21.0)
69
+ pry (0.14.2)
57
70
  coderay (~> 1.1)
58
71
  method_source (~> 1.0)
59
72
  pry-byebug (3.10.1)
60
73
  byebug (~> 11.0)
61
74
  pry (>= 0.13, < 0.15)
62
75
  public_suffix (4.0.6)
76
+ racc (1.7.3)
63
77
  rainbow (3.1.1)
64
78
  rake (13.0.6)
65
- rbi (0.0.15)
66
- ast
67
- parser (>= 2.6.4.0)
79
+ rbi (0.1.8)
80
+ prism (>= 0.18.0, < 0.22)
68
81
  sorbet-runtime (>= 0.5.9204)
69
- unparser
70
82
  regexp_parser (2.5.0)
71
83
  rexml (3.2.5)
72
84
  rubocop (1.36.0)
@@ -85,55 +97,46 @@ GEM
85
97
  rubocop (~> 1.35)
86
98
  rubocop-sorbet (0.6.11)
87
99
  rubocop (>= 0.90.0)
88
- ruby-lsp (0.3.2)
89
- language_server-protocol (~> 3.17.0)
90
- sorbet-runtime
91
- syntax_tree (>= 3.4)
92
100
  ruby-progressbar (1.11.0)
93
- securerandom (0.2.2)
94
- sorbet (0.5.10438)
95
- sorbet-static (= 0.5.10438)
96
- sorbet-runtime (0.5.10438)
97
- sorbet-static (0.5.10438-universal-darwin-21)
98
- sorbet-static (0.5.10438-universal-darwin-22)
99
- sorbet-static (0.5.10438-x86_64-linux)
100
- sorbet-static-and-runtime (0.5.10438)
101
- sorbet (= 0.5.10438)
102
- sorbet-runtime (= 0.5.10438)
103
- spoom (1.1.11)
104
- sorbet (>= 0.5.9204)
105
- sorbet-runtime (>= 0.5.9204)
101
+ ruby2_keywords (0.0.5)
102
+ securerandom (0.3.1)
103
+ sorbet (0.5.11230)
104
+ sorbet-static (= 0.5.11230)
105
+ sorbet-runtime (0.5.11230)
106
+ sorbet-static (0.5.11230-universal-darwin)
107
+ sorbet-static (0.5.11230-x86_64-linux)
108
+ sorbet-static-and-runtime (0.5.11230)
109
+ sorbet (= 0.5.11230)
110
+ sorbet-runtime (= 0.5.11230)
111
+ spoom (1.2.4)
112
+ erubi (>= 1.10.0)
113
+ sorbet-static-and-runtime (>= 0.5.10187)
114
+ syntax_tree (>= 6.1.1)
106
115
  thor (>= 0.19.2)
107
- syntax_tree (3.6.1)
108
- prettier_print
109
- tapioca (0.10.2)
110
- bundler (>= 1.17.3)
116
+ syntax_tree (6.2.0)
117
+ prettier_print (>= 1.2.0)
118
+ tapioca (0.12.0)
119
+ bundler (>= 2.2.25)
111
120
  netrc (>= 0.11.0)
112
121
  parallel (>= 1.21.0)
113
- pry (>= 0.12.2)
114
- rbi (~> 0.0.0, >= 0.0.14)
115
- sorbet-static-and-runtime (>= 0.5.9204)
116
- spoom (~> 1.1.0, >= 1.1.11)
122
+ rbi (>= 0.1.4, < 0.2)
123
+ sorbet-static-and-runtime (>= 0.5.10820)
124
+ spoom (~> 1.2.0, >= 1.2.0)
117
125
  thor (>= 1.2.0)
118
126
  yard-sorbet
119
- thor (1.2.1)
127
+ thor (1.3.0)
120
128
  tzinfo (2.0.6)
121
129
  concurrent-ruby (~> 1.0)
122
130
  unicode-display_width (2.3.0)
123
- unparser (0.6.5)
124
- diff-lcs (~> 1.3)
125
- parser (>= 3.1.0)
126
131
  webmock (3.14.0)
127
132
  addressable (>= 2.8.0)
128
133
  crack (>= 0.3.2)
129
134
  hashdiff (>= 0.4.0, < 2.0.0)
130
- webrick (1.7.0)
131
- yard (0.9.28)
132
- webrick (~> 1.7.0)
133
- yard-sorbet (0.7.0)
135
+ yard (0.9.34)
136
+ yard-sorbet (0.8.1)
134
137
  sorbet-runtime (>= 0.5)
135
138
  yard (>= 0.9)
136
- zeitwerk (2.6.4)
139
+ zeitwerk (2.6.13)
137
140
 
138
141
  PLATFORMS
139
142
  arm64-darwin-21
@@ -149,7 +152,6 @@ DEPENDENCIES
149
152
  rubocop
150
153
  rubocop-shopify
151
154
  rubocop-sorbet
152
- ruby-lsp
153
155
  shopify_api!
154
156
  sorbet
155
157
  tapioca