shopify_api 13.1.0 → 13.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (635) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CODEOWNERS +1 -1
  3. data/.github/workflows/build.yml +4 -0
  4. data/.rubocop.yml +2 -0
  5. data/BREAKING_CHANGES_FOR_V10.md +231 -0
  6. data/CHANGELOG.md +25 -1
  7. data/CONTRIBUTING.md +25 -0
  8. data/Gemfile.lock +23 -17
  9. data/README.md +10 -34
  10. data/ROADMAP.md +10 -0
  11. data/docs/README.md +0 -1
  12. data/docs/getting_started.md +20 -3
  13. data/docs/usage/custom_apps.md +75 -0
  14. data/docs/usage/graphql.md +91 -17
  15. data/docs/usage/oauth.md +160 -27
  16. data/docs/usage/rest.md +216 -59
  17. data/docs/usage/webhooks.md +22 -4
  18. data/lib/shopify_api/admin_versions.rb +3 -1
  19. data/lib/shopify_api/auth/jwt_payload.rb +2 -2
  20. data/lib/shopify_api/auth/oauth.rb +15 -5
  21. data/lib/shopify_api/auth/session.rb +5 -0
  22. data/lib/shopify_api/clients/graphql/client.rb +1 -0
  23. data/lib/shopify_api/clients/http_client.rb +12 -3
  24. data/lib/shopify_api/clients/http_response.rb +29 -2
  25. data/lib/shopify_api/context.rb +18 -5
  26. data/lib/shopify_api/rest/base.rb +35 -14
  27. data/lib/shopify_api/rest/resources/2022_04/abandoned_checkout.rb +7 -3
  28. data/lib/shopify_api/rest/resources/2022_04/access_scope.rb +7 -3
  29. data/lib/shopify_api/rest/resources/2022_04/android_pay_key.rb +7 -3
  30. data/lib/shopify_api/rest/resources/2022_04/apple_pay_certificate.rb +7 -3
  31. data/lib/shopify_api/rest/resources/2022_04/application_charge.rb +7 -3
  32. data/lib/shopify_api/rest/resources/2022_04/application_credit.rb +7 -3
  33. data/lib/shopify_api/rest/resources/2022_04/article.rb +7 -3
  34. data/lib/shopify_api/rest/resources/2022_04/asset.rb +7 -3
  35. data/lib/shopify_api/rest/resources/2022_04/assigned_fulfillment_order.rb +12 -6
  36. data/lib/shopify_api/rest/resources/2022_04/balance.rb +6 -3
  37. data/lib/shopify_api/rest/resources/2022_04/blog.rb +7 -3
  38. data/lib/shopify_api/rest/resources/2022_04/cancellation_request.rb +7 -3
  39. data/lib/shopify_api/rest/resources/2022_04/carrier_service.rb +7 -3
  40. data/lib/shopify_api/rest/resources/2022_04/checkout.rb +7 -3
  41. data/lib/shopify_api/rest/resources/2022_04/collect.rb +7 -3
  42. data/lib/shopify_api/rest/resources/2022_04/collection.rb +7 -3
  43. data/lib/shopify_api/rest/resources/2022_04/collection_listing.rb +7 -3
  44. data/lib/shopify_api/rest/resources/2022_04/comment.rb +7 -3
  45. data/lib/shopify_api/rest/resources/2022_04/country.rb +7 -3
  46. data/lib/shopify_api/rest/resources/2022_04/currency.rb +7 -3
  47. data/lib/shopify_api/rest/resources/2022_04/custom_collection.rb +7 -3
  48. data/lib/shopify_api/rest/resources/2022_04/customer.rb +7 -3
  49. data/lib/shopify_api/rest/resources/2022_04/customer_address.rb +17 -3
  50. data/lib/shopify_api/rest/resources/2022_04/customer_saved_search.rb +7 -3
  51. data/lib/shopify_api/rest/resources/2022_04/deprecated_api_call.rb +7 -3
  52. data/lib/shopify_api/rest/resources/2022_04/discount_code.rb +7 -3
  53. data/lib/shopify_api/rest/resources/2022_04/dispute.rb +7 -3
  54. data/lib/shopify_api/rest/resources/2022_04/draft_order.rb +7 -3
  55. data/lib/shopify_api/rest/resources/2022_04/event.rb +7 -3
  56. data/lib/shopify_api/rest/resources/2022_04/fulfillment.rb +7 -3
  57. data/lib/shopify_api/rest/resources/2022_04/fulfillment_event.rb +7 -3
  58. data/lib/shopify_api/rest/resources/2022_04/fulfillment_order.rb +7 -3
  59. data/lib/shopify_api/rest/resources/2022_04/fulfillment_request.rb +17 -3
  60. data/lib/shopify_api/rest/resources/2022_04/fulfillment_service.rb +7 -3
  61. data/lib/shopify_api/rest/resources/2022_04/gift_card.rb +7 -3
  62. data/lib/shopify_api/rest/resources/2022_04/gift_card_adjustment.rb +7 -3
  63. data/lib/shopify_api/rest/resources/2022_04/image.rb +7 -3
  64. data/lib/shopify_api/rest/resources/2022_04/inventory_item.rb +7 -3
  65. data/lib/shopify_api/rest/resources/2022_04/inventory_level.rb +7 -3
  66. data/lib/shopify_api/rest/resources/2022_04/location.rb +7 -3
  67. data/lib/shopify_api/rest/resources/2022_04/locations_for_move.rb +7 -3
  68. data/lib/shopify_api/rest/resources/2022_04/marketing_event.rb +7 -3
  69. data/lib/shopify_api/rest/resources/2022_04/metafield.rb +7 -3
  70. data/lib/shopify_api/rest/resources/2022_04/mobile_platform_application.rb +7 -3
  71. data/lib/shopify_api/rest/resources/2022_04/order.rb +7 -3
  72. data/lib/shopify_api/rest/resources/2022_04/order_risk.rb +12 -6
  73. data/lib/shopify_api/rest/resources/2022_04/page.rb +7 -3
  74. data/lib/shopify_api/rest/resources/2022_04/payment.rb +7 -3
  75. data/lib/shopify_api/rest/resources/2022_04/payment_gateway.rb +7 -3
  76. data/lib/shopify_api/rest/resources/2022_04/payment_transaction.rb +7 -3
  77. data/lib/shopify_api/rest/resources/2022_04/payout.rb +7 -3
  78. data/lib/shopify_api/rest/resources/2022_04/policy.rb +7 -3
  79. data/lib/shopify_api/rest/resources/2022_04/price_rule.rb +7 -3
  80. data/lib/shopify_api/rest/resources/2022_04/product.rb +7 -3
  81. data/lib/shopify_api/rest/resources/2022_04/product_listing.rb +7 -3
  82. data/lib/shopify_api/rest/resources/2022_04/product_resource_feedback.rb +7 -3
  83. data/lib/shopify_api/rest/resources/2022_04/province.rb +7 -3
  84. data/lib/shopify_api/rest/resources/2022_04/recurring_application_charge.rb +7 -3
  85. data/lib/shopify_api/rest/resources/2022_04/redirect.rb +7 -3
  86. data/lib/shopify_api/rest/resources/2022_04/refund.rb +7 -3
  87. data/lib/shopify_api/rest/resources/2022_04/report.rb +7 -3
  88. data/lib/shopify_api/rest/resources/2022_04/resource_feedback.rb +7 -3
  89. data/lib/shopify_api/rest/resources/2022_04/script_tag.rb +7 -3
  90. data/lib/shopify_api/rest/resources/2022_04/shipping_zone.rb +7 -3
  91. data/lib/shopify_api/rest/resources/2022_04/shop.rb +7 -3
  92. data/lib/shopify_api/rest/resources/2022_04/smart_collection.rb +7 -3
  93. data/lib/shopify_api/rest/resources/2022_04/storefront_access_token.rb +7 -3
  94. data/lib/shopify_api/rest/resources/2022_04/tender_transaction.rb +7 -3
  95. data/lib/shopify_api/rest/resources/2022_04/theme.rb +7 -3
  96. data/lib/shopify_api/rest/resources/2022_04/transaction.rb +7 -3
  97. data/lib/shopify_api/rest/resources/2022_04/usage_charge.rb +7 -3
  98. data/lib/shopify_api/rest/resources/2022_04/user.rb +7 -3
  99. data/lib/shopify_api/rest/resources/2022_04/variant.rb +7 -3
  100. data/lib/shopify_api/rest/resources/2022_04/webhook.rb +7 -3
  101. data/lib/shopify_api/rest/resources/2022_07/abandoned_checkout.rb +7 -3
  102. data/lib/shopify_api/rest/resources/2022_07/access_scope.rb +7 -3
  103. data/lib/shopify_api/rest/resources/2022_07/android_pay_key.rb +7 -3
  104. data/lib/shopify_api/rest/resources/2022_07/apple_pay_certificate.rb +7 -3
  105. data/lib/shopify_api/rest/resources/2022_07/application_charge.rb +7 -3
  106. data/lib/shopify_api/rest/resources/2022_07/application_credit.rb +7 -3
  107. data/lib/shopify_api/rest/resources/2022_07/article.rb +7 -3
  108. data/lib/shopify_api/rest/resources/2022_07/asset.rb +7 -3
  109. data/lib/shopify_api/rest/resources/2022_07/assigned_fulfillment_order.rb +12 -6
  110. data/lib/shopify_api/rest/resources/2022_07/balance.rb +11 -3
  111. data/lib/shopify_api/rest/resources/2022_07/blog.rb +7 -3
  112. data/lib/shopify_api/rest/resources/2022_07/cancellation_request.rb +7 -3
  113. data/lib/shopify_api/rest/resources/2022_07/carrier_service.rb +7 -3
  114. data/lib/shopify_api/rest/resources/2022_07/checkout.rb +7 -3
  115. data/lib/shopify_api/rest/resources/2022_07/collect.rb +7 -3
  116. data/lib/shopify_api/rest/resources/2022_07/collection.rb +7 -3
  117. data/lib/shopify_api/rest/resources/2022_07/collection_listing.rb +7 -3
  118. data/lib/shopify_api/rest/resources/2022_07/comment.rb +7 -3
  119. data/lib/shopify_api/rest/resources/2022_07/country.rb +7 -3
  120. data/lib/shopify_api/rest/resources/2022_07/currency.rb +7 -3
  121. data/lib/shopify_api/rest/resources/2022_07/custom_collection.rb +7 -3
  122. data/lib/shopify_api/rest/resources/2022_07/customer.rb +7 -3
  123. data/lib/shopify_api/rest/resources/2022_07/customer_address.rb +17 -3
  124. data/lib/shopify_api/rest/resources/2022_07/deprecated_api_call.rb +7 -3
  125. data/lib/shopify_api/rest/resources/2022_07/discount_code.rb +7 -3
  126. data/lib/shopify_api/rest/resources/2022_07/dispute.rb +7 -3
  127. data/lib/shopify_api/rest/resources/2022_07/dispute_evidence.rb +7 -3
  128. data/lib/shopify_api/rest/resources/2022_07/dispute_file_upload.rb +7 -3
  129. data/lib/shopify_api/rest/resources/2022_07/draft_order.rb +7 -3
  130. data/lib/shopify_api/rest/resources/2022_07/event.rb +7 -3
  131. data/lib/shopify_api/rest/resources/2022_07/fulfillment.rb +7 -3
  132. data/lib/shopify_api/rest/resources/2022_07/fulfillment_event.rb +7 -3
  133. data/lib/shopify_api/rest/resources/2022_07/fulfillment_order.rb +7 -3
  134. data/lib/shopify_api/rest/resources/2022_07/fulfillment_request.rb +17 -3
  135. data/lib/shopify_api/rest/resources/2022_07/fulfillment_service.rb +7 -3
  136. data/lib/shopify_api/rest/resources/2022_07/gift_card.rb +7 -3
  137. data/lib/shopify_api/rest/resources/2022_07/gift_card_adjustment.rb +7 -3
  138. data/lib/shopify_api/rest/resources/2022_07/image.rb +7 -3
  139. data/lib/shopify_api/rest/resources/2022_07/inventory_item.rb +7 -3
  140. data/lib/shopify_api/rest/resources/2022_07/inventory_level.rb +7 -3
  141. data/lib/shopify_api/rest/resources/2022_07/location.rb +7 -3
  142. data/lib/shopify_api/rest/resources/2022_07/locations_for_move.rb +7 -3
  143. data/lib/shopify_api/rest/resources/2022_07/marketing_event.rb +7 -3
  144. data/lib/shopify_api/rest/resources/2022_07/metafield.rb +7 -3
  145. data/lib/shopify_api/rest/resources/2022_07/mobile_platform_application.rb +7 -3
  146. data/lib/shopify_api/rest/resources/2022_07/order.rb +10 -3
  147. data/lib/shopify_api/rest/resources/2022_07/order_risk.rb +12 -6
  148. data/lib/shopify_api/rest/resources/2022_07/page.rb +7 -3
  149. data/lib/shopify_api/rest/resources/2022_07/payment.rb +7 -3
  150. data/lib/shopify_api/rest/resources/2022_07/payment_gateway.rb +7 -3
  151. data/lib/shopify_api/rest/resources/2022_07/payment_transaction.rb +7 -3
  152. data/lib/shopify_api/rest/resources/2022_07/payout.rb +7 -3
  153. data/lib/shopify_api/rest/resources/2022_07/policy.rb +7 -3
  154. data/lib/shopify_api/rest/resources/2022_07/price_rule.rb +7 -3
  155. data/lib/shopify_api/rest/resources/2022_07/product.rb +7 -3
  156. data/lib/shopify_api/rest/resources/2022_07/product_listing.rb +7 -3
  157. data/lib/shopify_api/rest/resources/2022_07/product_resource_feedback.rb +7 -3
  158. data/lib/shopify_api/rest/resources/2022_07/province.rb +7 -3
  159. data/lib/shopify_api/rest/resources/2022_07/recurring_application_charge.rb +7 -3
  160. data/lib/shopify_api/rest/resources/2022_07/redirect.rb +7 -3
  161. data/lib/shopify_api/rest/resources/2022_07/refund.rb +7 -3
  162. data/lib/shopify_api/rest/resources/2022_07/report.rb +7 -3
  163. data/lib/shopify_api/rest/resources/2022_07/resource_feedback.rb +7 -3
  164. data/lib/shopify_api/rest/resources/2022_07/script_tag.rb +7 -3
  165. data/lib/shopify_api/rest/resources/2022_07/shipping_zone.rb +7 -3
  166. data/lib/shopify_api/rest/resources/2022_07/shop.rb +7 -3
  167. data/lib/shopify_api/rest/resources/2022_07/smart_collection.rb +7 -3
  168. data/lib/shopify_api/rest/resources/2022_07/storefront_access_token.rb +7 -3
  169. data/lib/shopify_api/rest/resources/2022_07/tender_transaction.rb +7 -3
  170. data/lib/shopify_api/rest/resources/2022_07/theme.rb +7 -3
  171. data/lib/shopify_api/rest/resources/2022_07/transaction.rb +7 -3
  172. data/lib/shopify_api/rest/resources/2022_07/usage_charge.rb +7 -3
  173. data/lib/shopify_api/rest/resources/2022_07/user.rb +7 -3
  174. data/lib/shopify_api/rest/resources/2022_07/variant.rb +7 -3
  175. data/lib/shopify_api/rest/resources/2022_07/webhook.rb +7 -3
  176. data/lib/shopify_api/rest/resources/2022_10/abandoned_checkout.rb +7 -3
  177. data/lib/shopify_api/rest/resources/2022_10/access_scope.rb +7 -3
  178. data/lib/shopify_api/rest/resources/2022_10/android_pay_key.rb +7 -3
  179. data/lib/shopify_api/rest/resources/2022_10/apple_pay_certificate.rb +7 -3
  180. data/lib/shopify_api/rest/resources/2022_10/application_charge.rb +7 -3
  181. data/lib/shopify_api/rest/resources/2022_10/application_credit.rb +7 -3
  182. data/lib/shopify_api/rest/resources/2022_10/article.rb +7 -3
  183. data/lib/shopify_api/rest/resources/2022_10/asset.rb +7 -3
  184. data/lib/shopify_api/rest/resources/2022_10/assigned_fulfillment_order.rb +12 -6
  185. data/lib/shopify_api/rest/resources/2022_10/balance.rb +11 -3
  186. data/lib/shopify_api/rest/resources/2022_10/blog.rb +7 -3
  187. data/lib/shopify_api/rest/resources/2022_10/cancellation_request.rb +7 -3
  188. data/lib/shopify_api/rest/resources/2022_10/carrier_service.rb +7 -3
  189. data/lib/shopify_api/rest/resources/2022_10/checkout.rb +7 -3
  190. data/lib/shopify_api/rest/resources/2022_10/collect.rb +7 -3
  191. data/lib/shopify_api/rest/resources/2022_10/collection.rb +7 -3
  192. data/lib/shopify_api/rest/resources/2022_10/collection_listing.rb +7 -3
  193. data/lib/shopify_api/rest/resources/2022_10/comment.rb +7 -3
  194. data/lib/shopify_api/rest/resources/2022_10/country.rb +7 -3
  195. data/lib/shopify_api/rest/resources/2022_10/currency.rb +7 -3
  196. data/lib/shopify_api/rest/resources/2022_10/custom_collection.rb +7 -3
  197. data/lib/shopify_api/rest/resources/2022_10/customer.rb +7 -3
  198. data/lib/shopify_api/rest/resources/2022_10/customer_address.rb +17 -3
  199. data/lib/shopify_api/rest/resources/2022_10/deprecated_api_call.rb +7 -3
  200. data/lib/shopify_api/rest/resources/2022_10/discount_code.rb +7 -3
  201. data/lib/shopify_api/rest/resources/2022_10/dispute.rb +7 -3
  202. data/lib/shopify_api/rest/resources/2022_10/dispute_evidence.rb +7 -3
  203. data/lib/shopify_api/rest/resources/2022_10/dispute_file_upload.rb +7 -3
  204. data/lib/shopify_api/rest/resources/2022_10/draft_order.rb +7 -3
  205. data/lib/shopify_api/rest/resources/2022_10/event.rb +7 -3
  206. data/lib/shopify_api/rest/resources/2022_10/fulfillment.rb +7 -3
  207. data/lib/shopify_api/rest/resources/2022_10/fulfillment_event.rb +7 -3
  208. data/lib/shopify_api/rest/resources/2022_10/fulfillment_order.rb +7 -3
  209. data/lib/shopify_api/rest/resources/2022_10/fulfillment_request.rb +17 -3
  210. data/lib/shopify_api/rest/resources/2022_10/fulfillment_service.rb +7 -3
  211. data/lib/shopify_api/rest/resources/2022_10/gift_card.rb +7 -3
  212. data/lib/shopify_api/rest/resources/2022_10/gift_card_adjustment.rb +7 -3
  213. data/lib/shopify_api/rest/resources/2022_10/image.rb +7 -3
  214. data/lib/shopify_api/rest/resources/2022_10/inventory_item.rb +7 -3
  215. data/lib/shopify_api/rest/resources/2022_10/inventory_level.rb +7 -3
  216. data/lib/shopify_api/rest/resources/2022_10/location.rb +7 -3
  217. data/lib/shopify_api/rest/resources/2022_10/locations_for_move.rb +7 -3
  218. data/lib/shopify_api/rest/resources/2022_10/marketing_event.rb +7 -3
  219. data/lib/shopify_api/rest/resources/2022_10/metafield.rb +7 -3
  220. data/lib/shopify_api/rest/resources/2022_10/mobile_platform_application.rb +7 -3
  221. data/lib/shopify_api/rest/resources/2022_10/order.rb +10 -3
  222. data/lib/shopify_api/rest/resources/2022_10/order_risk.rb +12 -6
  223. data/lib/shopify_api/rest/resources/2022_10/page.rb +7 -3
  224. data/lib/shopify_api/rest/resources/2022_10/payment.rb +7 -3
  225. data/lib/shopify_api/rest/resources/2022_10/payment_gateway.rb +7 -3
  226. data/lib/shopify_api/rest/resources/2022_10/payment_transaction.rb +7 -3
  227. data/lib/shopify_api/rest/resources/2022_10/payout.rb +7 -3
  228. data/lib/shopify_api/rest/resources/2022_10/policy.rb +7 -3
  229. data/lib/shopify_api/rest/resources/2022_10/price_rule.rb +7 -3
  230. data/lib/shopify_api/rest/resources/2022_10/product.rb +7 -3
  231. data/lib/shopify_api/rest/resources/2022_10/product_listing.rb +7 -3
  232. data/lib/shopify_api/rest/resources/2022_10/product_resource_feedback.rb +7 -3
  233. data/lib/shopify_api/rest/resources/2022_10/province.rb +7 -3
  234. data/lib/shopify_api/rest/resources/2022_10/recurring_application_charge.rb +7 -3
  235. data/lib/shopify_api/rest/resources/2022_10/redirect.rb +7 -3
  236. data/lib/shopify_api/rest/resources/2022_10/refund.rb +7 -3
  237. data/lib/shopify_api/rest/resources/2022_10/report.rb +7 -3
  238. data/lib/shopify_api/rest/resources/2022_10/resource_feedback.rb +7 -3
  239. data/lib/shopify_api/rest/resources/2022_10/script_tag.rb +7 -3
  240. data/lib/shopify_api/rest/resources/2022_10/shipping_zone.rb +7 -3
  241. data/lib/shopify_api/rest/resources/2022_10/shop.rb +7 -6
  242. data/lib/shopify_api/rest/resources/2022_10/smart_collection.rb +7 -3
  243. data/lib/shopify_api/rest/resources/2022_10/storefront_access_token.rb +7 -3
  244. data/lib/shopify_api/rest/resources/2022_10/tender_transaction.rb +7 -3
  245. data/lib/shopify_api/rest/resources/2022_10/theme.rb +7 -3
  246. data/lib/shopify_api/rest/resources/2022_10/transaction.rb +7 -3
  247. data/lib/shopify_api/rest/resources/2022_10/usage_charge.rb +7 -3
  248. data/lib/shopify_api/rest/resources/2022_10/user.rb +7 -3
  249. data/lib/shopify_api/rest/resources/2022_10/variant.rb +8 -8
  250. data/lib/shopify_api/rest/resources/2022_10/webhook.rb +7 -3
  251. data/lib/shopify_api/rest/resources/2023_01/abandoned_checkout.rb +7 -3
  252. data/lib/shopify_api/rest/resources/2023_01/access_scope.rb +7 -3
  253. data/lib/shopify_api/rest/resources/2023_01/apple_pay_certificate.rb +7 -3
  254. data/lib/shopify_api/rest/resources/2023_01/application_charge.rb +7 -3
  255. data/lib/shopify_api/rest/resources/2023_01/application_credit.rb +7 -3
  256. data/lib/shopify_api/rest/resources/2023_01/article.rb +7 -3
  257. data/lib/shopify_api/rest/resources/2023_01/asset.rb +7 -3
  258. data/lib/shopify_api/rest/resources/2023_01/assigned_fulfillment_order.rb +12 -6
  259. data/lib/shopify_api/rest/resources/2023_01/balance.rb +11 -3
  260. data/lib/shopify_api/rest/resources/2023_01/blog.rb +7 -3
  261. data/lib/shopify_api/rest/resources/2023_01/cancellation_request.rb +7 -3
  262. data/lib/shopify_api/rest/resources/2023_01/carrier_service.rb +7 -3
  263. data/lib/shopify_api/rest/resources/2023_01/checkout.rb +7 -3
  264. data/lib/shopify_api/rest/resources/2023_01/collect.rb +7 -3
  265. data/lib/shopify_api/rest/resources/2023_01/collection.rb +7 -3
  266. data/lib/shopify_api/rest/resources/2023_01/collection_listing.rb +7 -3
  267. data/lib/shopify_api/rest/resources/2023_01/comment.rb +7 -3
  268. data/lib/shopify_api/rest/resources/2023_01/country.rb +7 -3
  269. data/lib/shopify_api/rest/resources/2023_01/currency.rb +7 -3
  270. data/lib/shopify_api/rest/resources/2023_01/custom_collection.rb +7 -3
  271. data/lib/shopify_api/rest/resources/2023_01/customer.rb +7 -3
  272. data/lib/shopify_api/rest/resources/2023_01/customer_address.rb +17 -3
  273. data/lib/shopify_api/rest/resources/2023_01/customer_saved_search.rb +7 -3
  274. data/lib/shopify_api/rest/resources/2023_01/deprecated_api_call.rb +7 -3
  275. data/lib/shopify_api/rest/resources/2023_01/discount_code.rb +7 -3
  276. data/lib/shopify_api/rest/resources/2023_01/dispute.rb +7 -3
  277. data/lib/shopify_api/rest/resources/2023_01/dispute_evidence.rb +7 -3
  278. data/lib/shopify_api/rest/resources/2023_01/dispute_file_upload.rb +7 -3
  279. data/lib/shopify_api/rest/resources/2023_01/draft_order.rb +7 -3
  280. data/lib/shopify_api/rest/resources/2023_01/event.rb +7 -3
  281. data/lib/shopify_api/rest/resources/2023_01/fulfillment.rb +7 -3
  282. data/lib/shopify_api/rest/resources/2023_01/fulfillment_event.rb +7 -3
  283. data/lib/shopify_api/rest/resources/2023_01/fulfillment_order.rb +12 -6
  284. data/lib/shopify_api/rest/resources/2023_01/fulfillment_request.rb +17 -3
  285. data/lib/shopify_api/rest/resources/2023_01/fulfillment_service.rb +7 -3
  286. data/lib/shopify_api/rest/resources/2023_01/gift_card.rb +7 -3
  287. data/lib/shopify_api/rest/resources/2023_01/gift_card_adjustment.rb +7 -3
  288. data/lib/shopify_api/rest/resources/2023_01/image.rb +7 -3
  289. data/lib/shopify_api/rest/resources/2023_01/inventory_item.rb +7 -3
  290. data/lib/shopify_api/rest/resources/2023_01/inventory_level.rb +7 -3
  291. data/lib/shopify_api/rest/resources/2023_01/location.rb +7 -3
  292. data/lib/shopify_api/rest/resources/2023_01/locations_for_move.rb +7 -3
  293. data/lib/shopify_api/rest/resources/2023_01/marketing_event.rb +7 -3
  294. data/lib/shopify_api/rest/resources/2023_01/metafield.rb +7 -3
  295. data/lib/shopify_api/rest/resources/2023_01/mobile_platform_application.rb +7 -3
  296. data/lib/shopify_api/rest/resources/2023_01/order.rb +10 -3
  297. data/lib/shopify_api/rest/resources/2023_01/order_risk.rb +12 -6
  298. data/lib/shopify_api/rest/resources/2023_01/page.rb +7 -3
  299. data/lib/shopify_api/rest/resources/2023_01/payment.rb +7 -3
  300. data/lib/shopify_api/rest/resources/2023_01/payment_gateway.rb +7 -3
  301. data/lib/shopify_api/rest/resources/2023_01/payment_transaction.rb +12 -5
  302. data/lib/shopify_api/rest/resources/2023_01/payout.rb +7 -3
  303. data/lib/shopify_api/rest/resources/2023_01/policy.rb +7 -3
  304. data/lib/shopify_api/rest/resources/2023_01/price_rule.rb +7 -3
  305. data/lib/shopify_api/rest/resources/2023_01/product.rb +7 -3
  306. data/lib/shopify_api/rest/resources/2023_01/product_listing.rb +7 -3
  307. data/lib/shopify_api/rest/resources/2023_01/product_resource_feedback.rb +7 -3
  308. data/lib/shopify_api/rest/resources/2023_01/province.rb +7 -3
  309. data/lib/shopify_api/rest/resources/2023_01/recurring_application_charge.rb +7 -3
  310. data/lib/shopify_api/rest/resources/2023_01/redirect.rb +7 -3
  311. data/lib/shopify_api/rest/resources/2023_01/refund.rb +7 -3
  312. data/lib/shopify_api/rest/resources/2023_01/report.rb +7 -3
  313. data/lib/shopify_api/rest/resources/2023_01/resource_feedback.rb +7 -3
  314. data/lib/shopify_api/rest/resources/2023_01/script_tag.rb +7 -3
  315. data/lib/shopify_api/rest/resources/2023_01/shipping_zone.rb +7 -3
  316. data/lib/shopify_api/rest/resources/2023_01/shop.rb +7 -6
  317. data/lib/shopify_api/rest/resources/2023_01/smart_collection.rb +7 -3
  318. data/lib/shopify_api/rest/resources/2023_01/storefront_access_token.rb +7 -3
  319. data/lib/shopify_api/rest/resources/2023_01/tender_transaction.rb +7 -3
  320. data/lib/shopify_api/rest/resources/2023_01/theme.rb +7 -3
  321. data/lib/shopify_api/rest/resources/2023_01/transaction.rb +7 -3
  322. data/lib/shopify_api/rest/resources/2023_01/usage_charge.rb +7 -3
  323. data/lib/shopify_api/rest/resources/2023_01/user.rb +7 -3
  324. data/lib/shopify_api/rest/resources/2023_01/variant.rb +8 -8
  325. data/lib/shopify_api/rest/resources/2023_01/webhook.rb +7 -3
  326. data/lib/shopify_api/rest/resources/2023_04/abandoned_checkout.rb +7 -3
  327. data/lib/shopify_api/rest/resources/2023_04/access_scope.rb +7 -3
  328. data/lib/shopify_api/rest/resources/2023_04/apple_pay_certificate.rb +7 -3
  329. data/lib/shopify_api/rest/resources/2023_04/application_charge.rb +7 -3
  330. data/lib/shopify_api/rest/resources/2023_04/application_credit.rb +7 -3
  331. data/lib/shopify_api/rest/resources/2023_04/article.rb +7 -3
  332. data/lib/shopify_api/rest/resources/2023_04/asset.rb +7 -3
  333. data/lib/shopify_api/rest/resources/2023_04/assigned_fulfillment_order.rb +12 -6
  334. data/lib/shopify_api/rest/resources/2023_04/balance.rb +11 -3
  335. data/lib/shopify_api/rest/resources/2023_04/blog.rb +7 -3
  336. data/lib/shopify_api/rest/resources/2023_04/cancellation_request.rb +7 -3
  337. data/lib/shopify_api/rest/resources/2023_04/carrier_service.rb +7 -3
  338. data/lib/shopify_api/rest/resources/2023_04/checkout.rb +7 -3
  339. data/lib/shopify_api/rest/resources/2023_04/collect.rb +7 -3
  340. data/lib/shopify_api/rest/resources/2023_04/collection.rb +7 -3
  341. data/lib/shopify_api/rest/resources/2023_04/collection_listing.rb +7 -3
  342. data/lib/shopify_api/rest/resources/2023_04/comment.rb +7 -3
  343. data/lib/shopify_api/rest/resources/2023_04/country.rb +7 -3
  344. data/lib/shopify_api/rest/resources/2023_04/currency.rb +7 -3
  345. data/lib/shopify_api/rest/resources/2023_04/custom_collection.rb +7 -3
  346. data/lib/shopify_api/rest/resources/2023_04/customer.rb +7 -3
  347. data/lib/shopify_api/rest/resources/2023_04/customer_address.rb +17 -3
  348. data/lib/shopify_api/rest/resources/2023_04/customer_saved_search.rb +7 -3
  349. data/lib/shopify_api/rest/resources/2023_04/deprecated_api_call.rb +7 -3
  350. data/lib/shopify_api/rest/resources/2023_04/discount_code.rb +7 -3
  351. data/lib/shopify_api/rest/resources/2023_04/dispute.rb +7 -3
  352. data/lib/shopify_api/rest/resources/2023_04/dispute_evidence.rb +7 -3
  353. data/lib/shopify_api/rest/resources/2023_04/dispute_file_upload.rb +7 -3
  354. data/lib/shopify_api/rest/resources/2023_04/draft_order.rb +7 -3
  355. data/lib/shopify_api/rest/resources/2023_04/event.rb +7 -3
  356. data/lib/shopify_api/rest/resources/2023_04/fulfillment.rb +7 -3
  357. data/lib/shopify_api/rest/resources/2023_04/fulfillment_event.rb +7 -3
  358. data/lib/shopify_api/rest/resources/2023_04/fulfillment_order.rb +12 -6
  359. data/lib/shopify_api/rest/resources/2023_04/fulfillment_request.rb +17 -3
  360. data/lib/shopify_api/rest/resources/2023_04/fulfillment_service.rb +7 -3
  361. data/lib/shopify_api/rest/resources/2023_04/gift_card.rb +7 -3
  362. data/lib/shopify_api/rest/resources/2023_04/gift_card_adjustment.rb +7 -3
  363. data/lib/shopify_api/rest/resources/2023_04/image.rb +7 -3
  364. data/lib/shopify_api/rest/resources/2023_04/inventory_item.rb +7 -3
  365. data/lib/shopify_api/rest/resources/2023_04/inventory_level.rb +7 -3
  366. data/lib/shopify_api/rest/resources/2023_04/location.rb +7 -3
  367. data/lib/shopify_api/rest/resources/2023_04/locations_for_move.rb +7 -3
  368. data/lib/shopify_api/rest/resources/2023_04/marketing_event.rb +7 -3
  369. data/lib/shopify_api/rest/resources/2023_04/metafield.rb +7 -3
  370. data/lib/shopify_api/rest/resources/2023_04/mobile_platform_application.rb +7 -3
  371. data/lib/shopify_api/rest/resources/2023_04/order.rb +10 -9
  372. data/lib/shopify_api/rest/resources/2023_04/order_risk.rb +12 -6
  373. data/lib/shopify_api/rest/resources/2023_04/page.rb +7 -3
  374. data/lib/shopify_api/rest/resources/2023_04/payment.rb +7 -3
  375. data/lib/shopify_api/rest/resources/2023_04/payment_gateway.rb +7 -3
  376. data/lib/shopify_api/rest/resources/2023_04/payment_transaction.rb +12 -5
  377. data/lib/shopify_api/rest/resources/2023_04/payout.rb +7 -3
  378. data/lib/shopify_api/rest/resources/2023_04/policy.rb +7 -3
  379. data/lib/shopify_api/rest/resources/2023_04/price_rule.rb +7 -3
  380. data/lib/shopify_api/rest/resources/2023_04/product.rb +7 -3
  381. data/lib/shopify_api/rest/resources/2023_04/product_listing.rb +7 -3
  382. data/lib/shopify_api/rest/resources/2023_04/product_resource_feedback.rb +7 -3
  383. data/lib/shopify_api/rest/resources/2023_04/province.rb +7 -3
  384. data/lib/shopify_api/rest/resources/2023_04/recurring_application_charge.rb +7 -3
  385. data/lib/shopify_api/rest/resources/2023_04/redirect.rb +7 -3
  386. data/lib/shopify_api/rest/resources/2023_04/refund.rb +7 -3
  387. data/lib/shopify_api/rest/resources/2023_04/report.rb +7 -3
  388. data/lib/shopify_api/rest/resources/2023_04/resource_feedback.rb +7 -3
  389. data/lib/shopify_api/rest/resources/2023_04/script_tag.rb +7 -3
  390. data/lib/shopify_api/rest/resources/2023_04/shipping_zone.rb +7 -3
  391. data/lib/shopify_api/rest/resources/2023_04/shop.rb +7 -6
  392. data/lib/shopify_api/rest/resources/2023_04/smart_collection.rb +7 -3
  393. data/lib/shopify_api/rest/resources/2023_04/storefront_access_token.rb +7 -3
  394. data/lib/shopify_api/rest/resources/2023_04/tender_transaction.rb +7 -3
  395. data/lib/shopify_api/rest/resources/2023_04/theme.rb +7 -3
  396. data/lib/shopify_api/rest/resources/2023_04/transaction.rb +7 -3
  397. data/lib/shopify_api/rest/resources/2023_04/usage_charge.rb +7 -3
  398. data/lib/shopify_api/rest/resources/2023_04/user.rb +7 -3
  399. data/lib/shopify_api/rest/resources/2023_04/variant.rb +8 -8
  400. data/lib/shopify_api/rest/resources/2023_04/webhook.rb +7 -3
  401. data/lib/shopify_api/rest/resources/2023_07/abandoned_checkout.rb +7 -3
  402. data/lib/shopify_api/rest/resources/2023_07/access_scope.rb +7 -3
  403. data/lib/shopify_api/rest/resources/2023_07/apple_pay_certificate.rb +7 -3
  404. data/lib/shopify_api/rest/resources/2023_07/application_charge.rb +7 -3
  405. data/lib/shopify_api/rest/resources/2023_07/application_credit.rb +7 -3
  406. data/lib/shopify_api/rest/resources/2023_07/article.rb +7 -3
  407. data/lib/shopify_api/rest/resources/2023_07/asset.rb +7 -3
  408. data/lib/shopify_api/rest/resources/2023_07/assigned_fulfillment_order.rb +12 -6
  409. data/lib/shopify_api/rest/resources/2023_07/balance.rb +11 -3
  410. data/lib/shopify_api/rest/resources/2023_07/blog.rb +7 -3
  411. data/lib/shopify_api/rest/resources/2023_07/cancellation_request.rb +7 -3
  412. data/lib/shopify_api/rest/resources/2023_07/carrier_service.rb +7 -3
  413. data/lib/shopify_api/rest/resources/2023_07/checkout.rb +7 -3
  414. data/lib/shopify_api/rest/resources/2023_07/collect.rb +7 -3
  415. data/lib/shopify_api/rest/resources/2023_07/collection.rb +7 -3
  416. data/lib/shopify_api/rest/resources/2023_07/collection_listing.rb +7 -3
  417. data/lib/shopify_api/rest/resources/2023_07/comment.rb +7 -3
  418. data/lib/shopify_api/rest/resources/2023_07/country.rb +7 -3
  419. data/lib/shopify_api/rest/resources/2023_07/currency.rb +7 -3
  420. data/lib/shopify_api/rest/resources/2023_07/custom_collection.rb +7 -3
  421. data/lib/shopify_api/rest/resources/2023_07/customer.rb +7 -3
  422. data/lib/shopify_api/rest/resources/2023_07/customer_address.rb +17 -3
  423. data/lib/shopify_api/rest/resources/2023_07/customer_saved_search.rb +7 -3
  424. data/lib/shopify_api/rest/resources/2023_07/deprecated_api_call.rb +7 -3
  425. data/lib/shopify_api/rest/resources/2023_07/discount_code.rb +7 -3
  426. data/lib/shopify_api/rest/resources/2023_07/dispute.rb +7 -3
  427. data/lib/shopify_api/rest/resources/2023_07/dispute_evidence.rb +7 -3
  428. data/lib/shopify_api/rest/resources/2023_07/dispute_file_upload.rb +7 -3
  429. data/lib/shopify_api/rest/resources/2023_07/draft_order.rb +7 -3
  430. data/lib/shopify_api/rest/resources/2023_07/event.rb +7 -3
  431. data/lib/shopify_api/rest/resources/2023_07/fulfillment.rb +7 -3
  432. data/lib/shopify_api/rest/resources/2023_07/fulfillment_event.rb +7 -3
  433. data/lib/shopify_api/rest/resources/2023_07/fulfillment_order.rb +12 -6
  434. data/lib/shopify_api/rest/resources/2023_07/fulfillment_request.rb +17 -3
  435. data/lib/shopify_api/rest/resources/2023_07/fulfillment_service.rb +7 -3
  436. data/lib/shopify_api/rest/resources/2023_07/gift_card.rb +7 -3
  437. data/lib/shopify_api/rest/resources/2023_07/gift_card_adjustment.rb +7 -3
  438. data/lib/shopify_api/rest/resources/2023_07/image.rb +7 -3
  439. data/lib/shopify_api/rest/resources/2023_07/inventory_item.rb +7 -3
  440. data/lib/shopify_api/rest/resources/2023_07/inventory_level.rb +7 -3
  441. data/lib/shopify_api/rest/resources/2023_07/location.rb +7 -3
  442. data/lib/shopify_api/rest/resources/2023_07/locations_for_move.rb +7 -3
  443. data/lib/shopify_api/rest/resources/2023_07/marketing_event.rb +7 -3
  444. data/lib/shopify_api/rest/resources/2023_07/metafield.rb +7 -3
  445. data/lib/shopify_api/rest/resources/2023_07/mobile_platform_application.rb +7 -3
  446. data/lib/shopify_api/rest/resources/2023_07/order.rb +10 -9
  447. data/lib/shopify_api/rest/resources/2023_07/order_risk.rb +12 -6
  448. data/lib/shopify_api/rest/resources/2023_07/page.rb +7 -3
  449. data/lib/shopify_api/rest/resources/2023_07/payment.rb +7 -3
  450. data/lib/shopify_api/rest/resources/2023_07/payment_gateway.rb +7 -3
  451. data/lib/shopify_api/rest/resources/2023_07/payment_transaction.rb +12 -5
  452. data/lib/shopify_api/rest/resources/2023_07/payout.rb +7 -3
  453. data/lib/shopify_api/rest/resources/2023_07/policy.rb +7 -3
  454. data/lib/shopify_api/rest/resources/2023_07/price_rule.rb +7 -3
  455. data/lib/shopify_api/rest/resources/2023_07/product.rb +7 -3
  456. data/lib/shopify_api/rest/resources/2023_07/product_listing.rb +7 -3
  457. data/lib/shopify_api/rest/resources/2023_07/product_resource_feedback.rb +7 -3
  458. data/lib/shopify_api/rest/resources/2023_07/province.rb +7 -3
  459. data/lib/shopify_api/rest/resources/2023_07/recurring_application_charge.rb +7 -3
  460. data/lib/shopify_api/rest/resources/2023_07/redirect.rb +7 -3
  461. data/lib/shopify_api/rest/resources/2023_07/refund.rb +7 -3
  462. data/lib/shopify_api/rest/resources/2023_07/report.rb +125 -0
  463. data/lib/shopify_api/rest/resources/2023_07/resource_feedback.rb +7 -3
  464. data/lib/shopify_api/rest/resources/2023_07/script_tag.rb +7 -3
  465. data/lib/shopify_api/rest/resources/2023_07/shipping_zone.rb +7 -3
  466. data/lib/shopify_api/rest/resources/2023_07/shop.rb +7 -6
  467. data/lib/shopify_api/rest/resources/2023_07/smart_collection.rb +7 -3
  468. data/lib/shopify_api/rest/resources/2023_07/storefront_access_token.rb +7 -3
  469. data/lib/shopify_api/rest/resources/2023_07/tender_transaction.rb +7 -3
  470. data/lib/shopify_api/rest/resources/2023_07/theme.rb +7 -3
  471. data/lib/shopify_api/rest/resources/2023_07/transaction.rb +7 -3
  472. data/lib/shopify_api/rest/resources/2023_07/usage_charge.rb +7 -3
  473. data/lib/shopify_api/rest/resources/2023_07/user.rb +7 -3
  474. data/lib/shopify_api/rest/resources/2023_07/variant.rb +8 -8
  475. data/lib/shopify_api/rest/resources/2023_07/webhook.rb +7 -3
  476. data/lib/shopify_api/rest/resources/2023_10/abandoned_checkout.rb +194 -0
  477. data/lib/shopify_api/rest/resources/2023_10/access_scope.rb +62 -0
  478. data/lib/shopify_api/rest/resources/2023_10/apple_pay_certificate.rb +109 -0
  479. data/lib/shopify_api/rest/resources/2023_10/application_charge.rb +113 -0
  480. data/lib/shopify_api/rest/resources/2023_10/application_credit.rb +95 -0
  481. data/lib/shopify_api/rest/resources/2023_10/article.rb +269 -0
  482. data/lib/shopify_api/rest/resources/2023_10/asset.rb +122 -0
  483. data/lib/shopify_api/rest/resources/2023_10/assigned_fulfillment_order.rb +92 -0
  484. data/lib/shopify_api/rest/resources/2023_10/balance.rb +58 -0
  485. data/lib/shopify_api/rest/resources/2023_10/blog.rb +166 -0
  486. data/lib/shopify_api/rest/resources/2023_10/cancellation_request.rb +87 -0
  487. data/lib/shopify_api/rest/resources/2023_10/carrier_service.rb +120 -0
  488. data/lib/shopify_api/rest/resources/2023_10/checkout.rb +213 -0
  489. data/lib/shopify_api/rest/resources/{2022_10/customer_saved_search.rb → 2023_10/collect.rb} +29 -52
  490. data/lib/shopify_api/rest/resources/2023_10/collection.rb +114 -0
  491. data/lib/shopify_api/rest/resources/2023_10/collection_listing.rb +159 -0
  492. data/lib/shopify_api/rest/resources/2023_10/comment.rb +287 -0
  493. data/lib/shopify_api/rest/resources/2023_10/country.rb +141 -0
  494. data/lib/shopify_api/rest/resources/2023_10/currency.rb +61 -0
  495. data/lib/shopify_api/rest/resources/2023_10/custom_collection.rb +191 -0
  496. data/lib/shopify_api/rest/resources/2023_10/customer.rb +333 -0
  497. data/lib/shopify_api/rest/resources/2023_10/customer_address.rb +215 -0
  498. data/lib/shopify_api/rest/resources/2023_10/deprecated_api_call.rb +61 -0
  499. data/lib/shopify_api/rest/resources/2023_10/discount_code.rb +226 -0
  500. data/lib/shopify_api/rest/resources/2023_10/dispute.rb +115 -0
  501. data/lib/shopify_api/rest/resources/2023_10/dispute_evidence.rb +121 -0
  502. data/lib/shopify_api/rest/resources/2023_10/dispute_file_upload.rb +85 -0
  503. data/lib/shopify_api/rest/resources/2023_10/draft_order.rb +279 -0
  504. data/lib/shopify_api/rest/resources/2023_10/event.rb +152 -0
  505. data/lib/shopify_api/rest/resources/2023_10/fulfillment.rb +235 -0
  506. data/lib/shopify_api/rest/resources/2023_10/fulfillment_event.rb +170 -0
  507. data/lib/shopify_api/rest/resources/2023_10/fulfillment_order.rb +318 -0
  508. data/lib/shopify_api/rest/resources/2023_10/fulfillment_request.rb +101 -0
  509. data/lib/shopify_api/rest/resources/2023_10/fulfillment_service.rb +134 -0
  510. data/lib/shopify_api/rest/resources/2023_10/gift_card.rb +222 -0
  511. data/lib/shopify_api/rest/resources/2023_10/gift_card_adjustment.rb +122 -0
  512. data/lib/shopify_api/rest/resources/2023_10/image.rb +161 -0
  513. data/lib/shopify_api/rest/resources/2023_10/inventory_item.rb +112 -0
  514. data/lib/shopify_api/rest/resources/2023_10/inventory_level.rb +183 -0
  515. data/lib/shopify_api/rest/resources/2023_10/location.rb +171 -0
  516. data/lib/shopify_api/rest/resources/2023_10/locations_for_move.rb +60 -0
  517. data/lib/shopify_api/rest/resources/2023_10/marketing_event.rb +213 -0
  518. data/lib/shopify_api/rest/resources/2023_10/metafield.rb +348 -0
  519. data/lib/shopify_api/rest/resources/2023_10/mobile_platform_application.rb +114 -0
  520. data/lib/shopify_api/rest/resources/2023_10/order.rb +489 -0
  521. data/lib/shopify_api/rest/resources/2023_10/order_risk.rb +148 -0
  522. data/lib/shopify_api/rest/resources/2023_10/page.rb +198 -0
  523. data/lib/shopify_api/rest/resources/2023_10/payment.rb +144 -0
  524. data/lib/shopify_api/rest/resources/2023_10/payment_gateway.rb +147 -0
  525. data/lib/shopify_api/rest/resources/2023_10/payment_transaction.rb +114 -0
  526. data/lib/shopify_api/rest/resources/2023_10/payout.rb +101 -0
  527. data/lib/shopify_api/rest/resources/2023_10/policy.rb +73 -0
  528. data/lib/shopify_api/rest/resources/2023_10/price_rule.rb +227 -0
  529. data/lib/shopify_api/rest/resources/2023_10/product.rb +227 -0
  530. data/lib/shopify_api/rest/resources/2023_10/product_listing.rb +200 -0
  531. data/lib/shopify_api/rest/resources/2023_10/product_resource_feedback.rb +92 -0
  532. data/lib/shopify_api/rest/resources/2023_10/province.rb +136 -0
  533. data/lib/shopify_api/rest/resources/2023_10/recurring_application_charge.rb +176 -0
  534. data/lib/shopify_api/rest/resources/2023_10/redirect.rb +143 -0
  535. data/lib/shopify_api/rest/resources/2023_10/refund.rb +155 -0
  536. data/lib/shopify_api/rest/resources/2023_10/report.rb +125 -0
  537. data/lib/shopify_api/rest/resources/2023_10/resource_feedback.rb +77 -0
  538. data/lib/shopify_api/rest/resources/2023_10/script_tag.rb +159 -0
  539. data/lib/shopify_api/rest/resources/2023_10/shipping_zone.rb +87 -0
  540. data/lib/shopify_api/rest/resources/2023_10/shop.rb +222 -0
  541. data/lib/shopify_api/rest/resources/2023_10/smart_collection.rb +220 -0
  542. data/lib/shopify_api/rest/resources/2023_10/storefront_access_token.rb +91 -0
  543. data/lib/shopify_api/rest/resources/2023_10/tender_transaction.rb +97 -0
  544. data/lib/shopify_api/rest/resources/2023_10/theme.rb +127 -0
  545. data/lib/shopify_api/rest/resources/2023_10/transaction.rb +188 -0
  546. data/lib/shopify_api/rest/resources/2023_10/usage_charge.rb +106 -0
  547. data/lib/shopify_api/rest/resources/2023_10/user.rb +142 -0
  548. data/lib/shopify_api/rest/resources/2023_10/variant.rb +212 -0
  549. data/lib/shopify_api/rest/resources/2023_10/webhook.rb +172 -0
  550. data/lib/shopify_api/rest/resources/2024_01/abandoned_checkout.rb +194 -0
  551. data/lib/shopify_api/rest/resources/2024_01/access_scope.rb +62 -0
  552. data/lib/shopify_api/rest/resources/2024_01/apple_pay_certificate.rb +109 -0
  553. data/lib/shopify_api/rest/resources/2024_01/application_charge.rb +113 -0
  554. data/lib/shopify_api/rest/resources/2024_01/application_credit.rb +95 -0
  555. data/lib/shopify_api/rest/resources/2024_01/article.rb +269 -0
  556. data/lib/shopify_api/rest/resources/2024_01/asset.rb +122 -0
  557. data/lib/shopify_api/rest/resources/2024_01/assigned_fulfillment_order.rb +92 -0
  558. data/lib/shopify_api/rest/resources/2024_01/balance.rb +58 -0
  559. data/lib/shopify_api/rest/resources/2024_01/blog.rb +166 -0
  560. data/lib/shopify_api/rest/resources/2024_01/cancellation_request.rb +87 -0
  561. data/lib/shopify_api/rest/resources/2024_01/carrier_service.rb +120 -0
  562. data/lib/shopify_api/rest/resources/2024_01/checkout.rb +213 -0
  563. data/lib/shopify_api/rest/resources/{2022_07/customer_saved_search.rb → 2024_01/collect.rb} +29 -52
  564. data/lib/shopify_api/rest/resources/2024_01/collection.rb +114 -0
  565. data/lib/shopify_api/rest/resources/2024_01/collection_listing.rb +159 -0
  566. data/lib/shopify_api/rest/resources/2024_01/comment.rb +287 -0
  567. data/lib/shopify_api/rest/resources/2024_01/country.rb +141 -0
  568. data/lib/shopify_api/rest/resources/2024_01/currency.rb +61 -0
  569. data/lib/shopify_api/rest/resources/2024_01/custom_collection.rb +191 -0
  570. data/lib/shopify_api/rest/resources/2024_01/customer.rb +333 -0
  571. data/lib/shopify_api/rest/resources/2024_01/customer_address.rb +215 -0
  572. data/lib/shopify_api/rest/resources/2024_01/deprecated_api_call.rb +61 -0
  573. data/lib/shopify_api/rest/resources/2024_01/discount_code.rb +226 -0
  574. data/lib/shopify_api/rest/resources/2024_01/dispute.rb +115 -0
  575. data/lib/shopify_api/rest/resources/2024_01/dispute_evidence.rb +121 -0
  576. data/lib/shopify_api/rest/resources/2024_01/dispute_file_upload.rb +85 -0
  577. data/lib/shopify_api/rest/resources/2024_01/draft_order.rb +279 -0
  578. data/lib/shopify_api/rest/resources/2024_01/event.rb +152 -0
  579. data/lib/shopify_api/rest/resources/2024_01/fulfillment.rb +235 -0
  580. data/lib/shopify_api/rest/resources/2024_01/fulfillment_event.rb +170 -0
  581. data/lib/shopify_api/rest/resources/2024_01/fulfillment_order.rb +326 -0
  582. data/lib/shopify_api/rest/resources/2024_01/fulfillment_request.rb +101 -0
  583. data/lib/shopify_api/rest/resources/2024_01/fulfillment_service.rb +134 -0
  584. data/lib/shopify_api/rest/resources/2024_01/gift_card.rb +222 -0
  585. data/lib/shopify_api/rest/resources/2024_01/gift_card_adjustment.rb +122 -0
  586. data/lib/shopify_api/rest/resources/2024_01/image.rb +161 -0
  587. data/lib/shopify_api/rest/resources/2024_01/inventory_item.rb +112 -0
  588. data/lib/shopify_api/rest/resources/2024_01/inventory_level.rb +183 -0
  589. data/lib/shopify_api/rest/resources/2024_01/location.rb +171 -0
  590. data/lib/shopify_api/rest/resources/2024_01/locations_for_move.rb +60 -0
  591. data/lib/shopify_api/rest/resources/2024_01/marketing_event.rb +213 -0
  592. data/lib/shopify_api/rest/resources/2024_01/metafield.rb +348 -0
  593. data/lib/shopify_api/rest/resources/2024_01/mobile_platform_application.rb +114 -0
  594. data/lib/shopify_api/rest/resources/2024_01/order.rb +489 -0
  595. data/lib/shopify_api/rest/resources/2024_01/order_risk.rb +148 -0
  596. data/lib/shopify_api/rest/resources/2024_01/page.rb +198 -0
  597. data/lib/shopify_api/rest/resources/2024_01/payment.rb +144 -0
  598. data/lib/shopify_api/rest/resources/2024_01/payment_gateway.rb +147 -0
  599. data/lib/shopify_api/rest/resources/2024_01/payment_transaction.rb +114 -0
  600. data/lib/shopify_api/rest/resources/2024_01/payout.rb +101 -0
  601. data/lib/shopify_api/rest/resources/2024_01/policy.rb +73 -0
  602. data/lib/shopify_api/rest/resources/2024_01/price_rule.rb +227 -0
  603. data/lib/shopify_api/rest/resources/2024_01/product.rb +227 -0
  604. data/lib/shopify_api/rest/resources/2024_01/product_listing.rb +200 -0
  605. data/lib/shopify_api/rest/resources/2024_01/product_resource_feedback.rb +92 -0
  606. data/lib/shopify_api/rest/resources/2024_01/province.rb +136 -0
  607. data/lib/shopify_api/rest/resources/2024_01/recurring_application_charge.rb +176 -0
  608. data/lib/shopify_api/rest/resources/2024_01/redirect.rb +143 -0
  609. data/lib/shopify_api/rest/resources/2024_01/refund.rb +155 -0
  610. data/lib/shopify_api/rest/resources/2024_01/report.rb +125 -0
  611. data/lib/shopify_api/rest/resources/2024_01/resource_feedback.rb +77 -0
  612. data/lib/shopify_api/rest/resources/2024_01/script_tag.rb +159 -0
  613. data/lib/shopify_api/rest/resources/2024_01/shipping_zone.rb +87 -0
  614. data/lib/shopify_api/rest/resources/2024_01/shop.rb +222 -0
  615. data/lib/shopify_api/rest/resources/2024_01/smart_collection.rb +220 -0
  616. data/lib/shopify_api/rest/resources/2024_01/storefront_access_token.rb +91 -0
  617. data/lib/shopify_api/rest/resources/2024_01/tender_transaction.rb +97 -0
  618. data/lib/shopify_api/rest/resources/2024_01/theme.rb +127 -0
  619. data/lib/shopify_api/rest/resources/2024_01/transaction.rb +188 -0
  620. data/lib/shopify_api/rest/resources/2024_01/usage_charge.rb +106 -0
  621. data/lib/shopify_api/rest/resources/2024_01/user.rb +142 -0
  622. data/lib/shopify_api/rest/resources/2024_01/variant.rb +212 -0
  623. data/lib/shopify_api/rest/resources/2024_01/webhook.rb +172 -0
  624. data/lib/shopify_api/utils/hmac_validator.rb +1 -1
  625. data/lib/shopify_api/version.rb +1 -1
  626. data/lib/shopify_api/webhooks/registration.rb +19 -4
  627. data/lib/shopify_api/webhooks/registrations/event_bridge.rb +1 -1
  628. data/lib/shopify_api/webhooks/registrations/http.rb +1 -1
  629. data/lib/shopify_api/webhooks/registrations/pub_sub.rb +2 -1
  630. data/lib/shopify_api/webhooks/registry.rb +36 -5
  631. data/shopify_api.gemspec +0 -1
  632. metadata +155 -22
  633. data/.github/workflows/stale.yml +0 -43
  634. data/docs/issues.md +0 -39
  635. data/docs/usage/session_storage.md +0 -46
@@ -1,17 +1,37 @@
1
1
  # Make a GraphQL API call
2
2
 
3
- Once you have a [session](oauth.md#fetching-sessions) after completing oauth, you can make GraphQL queries to the Admin API with `ShopifyAPI::Clients::Graphql::Admin`
3
+ Once OAuth is complete, we can use `ShopifyAPI::Clients::Graphql::Admin` to make authenticated API calls to the Shopify Admin GraphQL API.
4
+ #### Required Session
5
+ Every API request requires a valid
6
+ [ShopifyAPI::Auth::Session](https://github.com/Shopify/shopify-api-ruby/blob/main/lib/shopify_api/auth/session.rb).
7
+
8
+ To instantiate a session, we recommend you either use the `shopify_app` if working in Rails, or refer to our OAuth docs on constructing a session:
9
+ - ["Custom Apps"](https://github.com/Shopify/shopify-api-ruby/blob/main/docs/usage/custom_apps.md) - documentation on how to create Session from a custom app API token.
10
+ - ["Performing OAuth"](https://github.com/Shopify/shopify-api-ruby/blob/main/docs/usage/oauth.md) - documentation on how to create new sessions
11
+ - [[ShopifyApp] - "Session"](https://github.com/Shopify/shopify_app/blob/main/docs/shopify_app/sessions.md) - documentation on session handling if you're using the [`ShopifyApp`](https://github.com/Shopify/shopify_app) gem.
12
+
13
+ ### Instantiation
14
+ Create an instance of [`ShopifyAPI::Clients::Graphql::Admin`](https://github.com/Shopify/shopify-api-ruby/blob/main/lib/shopify_api/clients/graphql/admin.rb) using the current session to make requests to the Admin API.
15
+
16
+ #### Constructor parameters
17
+ | Parameter | Type | Notes |
18
+ | ----------|------|-------|
19
+ | `session` | `ShopifyAPI::Auth::Session` | Default value is `nil`. <br><br>When `nil` is passed in, active session information is inferred from `ShopifyAPI::Context.active_session`. <br>To set active session, use `ShopifyAPI::Context.activate_session`. <br><br>This is handled automatically behind the scenes if you use ShopifyApp's [session controllers](https://github.com/Shopify/shopify_app/blob/main/docs/shopify_app/sessions.md). |
20
+ | `api_version` | `String` | Default value is `nil`. When `nil` is passed in, api version is inferred from [`ShopifyAPI::Context.setup`](https://github.com/Shopify/shopify-api-ruby/blob/main/README.md#setup-shopify-context).|
21
+
22
+ Usage:
23
+ ```ruby
24
+ client = ShopifyAPI::Clients::Graphql::Admin.new(session: session, api_version: "unstable")
25
+ ```
4
26
 
5
- Below is an example
27
+ ### Making Authenticated API calls
28
+ #### Basic example
6
29
 
7
30
  ```ruby
8
- # load the current session with SessionUtils.load_current_session
9
- session = ShopifyAPI::Utils::SessionUtils.load_current_session(auth_header: <auth-header>, cookies: <cookies>, is_online: <true|false>)
10
-
11
- # initalize the client
31
+ # Initialize the client
12
32
  client = ShopifyAPI::Clients::Graphql::Admin.new(session: session)
13
33
 
14
- # make the GraphQL query string
34
+ # Make the GraphQL query string
15
35
  query =<<~QUERY
16
36
  {
17
37
  products(first: 10) {
@@ -28,10 +48,13 @@ query =<<~QUERY
28
48
  QUERY
29
49
 
30
50
  response = client.query(query: query)
51
+
31
52
  # do something with the response data
53
+ product = response.body["data"]["products"]["edges"][0]
54
+ my_function(product)
32
55
  ```
33
56
 
34
- You can also make GraphQL calls that take in variables
57
+ #### Example GraphQL query with variables
35
58
 
36
59
  ```ruby
37
60
  client = ShopifyAPI::Clients::Graphql::Admin.new(session: session)
@@ -50,18 +73,19 @@ query = <<~QUERY
50
73
  }
51
74
  }
52
75
  QUERY
76
+
53
77
  variables = {
54
78
  first: 3
55
79
  }
56
80
 
57
81
  response = client.query(query: query, variables: variables)
58
-
59
82
  ```
60
83
 
61
- Here is an example of how you might use fragments as part of the client
84
+ #### Example GraphQL query with fragments
62
85
 
63
86
  ```ruby
64
87
  client = ShopifyAPI::Clients::Graphql::Admin.new(session: session)
88
+
65
89
  # define the fragment as part of the query
66
90
  query = <<~QUERY
67
91
  fragment ProductStuff on Product {
@@ -81,29 +105,76 @@ query = <<~QUERY
81
105
  }
82
106
  }
83
107
  QUERY
108
+
84
109
  variables = {
85
110
  first: 3
86
111
  }
112
+
87
113
  response = client.query(query: query, variables: variables)
88
- # do something with the reponse
114
+ # do something with the response
89
115
  ```
90
116
 
91
- By default, the client uses the API version configured in `ShopifyAPI`. To use a different API version, set the optional `api_version` parameter. To experiment with prerelease API features, use `"unstable"` for the API version.
117
+
118
+ ### Output
119
+ #### Success
120
+ If the request is successful these methods will all return a [`ShopifyAPI::Clients::HttpResponse`](https://github.com/Shopify/shopify-api-ruby/blob/main/lib/shopify_api/clients/http_response.rb) object, which has the following methods:
121
+ | Methods | Type | Notes |
122
+ |---------|------|-------|
123
+ | `code` |`Integer`| HTTP Response code, e.g. `200`|
124
+ | `header` |`Hash{String, [String]}` | HTTP Response headers |
125
+ | `body` | `Hash{String, Untyped}` | HTTP Response body |
126
+ | `prev_page_info` | `String` | See [Pagination](#pagination)|
127
+ | `next_page_info` | `String` | See [Pagination](#pagination)|
128
+
129
+ #### Failure
130
+ If the request has failed, an error will be raised describing what went wrong.
131
+ You can rescue [`ShopifyAPI::Errors::HttpResponseError`](https://github.com/Shopify/shopify-api-ruby/blob/main/lib/shopify_api/errors/http_response_error.rb)
132
+ and output error messages with `errors.full_messages`
133
+
134
+ ## Pagination
135
+
136
+ This library also supports cursor-based pagination for GraphQL Admin API requests. [Learn more about GraphQL request pagination](https://shopify.dev/docs/api/usage/pagination-graphql).
137
+
138
+ After making a request, the `next_page_info` and `prev_page_info` can be found on the response object and be used in the query param in other requests.
139
+
140
+ ## Response as Struct
141
+ By default the response body is returned as a `Hash{String, Untyped}`. If you would like to return the response body as a `Struct`, you can pass `response_as_struct: true` to the `ShopifyAPI::Context.setup` method.
142
+ Then you can access the object with both dot and hash notation.
92
143
 
93
144
  ```ruby
94
- client = ShopifyAPI::Clients::Graphql::Admin.new(session: session, api_version: "unstable")
95
- ```
145
+ ShopifyAPI::Context.setup(
146
+ api_key: ShopifyApp.configuration.api_key,
147
+ api_secret_key: ShopifyApp.configuration.secret,
148
+ ...
149
+ response_as_struct: true
150
+ )
96
151
 
97
- Want to make calls to the Storefront API? Click [here](graphql_storefront.md)
152
+ # Make a graphql query
153
+ response = client.query(
154
+ query: CREATE_PRODUCTS_MUTATION,
155
+ variables: {
156
+ input: {
157
+ title: random_title,
158
+ variants: [{ price: random_price }],
159
+ },
160
+ },
161
+ )
162
+ # Access result with dot notation
163
+ created_product2 = response.body.data.productCreate.product
164
+ # Access result with hash notation
165
+ created_product = response.body["data"]["productCreate"]["product"]
98
166
 
99
- # Proxy a GraphQL Query
167
+ ```
100
168
 
101
- If you would like to give your front end the ability to make authenticated graphql queries to the Shopify Admin API, the `shopify_api` gem makes proxying a graphql request easy! The gem provides a utility function which will accept the raw request body (a GraphQL query), the headers, and the cookies (optional). It will add authentication to the request, proxy it to the Shopify Admin API, and return a `ShopifyAPI::Clients::HttpResponse`. An example utilization of this in Rails is shown below:
169
+ ## Proxy a GraphQL Query
170
+
171
+ If you would like to give your front end the ability to make authenticated graphql queries to the Shopify Admin API, the `shopify_api` gem makes proxy-ing a graphql request easy! The gem provides a utility function which will accept the raw request body (a GraphQL query), the headers, and the cookies (optional). It will add authentication to the request, proxy it to the Shopify Admin API, and return a `ShopifyAPI::Clients::HttpResponse`. An example utilization of this in Rails is shown below:
102
172
 
103
173
  ```ruby
104
174
  def proxy
105
175
  begin
106
176
  response = ShopifyAPI::Utils::GraphqlProxy.proxy_query(
177
+ session: session,
107
178
  headers: request.headers.to_h,
108
179
  body: request.raw_post,
109
180
  cookies: request.cookies.to_h
@@ -119,3 +190,6 @@ end
119
190
  ```
120
191
 
121
192
  **Note:** GraphQL proxying is only supported for online sessions for non-private apps, the utility will raise a `ShopifyAPI::Errors::SessionNotFoundError` if there are no existing online tokens for the provided credentials, and a `ShopifyAPI::Errors::PrivateAppError` if called from a private app.
193
+
194
+ ## Storefront API
195
+ ⚠️ Want to make calls to the Storefront API? [Read this](graphql_storefront.md).
data/docs/usage/oauth.md CHANGED
@@ -5,17 +5,81 @@ Once the library is set up for your project, you'll be able to use it to start a
5
5
  To do this, you can follow the steps below.
6
6
  For more information on authenticating a Shopify app please see the [Types of Authentication](https://shopify.dev/docs/apps/auth#types-of-authentication) page.
7
7
 
8
- ## Add a route to start OAuth
8
+ ## Session Persistence
9
+ Session persistence is deprecated from the `ShopifyAPI` library gem since [version 12.3.0](https://github.com/Shopify/shopify-api-ruby/blob/main/CHANGELOG.md#version-1230). The responsibility of session storage typically is fulfilled by the web framework middleware.
10
+ This API library's focus is on making requests and facilitate session creation.
9
11
 
10
- The route for starting the OAuth process (in this case `/login`) will use the library's `begin_auth` method. The method will return an `auth_route` URI that will be used for redirecting the user to the Shopify Authentication screen and a session cookie to store on the user's browser. These return values will be a hash in the form of {`auth_route`: `String`, `cookie`: `ShopifyAPI::Auth::Oauth::SessionCookie`}
12
+ ⚠️ If you're not using the [ShopifyApp](https://github.com/Shopify/shopify_app) gem, you may use ShopifyAPI to perform OAuth to create sessions, but you must implement your own session storage method to persist the session information to be used in authenticated API calls.
11
13
 
14
+ ## Note about Rails
15
+ If using in the Rails framework, we highly recommend you use the [shopify_app](https://github.com/Shopify/shopify_app) gem to perform OAuth, you won't have to follow the instructions below to start your own OAuth flow.
16
+ - See `ShopifyApp`'s [documentation on session storage](https://github.com/Shopify/shopify_app/blob/main/docs/shopify_app/sessions.md#sessions)
17
+
18
+ If you aren't using Rails, you can look at how the `ShopifyApp` gem handles OAuth flow for further examples:
19
+ - [Session Controller](https://github.com/Shopify/shopify_app/blob/main/app/controllers/shopify_app/sessions_controller.rb)
20
+ - Triggering and redirecting user to **begin** OAuth flow
21
+ - [Callback Controller](https://github.com/Shopify/shopify_app/blob/main/app/controllers/shopify_app/callback_controller.rb)
22
+ - Creating / storing sessions to **complete** the OAuth flow
23
+
24
+ ## Performing OAuth
25
+ #### Steps
26
+ 1. [Add a route to start OAuth](#1-add-a-route-to-start-oauth)
27
+ 2. [Add an Oauth callback route](#2-add-an-oauth-callback-route)
28
+ 3. [Begin OAuth](#3-begin-oauth)
29
+ 4. [Handle OAuth Callback](#4-handle-oauth-callback)
30
+ 5. [Using OAuth Session to make authenticated API calls](#5-using-oauth-session-to-make-authenticated-api-calls)
31
+
32
+ ### 1. Add a route to start OAuth
33
+ Add a route to your app to start the OAuth process.
34
+
35
+ ```ruby
36
+ class ShopifyAuthController < ApplicationController
37
+ def login
38
+ # This method will trigger the start of the OAuth process
39
+ end
40
+ end
41
+ ```
42
+
43
+ ### 2. Add an OAuth callback route
44
+ After the app is authenticated with Shopify, the Shopify platform will send a request back to your app using this route
45
+ (which you will provide as the `redirect_path` parameter to `begin_auth` method, in [step 3 - Begin OAuth](#3-begin-oauth)).
46
+ ```ruby
47
+ class ShopifyCallbackController < ApplicationController
48
+ def callback
49
+ # This callback method will be called once user grants permission to this app from Shopify Admin.
50
+ end
51
+ ```
52
+
53
+ ### 3. Begin OAuth
54
+ Use [`ShopifyAPI::Auth::Oauth.begin_auth`](https://github.com/Shopify/shopify-api-ruby/blob/main/lib/shopify_api/auth/oauth.rb#L22) method to start OAuth process for your app.
55
+
56
+ #### Input
12
57
  | Parameter | Type | Required? | Default Value | Notes |
13
58
  | -------------- | ---------------------- | :-------: | :-----------: | ----------------------------------------------------------------------------------------------------------- |
14
59
  | `shop` | `String` | Yes | - | A Shopify domain name in the form `{exampleshop}.myshopify.com`. |
15
60
  | `redirect_path` | `String` | Yes | - | The redirect path used for callback with a leading `/`. The route should be allowed under the app settings. |
16
61
  | `is_online` | `Boolean` | No | `true` | `true` if the session is online and `false` otherwise. |
17
62
 
18
- Your app should take the returned values from the `begin_auth` function and redirect the user to url defined by `auth_route` and set the cookie in the user's browser. We strongly recommend that you use secure, httpOnly cookies for this to help prevent session hijacking.
63
+ #### Output
64
+ `begin_auth` method will return a hash result in the form of:
65
+ ```ruby
66
+ {
67
+ auth_route: String,
68
+ cookie: ShopifyAPI::Auth::Oauth::SessionCookie,
69
+ }
70
+ ```
71
+
72
+ | Key | Type | Notes |
73
+ |-----|------|-------|
74
+ |`auth_route`|`String`|URI that will be used for redirecting the user to the Shopify Authentication screen|
75
+ |`cookie`|`ShopifyAPI::Auth::Oauth::SessionCookie`|A session cookie to store on the user's browser. |
76
+
77
+ #### Example
78
+ Your app should take the returned values from the `begin_auth` method and:
79
+
80
+ 1. Set the cookie in the user's browser. We strongly recommend that you use secure, httpOnly cookies for this to help prevent session hijacking.
81
+ 2. Redirect the user to authorization url defined by `auth_route`.
82
+ - This will redirect the user to the Shopify Admin page to authorize/grant permission to the app.
19
83
 
20
84
  An example is shown below in a Rails app but these steps could be applied in any framework:
21
85
 
@@ -24,8 +88,10 @@ class ShopifyAuthController < ApplicationController
24
88
  def login
25
89
  shop = request.headers["Shop"]
26
90
 
91
+ # Builds the authorization URL route to redirect the user to
27
92
  auth_response = ShopifyAPI::Auth::Oauth.begin_auth(shop: domain, redirect_path: "/auth/callback")
28
93
 
94
+ # Store the authorization cookie
29
95
  cookies[auth_response[:cookie].name] = {
30
96
  expires: auth_response[:cookie].expires,
31
97
  secure: true,
@@ -33,26 +99,65 @@ class ShopifyAuthController < ApplicationController
33
99
  value: auth_response[:cookie].value
34
100
  }
35
101
 
102
+ # Redirect the user to "auth_response[:auth_route]" to allow user to grant the app permission
103
+ # This will lead the user to the Shopify Authorization page
36
104
  head 307
37
105
  response.set_header("Location", auth_response[:auth_route])
38
106
  end
39
107
  end
40
108
  ```
41
109
 
42
- ## Add your OAuth callback route
110
+ ⚠️ You can see a concrete example in the `ShopifyApp` gem's [SessionController](https://github.com/Shopify/shopify_app/blob/main/app/controllers/shopify_app/sessions_controller.rb).
43
111
 
44
- After the app is authenticated with Shopify, the Shopify platform will send a request back to your app using this route (which you provided as a parameter to `begin_auth`, above). Your app will now use the provided `validate_auth_callback` method to finalize the OAuth process. This method returns a hash containing the new session and a cookie to be set in the browser in form of {`session`: `ShopifyAPI::Auth::Session`, `cookie`: `ShopifyAPI::Auth::Oauth::SessionCookie`}.
112
+ ### 4. Handle OAuth Callback
113
+ When the user grants permission to the app in Shopify admin, they'll be redirected back to the app's callback route
114
+ (configured in [Step 2 - Add an OAuth callback route](#2-add-an-oauth-callback-route)).
115
+
116
+ Use [`ShopifyAPI::AuthL::Oauth.validate_auth_callback`](https://github.com/Shopify/shopify-api-ruby/blob/main/lib/shopify_api/auth/oauth.rb#L60) method to finalize the OAuth process.
117
+
118
+ #### Input
119
+ | Parameter | Type | Notes |
120
+ | ------------ | --------| ----------------------------------------------------------------------------------------------------------- |
121
+ | `cookies` | `Hash` | All browser cookies in a hash format with key and value as `String` |
122
+ | `auth_query` | `ShopifyAPI::Auth::Oauth::AuthQuery`| An `AuthQuery` containing the authorization request information used to validate the request.|
123
+
124
+ #### Output
125
+ This method returns a hash containing the new session and a cookie to be set in the browser in form of:
126
+ ```ruby
127
+ {
128
+ session: ShopifyAPI::Auth::Session,
129
+ cookie: ShopifyAPI::Auth::Oauth::SessionCookie,
130
+ }
131
+ ```
132
+ | Key | Type | Notes |
133
+ |-----|------|-------|
134
+ |`session`|`ShopifyAPI::Auth::Session`|A session object that contains necessary information to identify the session like `shop`, `access_token`, `scope`, etc.|
135
+ |`cookie` |`ShopifyAPI::Auth::Oauth::SessionCookie`|A session cookie to store on the user's browser. |
136
+
137
+ #### Example
138
+ Your app should call `validate_auth_callback` to construct the `Session` object and cookie that will be used later for authenticated API requests.
139
+
140
+ 1. Call `validate_auth_callback` to construct `Session` and `SessionCookie`.
141
+ 2. Update browser cookies with the new value for the session.
142
+ 3. Store the `Session` object to be used later when making authenticated API calls.
143
+ - See [Make a GraphQL API call](https://github.com/Shopify/shopify-api-ruby/blob/main/docs/usage/graphql.md), or
144
+ [Make a REST API call](https://github.com/Shopify/shopify-api-ruby/blob/main/docs/usage/rest.md) for examples on how to use the result `Session` object.
45
145
 
46
146
  An example is shown below in a Rails app but these steps could be applied in any framework:
47
147
 
48
148
  ```ruby
49
149
  def callback
50
150
  begin
151
+ # Create an AuthQuery object from the request parameters,
152
+ # and pass the list of cookies to `validate_auth_callback`
51
153
  auth_result = ShopifyAPI::Auth::Oauth.validate_auth_callback(
52
154
  cookies: cookies.to_h,
53
- auth_query: ShopifyAPI::Auth::Oauth::AuthQuery.new(request.parameters.symbolize_keys.except(:controller, :action))
155
+ auth_query: ShopifyAPI::Auth::Oauth::AuthQuery.new(
156
+ request.parameters.symbolize_keys.except(:controller, :action)
157
+ )
54
158
  )
55
159
 
160
+ # Update cookies with the authorized access token from result
56
161
  cookies[auth_result[:cookie].name] = {
57
162
  expires: auth_result[:cookie].expires,
58
163
  secure: true,
@@ -60,6 +165,10 @@ def callback
60
165
  value: auth_result[:cookie].value
61
166
  }
62
167
 
168
+ # Store the Session object if your app has a DB/file storage for session persistence
169
+ # This session object could be retrieved later to make authenticated API requests to Shopify
170
+ MyApp::SessionRepository.store_session(auth_result[:session])
171
+
63
172
  puts("OAuth complete! New access token: #{auth_result[:session].access_token}")
64
173
 
65
174
  head 307
@@ -70,35 +179,59 @@ def callback
70
179
  end
71
180
  end
72
181
  ```
73
- ## Fetching sessions
74
182
 
75
- You can use the OAuth methods to create both offline and online sessions. Once the process is completed, the session will be stored as per your `Context.session_storage`, and can be retrieved with `SessionUtils` class methods.
183
+ ⚠️ You can see a concrete example in the `ShopifyApp` gem's [CallbackController](https://github.com/Shopify/shopify_app/blob/main/app/controllers/shopify_app/callback_controller.rb).
76
184
 
77
- - To load current session, you can use the following method:
185
+ ### 5. Using OAuth Session to make authenticated API calls
186
+ Once your OAuth flow is complete, and you have stored your `Session` object from [Step 4 - Handle OAuth Callback](#4-handle-oauth-callback), you may use that `Session` object to make authenticated API calls.
78
187
 
188
+ Example:
79
189
  ```ruby
80
- ShopifyAPI::Utils::SessionUtils.load_current_session(auth_header: <auth-header>, cookies: <cookies>, is_online: <true|false>)
81
- ```
190
+ def make_api_request(shop)
191
+ # 1. Retrieve the Session object stored from previous step
192
+ session = MyApp::SessionRepository.retrieve_session_for_shop(shop)
193
+
194
+ # 2. Create API client with the session information
195
+ # session must be type `ShopifyAPI::Auth::Session`
196
+ graphql_client = ShopifyAPI::Clients::Graphql::Admin.new(session: session)
82
197
 
83
- Accepted arguments:
84
- | Parameter | Type | Notes |
85
- | ----------- | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
86
- | `auth_header` | `String` | JWT token will be extracted from `auth_header` to load session for embedded apps. If JWT token is not provided this methods will try with `cookies`. Only required if trying to load, an embedded session. |
87
- | `cookies` | `Hash(String, String)` | The cookies from the HTTP request. A session cookie named `shopify_app_session` is used to load session for non-embedded apps. Can be omitted if loading and embedded session without falling back on cookies |
88
- | `is_online` | `Boolean` | Whether to load online or offline sessions. Defaults to `false` |
198
+ # 3. Use API client to make queries
199
+ response = graphql_client.query(query: MY_API_QUERY)
89
200
 
90
- This method will return a `ShopifyAPI::Auth::Session` if a session exists. Either a proper token or a proper cookie must be present.
201
+ # 4. Use the response for your app
202
+ ...
203
+ end
204
+ ```
91
205
 
92
- - To load offline session, you can use the following method:
206
+ #### Setting `active_session`
207
+ Alternatively, if you don't want to keep having to retrieve a Session object for a shop, you may set [`ShopifyAPI::Context.active_session`](https://github.com/Shopify/shopify-api-ruby/blob/main/lib/shopify_api/context.rb#L144).
208
+ All of the API client classes will [use the `active_session`](https://github.com/Shopify/shopify-api-ruby/blob/c3bb9d8f8b6053756149a4cf9299e059ec337544/lib/shopify_api/clients/http_client.rb#L13) if the `session` passed in is `nil`.
93
209
 
210
+ Example:
94
211
  ```ruby
95
- ShopifyAPI::Utils::SessionUtils.load_offline_session(shop)
96
- ```
212
+ #### Configuration
213
+ def configure_app
214
+ # This method is called before making authenticated API calls
215
+ session = retrieve_session_from_file # your implementation of retrieving a session
216
+
217
+ # Activate session to be used in all API calls
218
+ # session must be type `ShopifyAPI::Auth::Session`
219
+ ShopifyAPI::Context.activate_session(session)
220
+
221
+ end
222
+
223
+ #### Using clients to make authenticated API calls
224
+ def make_api_request
225
+ # 1. Create API client without session information
226
+ # The graphql_client will use `ShopifyAPI::Context.active_session` when making API calls
227
+ graphql_client = ShopifyAPI::Clients::Graphql::Admin.new
97
228
 
98
- Accepted arguments:
99
- | Parameter | Type | Notes |
100
- | ------------------- | --------- | --------------------------------------------- |
101
- | `shop` | `String` | The shop url to find the offline session for. |
102
- | `include_expired` | `Boolean` | Include expired sessions or not. |
229
+ # 2. Use API client to make queries
230
+ ...
231
+ end
232
+
233
+ ```
103
234
 
104
- This method will return a `ShopifyAPI::Auth::Session` if a session exists and `nil` otherwise. This method **does not** perform any validation on the shop domain, so it **must not** rely on user input for the domain. This method is typically meant to be used in background tasks like webhooks, where the data is expected to have been validated when the task was enqueued.
235
+ ⚠️ See following docs on how to use the API clients:
236
+ - [Make a GraphQL API call](https://github.com/Shopify/shopify-api-ruby/blob/main/docs/usage/graphql.md)
237
+ - [Make a REST API call](https://github.com/Shopify/shopify-api-ruby/blob/main/docs/usage/rest.md)