shopify_api 9.5.1 → 13.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (936) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CODEOWNERS +1 -1
  3. data/.github/ISSUE_TEMPLATE/BUG_REPORT.md +40 -0
  4. data/.github/ISSUE_TEMPLATE/ENHANCEMENT.md +9 -0
  5. data/.github/ISSUE_TEMPLATE/FEATURE_REQUEST.md +9 -0
  6. data/.github/api_update_reminder.md +25 -0
  7. data/.github/api_update_reminder_on_release.md +19 -0
  8. data/.github/dependabot.yml +20 -0
  9. data/.github/pull_request_template.md +20 -0
  10. data/.github/workflows/api_update_reminder.yml +16 -0
  11. data/.github/workflows/api_update_reminder_on_release.yml +16 -0
  12. data/.github/workflows/build.yml +18 -22
  13. data/.github/workflows/cla.yml +22 -0
  14. data/.github/workflows/close-waiting-for-response-issues.yml +20 -0
  15. data/.github/workflows/remove-labels-on-activity.yml +16 -0
  16. data/.github/workflows/stale.yml +43 -0
  17. data/.rubocop.yml +51 -17
  18. data/BREAKING_CHANGES_FOR_OLDER_VERSIONS.md +110 -0
  19. data/CHANGELOG.md +313 -213
  20. data/CONTRIBUTING.md +3 -2
  21. data/Gemfile +7 -4
  22. data/Gemfile.lock +123 -115
  23. data/LICENSE +2 -2
  24. data/README.md +78 -596
  25. data/RELEASING.md +19 -0
  26. data/Rakefile +14 -46
  27. data/SECURITY.md +2 -2
  28. data/bin/tapioca +29 -0
  29. data/dev.yml +22 -1
  30. data/docs/README.md +13 -0
  31. data/docs/getting_started.md +46 -0
  32. data/docs/issues.md +39 -0
  33. data/docs/usage/graphql.md +121 -0
  34. data/docs/usage/graphql_storefront.md +48 -0
  35. data/docs/usage/oauth.md +104 -0
  36. data/docs/usage/rest.md +144 -0
  37. data/docs/usage/session_storage.md +46 -0
  38. data/docs/usage/webhooks.md +98 -0
  39. data/lib/shopify_api/admin_versions.rb +22 -0
  40. data/lib/shopify_api/auth/associated_user.rb +36 -0
  41. data/lib/shopify_api/auth/auth_scopes.rb +75 -0
  42. data/lib/shopify_api/auth/jwt_payload.rb +83 -0
  43. data/lib/shopify_api/auth/oauth/auth_query.rb +47 -0
  44. data/lib/shopify_api/auth/oauth/session_cookie.rb +28 -0
  45. data/lib/shopify_api/auth/oauth.rb +133 -0
  46. data/lib/shopify_api/auth/session.rb +119 -0
  47. data/lib/shopify_api/auth.rb +26 -0
  48. data/lib/shopify_api/clients/graphql/admin.rb +15 -0
  49. data/lib/shopify_api/clients/graphql/client.rb +50 -0
  50. data/lib/shopify_api/clients/graphql/storefront.rb +35 -0
  51. data/lib/shopify_api/clients/http_client.rb +111 -0
  52. data/lib/shopify_api/clients/http_request.rb +35 -0
  53. data/lib/shopify_api/clients/http_response.rb +66 -0
  54. data/lib/shopify_api/clients/rest/admin.rb +129 -0
  55. data/lib/shopify_api/context.rb +181 -0
  56. data/lib/shopify_api/errors/context_not_setup_error.rb +9 -0
  57. data/lib/shopify_api/errors/cookie_not_found_error.rb +9 -0
  58. data/lib/shopify_api/errors/feature_deprecated_error.rb +9 -0
  59. data/lib/shopify_api/errors/http_response_error.rb +23 -0
  60. data/lib/shopify_api/errors/invalid_graphql_request_error.rb +9 -0
  61. data/lib/shopify_api/errors/invalid_http_request_error.rb +9 -0
  62. data/lib/shopify_api/errors/invalid_jwt_token_error.rb +9 -0
  63. data/lib/shopify_api/errors/invalid_oauth_error.rb +9 -0
  64. data/lib/shopify_api/errors/invalid_webhook_error.rb +9 -0
  65. data/lib/shopify_api/errors/invalid_webhook_registration_error.rb +9 -0
  66. data/lib/shopify_api/errors/log_level_not_found_error.rb +9 -0
  67. data/lib/shopify_api/errors/max_http_retries_exceeded_error.rb +9 -0
  68. data/lib/shopify_api/errors/missing_jwt_token_error.rb +9 -0
  69. data/lib/shopify_api/errors/missing_required_argument_error.rb +9 -0
  70. data/lib/shopify_api/errors/no_active_session_error.rb +9 -0
  71. data/lib/shopify_api/errors/no_session_cookie_error.rb +9 -0
  72. data/lib/shopify_api/errors/no_webhook_handler.rb +9 -0
  73. data/lib/shopify_api/errors/private_app_error.rb +9 -0
  74. data/lib/shopify_api/errors/request_access_token_error.rb +9 -0
  75. data/lib/shopify_api/errors/session_not_found_error.rb +9 -0
  76. data/lib/shopify_api/errors/session_storage_error.rb +9 -0
  77. data/lib/shopify_api/errors/unsupported_oauth_error.rb +9 -0
  78. data/lib/shopify_api/errors/unsupported_version_error.rb +9 -0
  79. data/lib/shopify_api/errors/webhook_registration_error.rb +9 -0
  80. data/lib/shopify_api/inflector.rb +17 -0
  81. data/lib/shopify_api/logger.rb +82 -0
  82. data/lib/shopify_api/rest/base.rb +434 -0
  83. data/lib/shopify_api/rest/base_errors.rb +32 -0
  84. data/lib/shopify_api/rest/resources/2022_04/abandoned_checkout.rb +190 -0
  85. data/lib/shopify_api/rest/resources/2022_04/access_scope.rb +58 -0
  86. data/lib/shopify_api/rest/resources/2022_04/android_pay_key.rb +77 -0
  87. data/lib/shopify_api/rest/resources/2022_04/apple_pay_certificate.rb +105 -0
  88. data/lib/shopify_api/rest/resources/2022_04/application_charge.rb +109 -0
  89. data/lib/shopify_api/rest/resources/2022_04/application_credit.rb +92 -0
  90. data/lib/shopify_api/rest/resources/2022_04/article.rb +265 -0
  91. data/lib/shopify_api/rest/resources/2022_04/asset.rb +118 -0
  92. data/lib/shopify_api/rest/resources/2022_04/assigned_fulfillment_order.rb +86 -0
  93. data/lib/shopify_api/rest/resources/2022_04/balance.rb +50 -0
  94. data/lib/shopify_api/rest/resources/2022_04/blog.rb +162 -0
  95. data/lib/shopify_api/rest/resources/2022_04/cancellation_request.rb +83 -0
  96. data/lib/shopify_api/rest/resources/2022_04/carrier_service.rb +116 -0
  97. data/lib/shopify_api/rest/resources/2022_04/checkout.rb +209 -0
  98. data/lib/shopify_api/rest/resources/2022_04/collect.rb +142 -0
  99. data/lib/shopify_api/rest/resources/2022_04/collection.rb +110 -0
  100. data/lib/shopify_api/rest/resources/2022_04/collection_listing.rb +155 -0
  101. data/lib/shopify_api/rest/resources/2022_04/comment.rb +283 -0
  102. data/lib/shopify_api/rest/resources/2022_04/country.rb +137 -0
  103. data/lib/shopify_api/rest/resources/2022_04/currency.rb +57 -0
  104. data/lib/shopify_api/rest/resources/2022_04/custom_collection.rb +187 -0
  105. data/lib/shopify_api/rest/resources/2022_04/customer.rb +329 -0
  106. data/lib/shopify_api/rest/resources/2022_04/customer_address.rb +201 -0
  107. data/lib/shopify_api/rest/resources/2022_04/customer_saved_search.rb +169 -0
  108. data/lib/shopify_api/rest/resources/2022_04/deprecated_api_call.rb +57 -0
  109. data/lib/shopify_api/rest/resources/2022_04/discount_code.rb +222 -0
  110. data/lib/shopify_api/rest/resources/2022_04/dispute.rb +111 -0
  111. data/lib/shopify_api/rest/resources/2022_04/draft_order.rb +275 -0
  112. data/lib/shopify_api/rest/resources/2022_04/event.rb +148 -0
  113. data/lib/shopify_api/rest/resources/2022_04/fulfillment.rb +278 -0
  114. data/lib/shopify_api/rest/resources/2022_04/fulfillment_event.rb +166 -0
  115. data/lib/shopify_api/rest/resources/2022_04/fulfillment_order.rb +280 -0
  116. data/lib/shopify_api/rest/resources/2022_04/fulfillment_request.rb +87 -0
  117. data/lib/shopify_api/rest/resources/2022_04/fulfillment_service.rb +130 -0
  118. data/lib/shopify_api/rest/resources/2022_04/gift_card.rb +218 -0
  119. data/lib/shopify_api/rest/resources/2022_04/gift_card_adjustment.rb +118 -0
  120. data/lib/shopify_api/rest/resources/2022_04/image.rb +157 -0
  121. data/lib/shopify_api/rest/resources/2022_04/inventory_item.rb +108 -0
  122. data/lib/shopify_api/rest/resources/2022_04/inventory_level.rb +179 -0
  123. data/lib/shopify_api/rest/resources/2022_04/location.rb +167 -0
  124. data/lib/shopify_api/rest/resources/2022_04/locations_for_move.rb +56 -0
  125. data/lib/shopify_api/rest/resources/2022_04/marketing_event.rb +209 -0
  126. data/lib/shopify_api/rest/resources/2022_04/metafield.rb +344 -0
  127. data/lib/shopify_api/rest/resources/2022_04/mobile_platform_application.rb +110 -0
  128. data/lib/shopify_api/rest/resources/2022_04/order.rb +473 -0
  129. data/lib/shopify_api/rest/resources/2022_04/order_risk.rb +142 -0
  130. data/lib/shopify_api/rest/resources/2022_04/page.rb +194 -0
  131. data/lib/shopify_api/rest/resources/2022_04/payment.rb +140 -0
  132. data/lib/shopify_api/rest/resources/2022_04/payment_gateway.rb +143 -0
  133. data/lib/shopify_api/rest/resources/2022_04/payment_transaction.rb +107 -0
  134. data/lib/shopify_api/rest/resources/2022_04/payout.rb +97 -0
  135. data/lib/shopify_api/rest/resources/2022_04/policy.rb +69 -0
  136. data/lib/shopify_api/rest/resources/2022_04/price_rule.rb +223 -0
  137. data/lib/shopify_api/rest/resources/2022_04/product.rb +223 -0
  138. data/lib/shopify_api/rest/resources/2022_04/product_listing.rb +196 -0
  139. data/lib/shopify_api/rest/resources/2022_04/product_resource_feedback.rb +88 -0
  140. data/lib/shopify_api/rest/resources/2022_04/province.rb +132 -0
  141. data/lib/shopify_api/rest/resources/2022_04/recurring_application_charge.rb +172 -0
  142. data/lib/shopify_api/rest/resources/2022_04/redirect.rb +139 -0
  143. data/lib/shopify_api/rest/resources/2022_04/refund.rb +151 -0
  144. data/lib/shopify_api/rest/resources/2022_04/report.rb +121 -0
  145. data/lib/shopify_api/rest/resources/2022_04/resource_feedback.rb +73 -0
  146. data/lib/shopify_api/rest/resources/2022_04/script_tag.rb +155 -0
  147. data/lib/shopify_api/rest/resources/2022_04/shipping_zone.rb +83 -0
  148. data/lib/shopify_api/rest/resources/2022_04/shop.rb +218 -0
  149. data/lib/shopify_api/rest/resources/2022_04/smart_collection.rb +216 -0
  150. data/lib/shopify_api/rest/resources/2022_04/storefront_access_token.rb +87 -0
  151. data/lib/shopify_api/rest/resources/2022_04/tender_transaction.rb +93 -0
  152. data/lib/shopify_api/rest/resources/2022_04/theme.rb +123 -0
  153. data/lib/shopify_api/rest/resources/2022_04/transaction.rb +181 -0
  154. data/lib/shopify_api/rest/resources/2022_04/usage_charge.rb +102 -0
  155. data/lib/shopify_api/rest/resources/2022_04/user.rb +138 -0
  156. data/lib/shopify_api/rest/resources/2022_04/variant.rb +212 -0
  157. data/lib/shopify_api/rest/resources/2022_04/webhook.rb +168 -0
  158. data/lib/shopify_api/rest/resources/2022_07/abandoned_checkout.rb +190 -0
  159. data/lib/shopify_api/rest/resources/2022_07/access_scope.rb +58 -0
  160. data/lib/shopify_api/rest/resources/2022_07/android_pay_key.rb +77 -0
  161. data/lib/shopify_api/rest/resources/2022_07/apple_pay_certificate.rb +105 -0
  162. data/lib/shopify_api/rest/resources/2022_07/application_charge.rb +109 -0
  163. data/lib/shopify_api/rest/resources/2022_07/application_credit.rb +92 -0
  164. data/lib/shopify_api/rest/resources/2022_07/article.rb +265 -0
  165. data/lib/shopify_api/rest/resources/2022_07/asset.rb +118 -0
  166. data/lib/shopify_api/rest/resources/2022_07/assigned_fulfillment_order.rb +86 -0
  167. data/lib/shopify_api/rest/resources/2022_07/balance.rb +50 -0
  168. data/lib/shopify_api/rest/resources/2022_07/blog.rb +162 -0
  169. data/lib/shopify_api/rest/resources/2022_07/cancellation_request.rb +83 -0
  170. data/lib/shopify_api/rest/resources/2022_07/carrier_service.rb +116 -0
  171. data/lib/shopify_api/rest/resources/2022_07/checkout.rb +209 -0
  172. data/lib/shopify_api/rest/resources/2022_07/collect.rb +142 -0
  173. data/lib/shopify_api/rest/resources/2022_07/collection.rb +110 -0
  174. data/lib/shopify_api/rest/resources/2022_07/collection_listing.rb +155 -0
  175. data/lib/shopify_api/rest/resources/2022_07/comment.rb +283 -0
  176. data/lib/shopify_api/rest/resources/2022_07/country.rb +137 -0
  177. data/lib/shopify_api/rest/resources/2022_07/currency.rb +57 -0
  178. data/lib/shopify_api/rest/resources/2022_07/custom_collection.rb +187 -0
  179. data/lib/shopify_api/rest/resources/2022_07/customer.rb +329 -0
  180. data/lib/shopify_api/rest/resources/2022_07/customer_address.rb +201 -0
  181. data/lib/shopify_api/rest/resources/2022_07/customer_saved_search.rb +169 -0
  182. data/lib/shopify_api/rest/resources/2022_07/deprecated_api_call.rb +57 -0
  183. data/lib/shopify_api/rest/resources/2022_07/discount_code.rb +222 -0
  184. data/lib/shopify_api/rest/resources/2022_07/dispute.rb +111 -0
  185. data/lib/shopify_api/rest/resources/2022_07/dispute_evidence.rb +117 -0
  186. data/lib/shopify_api/rest/resources/2022_07/dispute_file_upload.rb +81 -0
  187. data/lib/shopify_api/rest/resources/2022_07/draft_order.rb +275 -0
  188. data/lib/shopify_api/rest/resources/2022_07/event.rb +148 -0
  189. data/lib/shopify_api/rest/resources/2022_07/fulfillment.rb +231 -0
  190. data/lib/shopify_api/rest/resources/2022_07/fulfillment_event.rb +166 -0
  191. data/lib/shopify_api/rest/resources/2022_07/fulfillment_order.rb +306 -0
  192. data/lib/shopify_api/rest/resources/2022_07/fulfillment_request.rb +87 -0
  193. data/lib/shopify_api/rest/resources/2022_07/fulfillment_service.rb +130 -0
  194. data/lib/shopify_api/rest/resources/2022_07/gift_card.rb +218 -0
  195. data/lib/shopify_api/rest/resources/2022_07/gift_card_adjustment.rb +118 -0
  196. data/lib/shopify_api/rest/resources/2022_07/image.rb +157 -0
  197. data/lib/shopify_api/rest/resources/2022_07/inventory_item.rb +108 -0
  198. data/lib/shopify_api/rest/resources/2022_07/inventory_level.rb +179 -0
  199. data/lib/shopify_api/rest/resources/2022_07/location.rb +167 -0
  200. data/lib/shopify_api/rest/resources/2022_07/locations_for_move.rb +56 -0
  201. data/lib/shopify_api/rest/resources/2022_07/marketing_event.rb +209 -0
  202. data/lib/shopify_api/rest/resources/2022_07/metafield.rb +344 -0
  203. data/lib/shopify_api/rest/resources/2022_07/mobile_platform_application.rb +110 -0
  204. data/lib/shopify_api/rest/resources/2022_07/order.rb +473 -0
  205. data/lib/shopify_api/rest/resources/2022_07/order_risk.rb +142 -0
  206. data/lib/shopify_api/rest/resources/2022_07/page.rb +194 -0
  207. data/lib/shopify_api/rest/resources/2022_07/payment.rb +140 -0
  208. data/lib/shopify_api/rest/resources/2022_07/payment_gateway.rb +143 -0
  209. data/lib/shopify_api/rest/resources/2022_07/payment_transaction.rb +107 -0
  210. data/lib/shopify_api/rest/resources/2022_07/payout.rb +97 -0
  211. data/lib/shopify_api/rest/resources/2022_07/policy.rb +69 -0
  212. data/lib/shopify_api/rest/resources/2022_07/price_rule.rb +223 -0
  213. data/lib/shopify_api/rest/resources/2022_07/product.rb +223 -0
  214. data/lib/shopify_api/rest/resources/2022_07/product_listing.rb +196 -0
  215. data/lib/shopify_api/rest/resources/2022_07/product_resource_feedback.rb +88 -0
  216. data/lib/shopify_api/rest/resources/2022_07/province.rb +132 -0
  217. data/lib/shopify_api/rest/resources/2022_07/recurring_application_charge.rb +172 -0
  218. data/lib/shopify_api/rest/resources/2022_07/redirect.rb +139 -0
  219. data/lib/shopify_api/rest/resources/2022_07/refund.rb +151 -0
  220. data/lib/shopify_api/rest/resources/2022_07/report.rb +121 -0
  221. data/lib/shopify_api/rest/resources/2022_07/resource_feedback.rb +73 -0
  222. data/lib/shopify_api/rest/resources/2022_07/script_tag.rb +155 -0
  223. data/lib/shopify_api/rest/resources/2022_07/shipping_zone.rb +83 -0
  224. data/lib/shopify_api/rest/resources/2022_07/shop.rb +218 -0
  225. data/lib/shopify_api/rest/resources/2022_07/smart_collection.rb +216 -0
  226. data/lib/shopify_api/rest/resources/2022_07/storefront_access_token.rb +87 -0
  227. data/lib/shopify_api/rest/resources/2022_07/tender_transaction.rb +93 -0
  228. data/lib/shopify_api/rest/resources/2022_07/theme.rb +123 -0
  229. data/lib/shopify_api/rest/resources/2022_07/transaction.rb +181 -0
  230. data/lib/shopify_api/rest/resources/2022_07/usage_charge.rb +102 -0
  231. data/lib/shopify_api/rest/resources/2022_07/user.rb +138 -0
  232. data/lib/shopify_api/rest/resources/2022_07/variant.rb +212 -0
  233. data/lib/shopify_api/rest/resources/2022_07/webhook.rb +168 -0
  234. data/lib/shopify_api/rest/resources/2022_10/abandoned_checkout.rb +190 -0
  235. data/lib/shopify_api/rest/resources/2022_10/access_scope.rb +58 -0
  236. data/lib/shopify_api/rest/resources/2022_10/android_pay_key.rb +77 -0
  237. data/lib/shopify_api/rest/resources/2022_10/apple_pay_certificate.rb +105 -0
  238. data/lib/shopify_api/rest/resources/2022_10/application_charge.rb +109 -0
  239. data/lib/shopify_api/rest/resources/2022_10/application_credit.rb +92 -0
  240. data/lib/shopify_api/rest/resources/2022_10/article.rb +265 -0
  241. data/lib/shopify_api/rest/resources/2022_10/asset.rb +118 -0
  242. data/lib/shopify_api/rest/resources/2022_10/assigned_fulfillment_order.rb +86 -0
  243. data/lib/shopify_api/rest/resources/2022_10/balance.rb +50 -0
  244. data/lib/shopify_api/rest/resources/2022_10/blog.rb +162 -0
  245. data/lib/shopify_api/rest/resources/2022_10/cancellation_request.rb +83 -0
  246. data/lib/shopify_api/rest/resources/2022_10/carrier_service.rb +116 -0
  247. data/lib/shopify_api/rest/resources/2022_10/checkout.rb +209 -0
  248. data/lib/shopify_api/rest/resources/2022_10/collect.rb +142 -0
  249. data/lib/shopify_api/rest/resources/2022_10/collection.rb +110 -0
  250. data/lib/shopify_api/rest/resources/2022_10/collection_listing.rb +155 -0
  251. data/lib/shopify_api/rest/resources/2022_10/comment.rb +283 -0
  252. data/lib/shopify_api/rest/resources/2022_10/country.rb +137 -0
  253. data/lib/shopify_api/rest/resources/2022_10/currency.rb +57 -0
  254. data/lib/shopify_api/rest/resources/2022_10/custom_collection.rb +187 -0
  255. data/lib/shopify_api/rest/resources/2022_10/customer.rb +329 -0
  256. data/lib/shopify_api/rest/resources/2022_10/customer_address.rb +201 -0
  257. data/lib/shopify_api/rest/resources/2022_10/customer_saved_search.rb +169 -0
  258. data/lib/shopify_api/rest/resources/2022_10/deprecated_api_call.rb +57 -0
  259. data/lib/shopify_api/rest/resources/2022_10/discount_code.rb +222 -0
  260. data/lib/shopify_api/rest/resources/2022_10/dispute.rb +111 -0
  261. data/lib/shopify_api/rest/resources/2022_10/dispute_evidence.rb +117 -0
  262. data/lib/shopify_api/rest/resources/2022_10/dispute_file_upload.rb +81 -0
  263. data/lib/shopify_api/rest/resources/2022_10/draft_order.rb +275 -0
  264. data/lib/shopify_api/rest/resources/2022_10/event.rb +148 -0
  265. data/lib/shopify_api/rest/resources/2022_10/fulfillment.rb +231 -0
  266. data/lib/shopify_api/rest/resources/2022_10/fulfillment_event.rb +166 -0
  267. data/lib/shopify_api/rest/resources/2022_10/fulfillment_order.rb +306 -0
  268. data/lib/shopify_api/rest/resources/2022_10/fulfillment_request.rb +87 -0
  269. data/lib/shopify_api/rest/resources/2022_10/fulfillment_service.rb +130 -0
  270. data/lib/shopify_api/rest/resources/2022_10/gift_card.rb +218 -0
  271. data/lib/shopify_api/rest/resources/2022_10/gift_card_adjustment.rb +118 -0
  272. data/lib/shopify_api/rest/resources/2022_10/image.rb +157 -0
  273. data/lib/shopify_api/rest/resources/2022_10/inventory_item.rb +108 -0
  274. data/lib/shopify_api/rest/resources/2022_10/inventory_level.rb +179 -0
  275. data/lib/shopify_api/rest/resources/2022_10/location.rb +167 -0
  276. data/lib/shopify_api/rest/resources/2022_10/locations_for_move.rb +56 -0
  277. data/lib/shopify_api/rest/resources/2022_10/marketing_event.rb +209 -0
  278. data/lib/shopify_api/rest/resources/2022_10/metafield.rb +344 -0
  279. data/lib/shopify_api/rest/resources/2022_10/mobile_platform_application.rb +110 -0
  280. data/lib/shopify_api/rest/resources/2022_10/order.rb +476 -0
  281. data/lib/shopify_api/rest/resources/2022_10/order_risk.rb +142 -0
  282. data/lib/shopify_api/rest/resources/2022_10/page.rb +194 -0
  283. data/lib/shopify_api/rest/resources/2022_10/payment.rb +140 -0
  284. data/lib/shopify_api/rest/resources/2022_10/payment_gateway.rb +143 -0
  285. data/lib/shopify_api/rest/resources/2022_10/payment_transaction.rb +107 -0
  286. data/lib/shopify_api/rest/resources/2022_10/payout.rb +97 -0
  287. data/lib/shopify_api/rest/resources/2022_10/policy.rb +69 -0
  288. data/lib/shopify_api/rest/resources/2022_10/price_rule.rb +223 -0
  289. data/lib/shopify_api/rest/resources/2022_10/product.rb +223 -0
  290. data/lib/shopify_api/rest/resources/2022_10/product_listing.rb +196 -0
  291. data/lib/shopify_api/rest/resources/2022_10/product_resource_feedback.rb +88 -0
  292. data/lib/shopify_api/rest/resources/2022_10/province.rb +132 -0
  293. data/lib/shopify_api/rest/resources/2022_10/recurring_application_charge.rb +172 -0
  294. data/lib/shopify_api/rest/resources/2022_10/redirect.rb +139 -0
  295. data/lib/shopify_api/rest/resources/2022_10/refund.rb +151 -0
  296. data/lib/shopify_api/rest/resources/2022_10/report.rb +121 -0
  297. data/lib/shopify_api/rest/resources/2022_10/resource_feedback.rb +73 -0
  298. data/lib/shopify_api/rest/resources/2022_10/script_tag.rb +155 -0
  299. data/lib/shopify_api/rest/resources/2022_10/shipping_zone.rb +83 -0
  300. data/lib/shopify_api/rest/resources/2022_10/shop.rb +221 -0
  301. data/lib/shopify_api/rest/resources/2022_10/smart_collection.rb +216 -0
  302. data/lib/shopify_api/rest/resources/2022_10/storefront_access_token.rb +87 -0
  303. data/lib/shopify_api/rest/resources/2022_10/tender_transaction.rb +93 -0
  304. data/lib/shopify_api/rest/resources/2022_10/theme.rb +123 -0
  305. data/lib/shopify_api/rest/resources/2022_10/transaction.rb +181 -0
  306. data/lib/shopify_api/rest/resources/2022_10/usage_charge.rb +102 -0
  307. data/lib/shopify_api/rest/resources/2022_10/user.rb +138 -0
  308. data/lib/shopify_api/rest/resources/2022_10/variant.rb +212 -0
  309. data/lib/shopify_api/rest/resources/2022_10/webhook.rb +168 -0
  310. data/lib/shopify_api/rest/resources/2023_01/abandoned_checkout.rb +190 -0
  311. data/lib/shopify_api/rest/resources/2023_01/access_scope.rb +58 -0
  312. data/lib/shopify_api/rest/resources/2023_01/apple_pay_certificate.rb +105 -0
  313. data/lib/shopify_api/rest/resources/2023_01/application_charge.rb +109 -0
  314. data/lib/shopify_api/rest/resources/2023_01/application_credit.rb +92 -0
  315. data/lib/shopify_api/rest/resources/2023_01/article.rb +265 -0
  316. data/lib/shopify_api/rest/resources/2023_01/asset.rb +118 -0
  317. data/lib/shopify_api/rest/resources/2023_01/assigned_fulfillment_order.rb +86 -0
  318. data/lib/shopify_api/rest/resources/2023_01/balance.rb +50 -0
  319. data/lib/shopify_api/rest/resources/2023_01/blog.rb +162 -0
  320. data/lib/shopify_api/rest/resources/2023_01/cancellation_request.rb +83 -0
  321. data/lib/shopify_api/rest/resources/2023_01/carrier_service.rb +116 -0
  322. data/lib/shopify_api/rest/resources/2023_01/checkout.rb +209 -0
  323. data/lib/shopify_api/rest/resources/2023_01/collect.rb +142 -0
  324. data/lib/shopify_api/rest/resources/2023_01/collection.rb +110 -0
  325. data/lib/shopify_api/rest/resources/2023_01/collection_listing.rb +155 -0
  326. data/lib/shopify_api/rest/resources/2023_01/comment.rb +283 -0
  327. data/lib/shopify_api/rest/resources/2023_01/country.rb +137 -0
  328. data/lib/shopify_api/rest/resources/2023_01/currency.rb +57 -0
  329. data/lib/shopify_api/rest/resources/2023_01/custom_collection.rb +187 -0
  330. data/lib/shopify_api/rest/resources/2023_01/customer.rb +329 -0
  331. data/lib/shopify_api/rest/resources/2023_01/customer_address.rb +201 -0
  332. data/lib/shopify_api/rest/resources/2023_01/customer_saved_search.rb +169 -0
  333. data/lib/shopify_api/rest/resources/2023_01/deprecated_api_call.rb +57 -0
  334. data/lib/shopify_api/rest/resources/2023_01/discount_code.rb +222 -0
  335. data/lib/shopify_api/rest/resources/2023_01/dispute.rb +111 -0
  336. data/lib/shopify_api/rest/resources/2023_01/dispute_evidence.rb +117 -0
  337. data/lib/shopify_api/rest/resources/2023_01/dispute_file_upload.rb +81 -0
  338. data/lib/shopify_api/rest/resources/2023_01/draft_order.rb +275 -0
  339. data/lib/shopify_api/rest/resources/2023_01/event.rb +148 -0
  340. data/lib/shopify_api/rest/resources/2023_01/fulfillment.rb +231 -0
  341. data/lib/shopify_api/rest/resources/2023_01/fulfillment_event.rb +166 -0
  342. data/lib/shopify_api/rest/resources/2023_01/fulfillment_order.rb +312 -0
  343. data/lib/shopify_api/rest/resources/2023_01/fulfillment_request.rb +87 -0
  344. data/lib/shopify_api/rest/resources/2023_01/fulfillment_service.rb +130 -0
  345. data/lib/shopify_api/rest/resources/2023_01/gift_card.rb +218 -0
  346. data/lib/shopify_api/rest/resources/2023_01/gift_card_adjustment.rb +118 -0
  347. data/lib/shopify_api/rest/resources/2023_01/image.rb +157 -0
  348. data/lib/shopify_api/rest/resources/2023_01/inventory_item.rb +108 -0
  349. data/lib/shopify_api/rest/resources/2023_01/inventory_level.rb +179 -0
  350. data/lib/shopify_api/rest/resources/2023_01/location.rb +167 -0
  351. data/lib/shopify_api/rest/resources/2023_01/locations_for_move.rb +56 -0
  352. data/lib/shopify_api/rest/resources/2023_01/marketing_event.rb +209 -0
  353. data/lib/shopify_api/rest/resources/2023_01/metafield.rb +344 -0
  354. data/lib/shopify_api/rest/resources/2023_01/mobile_platform_application.rb +110 -0
  355. data/lib/shopify_api/rest/resources/2023_01/order.rb +479 -0
  356. data/lib/shopify_api/rest/resources/2023_01/order_risk.rb +142 -0
  357. data/lib/shopify_api/rest/resources/2023_01/page.rb +194 -0
  358. data/lib/shopify_api/rest/resources/2023_01/payment.rb +140 -0
  359. data/lib/shopify_api/rest/resources/2023_01/payment_gateway.rb +143 -0
  360. data/lib/shopify_api/rest/resources/2023_01/payment_transaction.rb +107 -0
  361. data/lib/shopify_api/rest/resources/2023_01/payout.rb +97 -0
  362. data/lib/shopify_api/rest/resources/2023_01/policy.rb +69 -0
  363. data/lib/shopify_api/rest/resources/2023_01/price_rule.rb +223 -0
  364. data/lib/shopify_api/rest/resources/2023_01/product.rb +223 -0
  365. data/lib/shopify_api/rest/resources/2023_01/product_listing.rb +196 -0
  366. data/lib/shopify_api/rest/resources/2023_01/product_resource_feedback.rb +88 -0
  367. data/lib/shopify_api/rest/resources/2023_01/province.rb +132 -0
  368. data/lib/shopify_api/rest/resources/2023_01/recurring_application_charge.rb +172 -0
  369. data/lib/shopify_api/rest/resources/2023_01/redirect.rb +139 -0
  370. data/lib/shopify_api/rest/resources/2023_01/refund.rb +151 -0
  371. data/lib/shopify_api/rest/resources/2023_01/report.rb +121 -0
  372. data/lib/shopify_api/rest/resources/2023_01/resource_feedback.rb +73 -0
  373. data/lib/shopify_api/rest/resources/2023_01/script_tag.rb +155 -0
  374. data/lib/shopify_api/rest/resources/2023_01/shipping_zone.rb +83 -0
  375. data/lib/shopify_api/rest/resources/2023_01/shop.rb +221 -0
  376. data/lib/shopify_api/rest/resources/2023_01/smart_collection.rb +216 -0
  377. data/lib/shopify_api/rest/resources/2023_01/storefront_access_token.rb +87 -0
  378. data/lib/shopify_api/rest/resources/2023_01/tender_transaction.rb +93 -0
  379. data/lib/shopify_api/rest/resources/2023_01/theme.rb +123 -0
  380. data/lib/shopify_api/rest/resources/2023_01/transaction.rb +181 -0
  381. data/lib/shopify_api/rest/resources/2023_01/usage_charge.rb +102 -0
  382. data/lib/shopify_api/rest/resources/2023_01/user.rb +138 -0
  383. data/lib/shopify_api/rest/resources/2023_01/variant.rb +212 -0
  384. data/lib/shopify_api/rest/resources/2023_01/webhook.rb +168 -0
  385. data/lib/shopify_api/rest/resources/2023_04/abandoned_checkout.rb +190 -0
  386. data/lib/shopify_api/rest/resources/2023_04/access_scope.rb +58 -0
  387. data/lib/shopify_api/rest/resources/2023_04/apple_pay_certificate.rb +105 -0
  388. data/lib/shopify_api/rest/resources/2023_04/application_charge.rb +109 -0
  389. data/lib/shopify_api/rest/resources/2023_04/application_credit.rb +92 -0
  390. data/lib/shopify_api/rest/resources/2023_04/article.rb +265 -0
  391. data/lib/shopify_api/rest/resources/2023_04/asset.rb +118 -0
  392. data/lib/shopify_api/rest/resources/2023_04/assigned_fulfillment_order.rb +86 -0
  393. data/lib/shopify_api/rest/resources/2023_04/balance.rb +50 -0
  394. data/lib/shopify_api/rest/resources/2023_04/blog.rb +162 -0
  395. data/lib/shopify_api/rest/resources/2023_04/cancellation_request.rb +83 -0
  396. data/lib/shopify_api/rest/resources/2023_04/carrier_service.rb +116 -0
  397. data/lib/shopify_api/rest/resources/2023_04/checkout.rb +209 -0
  398. data/lib/shopify_api/rest/resources/2023_04/collect.rb +142 -0
  399. data/lib/shopify_api/rest/resources/2023_04/collection.rb +110 -0
  400. data/lib/shopify_api/rest/resources/2023_04/collection_listing.rb +155 -0
  401. data/lib/shopify_api/rest/resources/2023_04/comment.rb +283 -0
  402. data/lib/shopify_api/rest/resources/2023_04/country.rb +137 -0
  403. data/lib/shopify_api/rest/resources/2023_04/currency.rb +57 -0
  404. data/lib/shopify_api/rest/resources/2023_04/custom_collection.rb +187 -0
  405. data/lib/shopify_api/rest/resources/2023_04/customer.rb +329 -0
  406. data/lib/shopify_api/rest/resources/2023_04/customer_address.rb +201 -0
  407. data/lib/shopify_api/rest/resources/2023_04/customer_saved_search.rb +169 -0
  408. data/lib/shopify_api/rest/resources/2023_04/deprecated_api_call.rb +57 -0
  409. data/lib/shopify_api/rest/resources/2023_04/discount_code.rb +222 -0
  410. data/lib/shopify_api/rest/resources/2023_04/dispute.rb +111 -0
  411. data/lib/shopify_api/rest/resources/2023_04/dispute_evidence.rb +117 -0
  412. data/lib/shopify_api/rest/resources/2023_04/dispute_file_upload.rb +81 -0
  413. data/lib/shopify_api/rest/resources/2023_04/draft_order.rb +275 -0
  414. data/lib/shopify_api/rest/resources/2023_04/event.rb +148 -0
  415. data/lib/shopify_api/rest/resources/2023_04/fulfillment.rb +231 -0
  416. data/lib/shopify_api/rest/resources/2023_04/fulfillment_event.rb +166 -0
  417. data/lib/shopify_api/rest/resources/2023_04/fulfillment_order.rb +312 -0
  418. data/lib/shopify_api/rest/resources/2023_04/fulfillment_request.rb +87 -0
  419. data/lib/shopify_api/rest/resources/2023_04/fulfillment_service.rb +130 -0
  420. data/lib/shopify_api/rest/resources/2023_04/gift_card.rb +218 -0
  421. data/lib/shopify_api/rest/resources/2023_04/gift_card_adjustment.rb +118 -0
  422. data/lib/shopify_api/rest/resources/2023_04/image.rb +157 -0
  423. data/lib/shopify_api/rest/resources/2023_04/inventory_item.rb +108 -0
  424. data/lib/shopify_api/rest/resources/2023_04/inventory_level.rb +179 -0
  425. data/lib/shopify_api/rest/resources/2023_04/location.rb +167 -0
  426. data/lib/shopify_api/rest/resources/2023_04/locations_for_move.rb +56 -0
  427. data/lib/shopify_api/rest/resources/2023_04/marketing_event.rb +209 -0
  428. data/lib/shopify_api/rest/resources/2023_04/metafield.rb +344 -0
  429. data/lib/shopify_api/rest/resources/2023_04/mobile_platform_application.rb +110 -0
  430. data/lib/shopify_api/rest/resources/2023_04/order.rb +485 -0
  431. data/lib/shopify_api/rest/resources/2023_04/order_risk.rb +142 -0
  432. data/lib/shopify_api/rest/resources/2023_04/page.rb +194 -0
  433. data/lib/shopify_api/rest/resources/2023_04/payment.rb +140 -0
  434. data/lib/shopify_api/rest/resources/2023_04/payment_gateway.rb +143 -0
  435. data/lib/shopify_api/rest/resources/2023_04/payment_transaction.rb +107 -0
  436. data/lib/shopify_api/rest/resources/2023_04/payout.rb +97 -0
  437. data/lib/shopify_api/rest/resources/2023_04/policy.rb +69 -0
  438. data/lib/shopify_api/rest/resources/2023_04/price_rule.rb +223 -0
  439. data/lib/shopify_api/rest/resources/2023_04/product.rb +223 -0
  440. data/lib/shopify_api/rest/resources/2023_04/product_listing.rb +196 -0
  441. data/lib/shopify_api/rest/resources/2023_04/product_resource_feedback.rb +88 -0
  442. data/lib/shopify_api/rest/resources/2023_04/province.rb +132 -0
  443. data/lib/shopify_api/rest/resources/2023_04/recurring_application_charge.rb +172 -0
  444. data/lib/shopify_api/rest/resources/2023_04/redirect.rb +139 -0
  445. data/lib/shopify_api/rest/resources/2023_04/refund.rb +151 -0
  446. data/lib/shopify_api/rest/resources/2023_04/report.rb +121 -0
  447. data/lib/shopify_api/rest/resources/2023_04/resource_feedback.rb +73 -0
  448. data/lib/shopify_api/rest/resources/2023_04/script_tag.rb +155 -0
  449. data/lib/shopify_api/rest/resources/2023_04/shipping_zone.rb +83 -0
  450. data/lib/shopify_api/rest/resources/2023_04/shop.rb +221 -0
  451. data/lib/shopify_api/rest/resources/2023_04/smart_collection.rb +216 -0
  452. data/lib/shopify_api/rest/resources/2023_04/storefront_access_token.rb +87 -0
  453. data/lib/shopify_api/rest/resources/2023_04/tender_transaction.rb +93 -0
  454. data/lib/shopify_api/rest/resources/2023_04/theme.rb +123 -0
  455. data/lib/shopify_api/rest/resources/2023_04/transaction.rb +184 -0
  456. data/lib/shopify_api/rest/resources/2023_04/usage_charge.rb +102 -0
  457. data/lib/shopify_api/rest/resources/2023_04/user.rb +138 -0
  458. data/lib/shopify_api/rest/resources/2023_04/variant.rb +212 -0
  459. data/lib/shopify_api/rest/resources/2023_04/webhook.rb +168 -0
  460. data/lib/shopify_api/rest/resources/2023_07/abandoned_checkout.rb +190 -0
  461. data/lib/shopify_api/rest/resources/2023_07/access_scope.rb +58 -0
  462. data/lib/shopify_api/rest/resources/2023_07/apple_pay_certificate.rb +105 -0
  463. data/lib/shopify_api/rest/resources/2023_07/application_charge.rb +109 -0
  464. data/lib/shopify_api/rest/resources/2023_07/application_credit.rb +91 -0
  465. data/lib/shopify_api/rest/resources/2023_07/article.rb +265 -0
  466. data/lib/shopify_api/rest/resources/2023_07/asset.rb +118 -0
  467. data/lib/shopify_api/rest/resources/2023_07/assigned_fulfillment_order.rb +86 -0
  468. data/lib/shopify_api/rest/resources/2023_07/balance.rb +50 -0
  469. data/lib/shopify_api/rest/resources/2023_07/blog.rb +162 -0
  470. data/lib/shopify_api/rest/resources/2023_07/cancellation_request.rb +83 -0
  471. data/lib/shopify_api/rest/resources/2023_07/carrier_service.rb +116 -0
  472. data/lib/shopify_api/rest/resources/2023_07/checkout.rb +209 -0
  473. data/lib/shopify_api/rest/resources/2023_07/collect.rb +142 -0
  474. data/lib/shopify_api/rest/resources/2023_07/collection.rb +110 -0
  475. data/lib/shopify_api/rest/resources/2023_07/collection_listing.rb +155 -0
  476. data/lib/shopify_api/rest/resources/2023_07/comment.rb +283 -0
  477. data/lib/shopify_api/rest/resources/2023_07/country.rb +137 -0
  478. data/lib/shopify_api/rest/resources/2023_07/currency.rb +57 -0
  479. data/lib/shopify_api/rest/resources/2023_07/custom_collection.rb +187 -0
  480. data/lib/shopify_api/rest/resources/2023_07/customer.rb +329 -0
  481. data/lib/shopify_api/rest/resources/2023_07/customer_address.rb +201 -0
  482. data/lib/shopify_api/rest/resources/2023_07/customer_saved_search.rb +169 -0
  483. data/lib/shopify_api/rest/resources/2023_07/deprecated_api_call.rb +57 -0
  484. data/lib/shopify_api/rest/resources/2023_07/discount_code.rb +222 -0
  485. data/lib/shopify_api/rest/resources/2023_07/dispute.rb +111 -0
  486. data/lib/shopify_api/rest/resources/2023_07/dispute_evidence.rb +117 -0
  487. data/lib/shopify_api/rest/resources/2023_07/dispute_file_upload.rb +81 -0
  488. data/lib/shopify_api/rest/resources/2023_07/draft_order.rb +275 -0
  489. data/lib/shopify_api/rest/resources/2023_07/event.rb +148 -0
  490. data/lib/shopify_api/rest/resources/2023_07/fulfillment.rb +231 -0
  491. data/lib/shopify_api/rest/resources/2023_07/fulfillment_event.rb +166 -0
  492. data/lib/shopify_api/rest/resources/2023_07/fulfillment_order.rb +312 -0
  493. data/lib/shopify_api/rest/resources/2023_07/fulfillment_request.rb +87 -0
  494. data/lib/shopify_api/rest/resources/2023_07/fulfillment_service.rb +130 -0
  495. data/lib/shopify_api/rest/resources/2023_07/gift_card.rb +218 -0
  496. data/lib/shopify_api/rest/resources/2023_07/gift_card_adjustment.rb +118 -0
  497. data/lib/shopify_api/rest/resources/2023_07/image.rb +157 -0
  498. data/lib/shopify_api/rest/resources/2023_07/inventory_item.rb +108 -0
  499. data/lib/shopify_api/rest/resources/2023_07/inventory_level.rb +179 -0
  500. data/lib/shopify_api/rest/resources/2023_07/location.rb +167 -0
  501. data/lib/shopify_api/rest/resources/2023_07/locations_for_move.rb +56 -0
  502. data/lib/shopify_api/rest/resources/2023_07/marketing_event.rb +209 -0
  503. data/lib/shopify_api/rest/resources/2023_07/metafield.rb +344 -0
  504. data/lib/shopify_api/rest/resources/2023_07/mobile_platform_application.rb +110 -0
  505. data/lib/shopify_api/rest/resources/2023_07/order.rb +488 -0
  506. data/lib/shopify_api/rest/resources/2023_07/order_risk.rb +142 -0
  507. data/lib/shopify_api/rest/resources/2023_07/page.rb +194 -0
  508. data/lib/shopify_api/rest/resources/2023_07/payment.rb +140 -0
  509. data/lib/shopify_api/rest/resources/2023_07/payment_gateway.rb +143 -0
  510. data/lib/shopify_api/rest/resources/2023_07/payment_transaction.rb +107 -0
  511. data/lib/shopify_api/rest/resources/2023_07/payout.rb +97 -0
  512. data/lib/shopify_api/rest/resources/2023_07/policy.rb +69 -0
  513. data/lib/shopify_api/rest/resources/2023_07/price_rule.rb +223 -0
  514. data/lib/shopify_api/rest/resources/2023_07/product.rb +223 -0
  515. data/lib/shopify_api/rest/resources/2023_07/product_listing.rb +196 -0
  516. data/lib/shopify_api/rest/resources/2023_07/product_resource_feedback.rb +88 -0
  517. data/lib/shopify_api/rest/resources/2023_07/province.rb +132 -0
  518. data/lib/shopify_api/rest/resources/2023_07/recurring_application_charge.rb +172 -0
  519. data/lib/shopify_api/rest/resources/2023_07/redirect.rb +139 -0
  520. data/lib/shopify_api/rest/resources/2023_07/refund.rb +151 -0
  521. data/lib/shopify_api/rest/resources/2023_07/resource_feedback.rb +73 -0
  522. data/lib/shopify_api/rest/resources/2023_07/script_tag.rb +155 -0
  523. data/lib/shopify_api/rest/resources/2023_07/shipping_zone.rb +83 -0
  524. data/lib/shopify_api/rest/resources/2023_07/shop.rb +221 -0
  525. data/lib/shopify_api/rest/resources/2023_07/smart_collection.rb +216 -0
  526. data/lib/shopify_api/rest/resources/2023_07/storefront_access_token.rb +87 -0
  527. data/lib/shopify_api/rest/resources/2023_07/tender_transaction.rb +93 -0
  528. data/lib/shopify_api/rest/resources/2023_07/theme.rb +123 -0
  529. data/lib/shopify_api/rest/resources/2023_07/transaction.rb +184 -0
  530. data/lib/shopify_api/rest/resources/2023_07/usage_charge.rb +102 -0
  531. data/lib/shopify_api/rest/resources/2023_07/user.rb +138 -0
  532. data/lib/shopify_api/rest/resources/2023_07/variant.rb +212 -0
  533. data/lib/shopify_api/rest/resources/2023_07/webhook.rb +168 -0
  534. data/lib/shopify_api/utils/graphql_proxy.rb +49 -0
  535. data/lib/shopify_api/utils/hmac_validator.rb +44 -0
  536. data/lib/shopify_api/utils/http_utils.rb +17 -0
  537. data/lib/shopify_api/utils/session_utils.rb +68 -0
  538. data/lib/shopify_api/utils/verifiable_query.rb +18 -0
  539. data/lib/shopify_api/version.rb +3 -1
  540. data/lib/shopify_api/webhooks/handler.rb +15 -0
  541. data/lib/shopify_api/webhooks/register_result.rb +14 -0
  542. data/lib/shopify_api/webhooks/registration.rb +73 -0
  543. data/lib/shopify_api/webhooks/registrations/event_bridge.rb +61 -0
  544. data/lib/shopify_api/webhooks/registrations/http.rb +72 -0
  545. data/lib/shopify_api/webhooks/registrations/pub_sub.rb +65 -0
  546. data/lib/shopify_api/webhooks/registry.rb +215 -0
  547. data/lib/shopify_api/webhooks/request.rb +56 -0
  548. data/lib/shopify_api.rb +18 -40
  549. data/service.yml +0 -4
  550. data/shipit.rubygems.yml +1 -1
  551. data/shopify_api.gemspec +30 -23
  552. data/sorbet/config +3 -0
  553. data/sorbet/rbi/gems/activesupport@7.0.1.rbi +654 -0
  554. data/sorbet/rbi/gems/addressable@2.8.0.rbi +290 -0
  555. data/sorbet/rbi/gems/ast@2.4.2.rbi +54 -0
  556. data/sorbet/rbi/gems/coderay@1.1.3.rbi +8 -0
  557. data/sorbet/rbi/gems/concurrent-ruby@1.1.9.rbi +2401 -0
  558. data/sorbet/rbi/gems/crack@0.4.5.rbi +57 -0
  559. data/sorbet/rbi/gems/diff-lcs@1.5.0.rbi +185 -0
  560. data/sorbet/rbi/gems/fakefs@1.4.1.rbi +571 -0
  561. data/sorbet/rbi/gems/hash_diff@1.0.0.rbi +47 -0
  562. data/sorbet/rbi/gems/hashdiff@1.0.1.rbi +82 -0
  563. data/sorbet/rbi/gems/httparty@0.20.0.rbi +573 -0
  564. data/sorbet/rbi/gems/i18n@1.8.11.rbi +25 -0
  565. data/sorbet/rbi/gems/jwt@2.3.0.rbi +437 -0
  566. data/sorbet/rbi/gems/method_source@1.0.0.rbi +8 -0
  567. data/sorbet/rbi/gems/mime-types-data@3.2022.0105.rbi +73 -0
  568. data/sorbet/rbi/gems/mime-types@3.4.1.rbi +295 -0
  569. data/sorbet/rbi/gems/minitest@5.15.0.rbi +541 -0
  570. data/sorbet/rbi/gems/mocha@1.13.0.rbi +986 -0
  571. data/sorbet/rbi/gems/multi_xml@0.6.0.rbi +36 -0
  572. data/sorbet/rbi/gems/oj@3.13.11.rbi +274 -0
  573. data/sorbet/rbi/gems/openssl@3.0.0.rbi +581 -0
  574. data/sorbet/rbi/gems/parallel@1.21.0.rbi +113 -0
  575. data/sorbet/rbi/gems/parser@3.1.0.0.rbi +1741 -0
  576. data/sorbet/rbi/gems/pry@0.14.1.rbi +8 -0
  577. data/sorbet/rbi/gems/public_suffix@4.0.6.rbi +145 -0
  578. data/sorbet/rbi/gems/rainbow@3.1.1.rbi +157 -0
  579. data/sorbet/rbi/gems/rake@13.0.6.rbi +814 -0
  580. data/sorbet/rbi/gems/rbi@0.0.11.rbi +1646 -0
  581. data/sorbet/rbi/gems/regexp_parser@2.2.0.rbi +1130 -0
  582. data/sorbet/rbi/gems/rexml@3.2.5.rbi +709 -0
  583. data/sorbet/rbi/gems/rubocop-ast@1.15.1.rbi +1921 -0
  584. data/sorbet/rbi/gems/rubocop-shopify@2.4.0.rbi +8 -0
  585. data/sorbet/rbi/gems/rubocop-sorbet@0.6.5.rbi +295 -0
  586. data/sorbet/rbi/gems/rubocop@1.25.1.rbi +13507 -0
  587. data/sorbet/rbi/gems/ruby-progressbar@1.11.0.rbi +405 -0
  588. data/sorbet/rbi/gems/securerandom@0.1.1.rbi +10 -0
  589. data/sorbet/rbi/gems/spoom@1.1.8.rbi +1252 -0
  590. data/sorbet/rbi/gems/tapioca@0.6.3.rbi +1238 -0
  591. data/sorbet/rbi/gems/thor@1.2.1.rbi +844 -0
  592. data/sorbet/rbi/gems/tzinfo@2.0.4.rbi +858 -0
  593. data/sorbet/rbi/gems/unicode-display_width@2.1.0.rbi +26 -0
  594. data/sorbet/rbi/gems/unparser@0.6.3.rbi +1816 -0
  595. data/sorbet/rbi/gems/webmock@3.14.0.rbi +683 -0
  596. data/sorbet/rbi/gems/webrick@1.7.0.rbi +601 -0
  597. data/sorbet/rbi/gems/yard-sorbet@0.6.1.rbi +199 -0
  598. data/sorbet/rbi/gems/yard@0.9.27.rbi +4145 -0
  599. data/sorbet/rbi/gems/zeitwerk@2.5.4.rbi +200 -0
  600. data/sorbet/rbi/shims/fakefs.rbi +1 -0
  601. data/sorbet/rbi/shims/openssl.rb +3 -0
  602. data/sorbet/rbi/todo.rbi +8 -0
  603. data/sorbet/tapioca/config.yml +4 -0
  604. data/sorbet/tapioca/require.rb +20 -0
  605. metadata +710 -360
  606. data/.document +0 -5
  607. data/.github/ISSUE_TEMPLATE.md +0 -36
  608. data/.github/probots.yml +0 -2
  609. data/.gitignore +0 -14
  610. data/.rubocop_todo.yml +0 -75
  611. data/CONTRIBUTORS +0 -3
  612. data/Gemfile_ar41 +0 -5
  613. data/Gemfile_ar50 +0 -5
  614. data/Gemfile_ar51 +0 -5
  615. data/Gemfile_ar60 +0 -5
  616. data/Gemfile_ar_main +0 -5
  617. data/RELEASING +0 -17
  618. data/docker-compose.yml +0 -13
  619. data/docs/_config.yml +0 -1
  620. data/docs/_includes/footer.html +0 -28
  621. data/docs/_includes/head.html +0 -28
  622. data/docs/_layouts/index.html +0 -57
  623. data/docs/graphql.md +0 -241
  624. data/docs/index.md +0 -639
  625. data/lib/active_resource/connection_ext.rb +0 -11
  626. data/lib/active_resource/detailed_log_subscriber.rb +0 -55
  627. data/lib/active_resource/json_errors.rb +0 -37
  628. data/lib/shopify_api/api_access.rb +0 -57
  629. data/lib/shopify_api/api_version.rb +0 -206
  630. data/lib/shopify_api/connection.rb +0 -36
  631. data/lib/shopify_api/countable.rb +0 -15
  632. data/lib/shopify_api/disable_prefix_check.rb +0 -31
  633. data/lib/shopify_api/events.rb +0 -8
  634. data/lib/shopify_api/graphql/http_client.rb +0 -22
  635. data/lib/shopify_api/graphql/railtie.rb +0 -17
  636. data/lib/shopify_api/graphql/task.rake +0 -100
  637. data/lib/shopify_api/graphql.rb +0 -103
  638. data/lib/shopify_api/hmac_params.rb +0 -33
  639. data/lib/shopify_api/limits.rb +0 -77
  640. data/lib/shopify_api/message_enricher.rb +0 -25
  641. data/lib/shopify_api/meta.rb +0 -14
  642. data/lib/shopify_api/metafields.rb +0 -21
  643. data/lib/shopify_api/paginated_collection.rb +0 -69
  644. data/lib/shopify_api/pagination_link_headers.rb +0 -34
  645. data/lib/shopify_api/resources/abandoned_checkout.rb +0 -7
  646. data/lib/shopify_api/resources/access_scope.rb +0 -10
  647. data/lib/shopify_api/resources/access_token.rb +0 -9
  648. data/lib/shopify_api/resources/address.rb +0 -5
  649. data/lib/shopify_api/resources/announcement.rb +0 -5
  650. data/lib/shopify_api/resources/api_permission.rb +0 -9
  651. data/lib/shopify_api/resources/application_charge.rb +0 -16
  652. data/lib/shopify_api/resources/application_credit.rb +0 -5
  653. data/lib/shopify_api/resources/array_base.rb +0 -13
  654. data/lib/shopify_api/resources/article.rb +0 -22
  655. data/lib/shopify_api/resources/asset.rb +0 -101
  656. data/lib/shopify_api/resources/assigned_fulfillment_order.rb +0 -16
  657. data/lib/shopify_api/resources/base.rb +0 -166
  658. data/lib/shopify_api/resources/billing_address.rb +0 -5
  659. data/lib/shopify_api/resources/blog.rb +0 -11
  660. data/lib/shopify_api/resources/carrier_service.rb +0 -5
  661. data/lib/shopify_api/resources/cart.rb +0 -5
  662. data/lib/shopify_api/resources/checkout.rb +0 -30
  663. data/lib/shopify_api/resources/collect.rb +0 -7
  664. data/lib/shopify_api/resources/collection.rb +0 -14
  665. data/lib/shopify_api/resources/collection_listing.rb +0 -19
  666. data/lib/shopify_api/resources/collection_publication.rb +0 -10
  667. data/lib/shopify_api/resources/comment.rb +0 -24
  668. data/lib/shopify_api/resources/country.rb +0 -5
  669. data/lib/shopify_api/resources/currency.rb +0 -6
  670. data/lib/shopify_api/resources/custom_collection.rb +0 -20
  671. data/lib/shopify_api/resources/customer.rb +0 -30
  672. data/lib/shopify_api/resources/customer_group.rb +0 -6
  673. data/lib/shopify_api/resources/customer_invite.rb +0 -5
  674. data/lib/shopify_api/resources/customer_saved_search.rb +0 -12
  675. data/lib/shopify_api/resources/discount_code.rb +0 -10
  676. data/lib/shopify_api/resources/discount_code_batch.rb +0 -34
  677. data/lib/shopify_api/resources/draft_order.rb +0 -15
  678. data/lib/shopify_api/resources/draft_order_invoice.rb +0 -5
  679. data/lib/shopify_api/resources/event.rb +0 -9
  680. data/lib/shopify_api/resources/fulfillment.rb +0 -56
  681. data/lib/shopify_api/resources/fulfillment_event.rb +0 -16
  682. data/lib/shopify_api/resources/fulfillment_order.rb +0 -151
  683. data/lib/shopify_api/resources/fulfillment_order_locations_for_move.rb +0 -5
  684. data/lib/shopify_api/resources/fulfillment_request.rb +0 -16
  685. data/lib/shopify_api/resources/fulfillment_service.rb +0 -5
  686. data/lib/shopify_api/resources/fulfillment_v2.rb +0 -21
  687. data/lib/shopify_api/resources/gift_card.rb +0 -8
  688. data/lib/shopify_api/resources/image.rb +0 -17
  689. data/lib/shopify_api/resources/inventory_item.rb +0 -6
  690. data/lib/shopify_api/resources/inventory_level.rb +0 -54
  691. data/lib/shopify_api/resources/line_item.rb +0 -15
  692. data/lib/shopify_api/resources/location.rb +0 -8
  693. data/lib/shopify_api/resources/marketing_event.rb +0 -11
  694. data/lib/shopify_api/resources/metafield.rb +0 -14
  695. data/lib/shopify_api/resources/note_attribute.rb +0 -5
  696. data/lib/shopify_api/resources/option.rb +0 -5
  697. data/lib/shopify_api/resources/order.rb +0 -44
  698. data/lib/shopify_api/resources/order_risk.rb +0 -9
  699. data/lib/shopify_api/resources/page.rb +0 -7
  700. data/lib/shopify_api/resources/payment.rb +0 -7
  701. data/lib/shopify_api/resources/payment_details.rb +0 -5
  702. data/lib/shopify_api/resources/ping.rb +0 -3
  703. data/lib/shopify_api/resources/policy.rb +0 -8
  704. data/lib/shopify_api/resources/price_rule.rb +0 -8
  705. data/lib/shopify_api/resources/product.rb +0 -59
  706. data/lib/shopify_api/resources/product_listing.rb +0 -17
  707. data/lib/shopify_api/resources/product_publication.rb +0 -10
  708. data/lib/shopify_api/resources/province.rb +0 -6
  709. data/lib/shopify_api/resources/publication.rb +0 -5
  710. data/lib/shopify_api/resources/receipt.rb +0 -5
  711. data/lib/shopify_api/resources/recurring_application_charge.rb +0 -34
  712. data/lib/shopify_api/resources/redirect.rb +0 -5
  713. data/lib/shopify_api/resources/refund.rb +0 -15
  714. data/lib/shopify_api/resources/report.rb +0 -5
  715. data/lib/shopify_api/resources/resource_feedback.rb +0 -19
  716. data/lib/shopify_api/resources/rule.rb +0 -5
  717. data/lib/shopify_api/resources/script_tag.rb +0 -5
  718. data/lib/shopify_api/resources/shipping_address.rb +0 -5
  719. data/lib/shopify_api/resources/shipping_line.rb +0 -5
  720. data/lib/shopify_api/resources/shipping_rate.rb +0 -7
  721. data/lib/shopify_api/resources/shipping_zone.rb +0 -5
  722. data/lib/shopify_api/resources/shop.rb +0 -26
  723. data/lib/shopify_api/resources/smart_collection.rb +0 -15
  724. data/lib/shopify_api/resources/storefront_access_token.rb +0 -5
  725. data/lib/shopify_api/resources/tax_line.rb +0 -5
  726. data/lib/shopify_api/resources/tax_service.rb +0 -5
  727. data/lib/shopify_api/resources/tender_transaction.rb +0 -6
  728. data/lib/shopify_api/resources/theme.rb +0 -5
  729. data/lib/shopify_api/resources/transaction.rb +0 -6
  730. data/lib/shopify_api/resources/usage_charge.rb +0 -6
  731. data/lib/shopify_api/resources/user.rb +0 -5
  732. data/lib/shopify_api/resources/variant.rb +0 -43
  733. data/lib/shopify_api/resources/webhook.rb +0 -5
  734. data/lib/shopify_api/resources.rb +0 -4
  735. data/lib/shopify_api/session.rb +0 -203
  736. data/lib/verify_docs.rb +0 -8
  737. data/test/abandoned_checkouts_test.rb +0 -29
  738. data/test/access_scope_test.rb +0 -23
  739. data/test/access_token_test.rb +0 -20
  740. data/test/active_resource/json_errors_test.rb +0 -19
  741. data/test/api_access_test.rb +0 -153
  742. data/test/api_permission_test.rb +0 -9
  743. data/test/api_version_test.rb +0 -157
  744. data/test/application_charge_test.rb +0 -82
  745. data/test/application_credit_test.rb +0 -36
  746. data/test/article_test.rb +0 -72
  747. data/test/asset_test.rb +0 -26
  748. data/test/assigned_fulfillment_order_test.rb +0 -78
  749. data/test/base_test.rb +0 -213
  750. data/test/blog_test.rb +0 -9
  751. data/test/carrier_service_test.rb +0 -18
  752. data/test/cart_test.rb +0 -14
  753. data/test/checkouts_test.rb +0 -77
  754. data/test/collect_test.rb +0 -10
  755. data/test/collection_listing_test.rb +0 -84
  756. data/test/collection_publication_test.rb +0 -40
  757. data/test/collection_test.rb +0 -50
  758. data/test/countable_test.rb +0 -14
  759. data/test/currency_test.rb +0 -21
  760. data/test/custom_collection_test.rb +0 -10
  761. data/test/customer_saved_search_test.rb +0 -37
  762. data/test/customer_test.rb +0 -58
  763. data/test/detailed_log_subscriber_test.rb +0 -143
  764. data/test/discount_code_batch_test.rb +0 -41
  765. data/test/discount_code_test.rb +0 -59
  766. data/test/draft_order_test.rb +0 -167
  767. data/test/fixtures/abandoned_checkout.json +0 -184
  768. data/test/fixtures/abandoned_checkouts.json +0 -186
  769. data/test/fixtures/access_scopes.json +0 -10
  770. data/test/fixtures/access_token_delegate.json +0 -4
  771. data/test/fixtures/api_versions.json +0 -38
  772. data/test/fixtures/apis.json +0 -42
  773. data/test/fixtures/application_charge.json +0 -16
  774. data/test/fixtures/application_charges.json +0 -57
  775. data/test/fixtures/application_credit.json +0 -12
  776. data/test/fixtures/application_credits.json +0 -24
  777. data/test/fixtures/article.json +0 -15
  778. data/test/fixtures/articles.json +0 -39
  779. data/test/fixtures/asset.json +0 -9
  780. data/test/fixtures/assets.json +0 -136
  781. data/test/fixtures/assigned_fulfillment_orders.json +0 -80
  782. data/test/fixtures/authors.json +0 -1
  783. data/test/fixtures/blog.json +0 -13
  784. data/test/fixtures/blogs.json +0 -13
  785. data/test/fixtures/carrier_service.json +0 -9
  786. data/test/fixtures/carts.json +0 -43
  787. data/test/fixtures/checkout.json +0 -160
  788. data/test/fixtures/checkouts.json +0 -162
  789. data/test/fixtures/collect.json +0 -12
  790. data/test/fixtures/collection.json +0 -17
  791. data/test/fixtures/collection_listing.json +0 -11
  792. data/test/fixtures/collection_listing_product_ids.json +0 -1
  793. data/test/fixtures/collection_listing_product_ids2.json +0 -1
  794. data/test/fixtures/collection_listings.json +0 -13
  795. data/test/fixtures/collection_products.json +0 -47
  796. data/test/fixtures/collection_publication.json +0 -11
  797. data/test/fixtures/collection_publications.json +0 -13
  798. data/test/fixtures/currencies.json +0 -25
  799. data/test/fixtures/custom_collection.json +0 -17
  800. data/test/fixtures/customer_invite.json +0 -9
  801. data/test/fixtures/customer_saved_search.json +0 -9
  802. data/test/fixtures/customer_saved_search_customers.json +0 -60
  803. data/test/fixtures/customers.json +0 -59
  804. data/test/fixtures/customers_account_activation_url.json +0 -3
  805. data/test/fixtures/customers_search.json +0 -60
  806. data/test/fixtures/discount_code.json +0 -10
  807. data/test/fixtures/discount_code_batch.json +0 -14
  808. data/test/fixtures/discount_code_batch_discount_codes.json +0 -21
  809. data/test/fixtures/discount_codes.json +0 -12
  810. data/test/fixtures/draft_order.json +0 -159
  811. data/test/fixtures/draft_order_completed.json +0 -159
  812. data/test/fixtures/draft_order_invoice.json +0 -9
  813. data/test/fixtures/draft_orders.json +0 -161
  814. data/test/fixtures/engagement.json +0 -15
  815. data/test/fixtures/events.json +0 -31
  816. data/test/fixtures/fulfillment.json +0 -49
  817. data/test/fixtures/fulfillment_event.json +0 -12
  818. data/test/fixtures/fulfillment_order.json +0 -39
  819. data/test/fixtures/fulfillment_order_locations_for_move.json +0 -18
  820. data/test/fixtures/fulfillment_orders.json +0 -80
  821. data/test/fixtures/fulfillment_request.json +0 -28
  822. data/test/fixtures/fulfillment_service.json +0 -10
  823. data/test/fixtures/fulfillments.json +0 -53
  824. data/test/fixtures/gift_card.json +0 -20
  825. data/test/fixtures/gift_card_disabled.json +0 -20
  826. data/test/fixtures/graphql/2019-10.json +0 -1083
  827. data/test/fixtures/graphql/dummy_schema.rb +0 -16
  828. data/test/fixtures/graphql/unstable.json +0 -1083
  829. data/test/fixtures/image.json +0 -10
  830. data/test/fixtures/images.json +0 -20
  831. data/test/fixtures/inventory_level.json +0 -7
  832. data/test/fixtures/inventory_levels.json +0 -24
  833. data/test/fixtures/marketing_event.json +0 -28
  834. data/test/fixtures/marketing_events.json +0 -54
  835. data/test/fixtures/metafield.json +0 -12
  836. data/test/fixtures/metafields.json +0 -34
  837. data/test/fixtures/order.json +0 -297
  838. data/test/fixtures/order_risk.json +0 -14
  839. data/test/fixtures/order_risks.json +0 -28
  840. data/test/fixtures/order_with_properties.json +0 -373
  841. data/test/fixtures/orders.json +0 -299
  842. data/test/fixtures/payment.json +0 -7
  843. data/test/fixtures/payments.json +0 -9
  844. data/test/fixtures/ping/conversation.json +0 -1
  845. data/test/fixtures/ping/failed_delivery_confirmation.json +0 -1
  846. data/test/fixtures/ping/message.json +0 -1
  847. data/test/fixtures/ping/successful_delivery_confirmation.json +0 -1
  848. data/test/fixtures/policies.json +0 -8
  849. data/test/fixtures/price_rule.json +0 -27
  850. data/test/fixtures/price_rules.json +0 -28
  851. data/test/fixtures/product.json +0 -116
  852. data/test/fixtures/product_listing.json +0 -86
  853. data/test/fixtures/product_listing_product_ids.json +0 -1
  854. data/test/fixtures/product_listing_product_ids2.json +0 -1
  855. data/test/fixtures/product_listings.json +0 -174
  856. data/test/fixtures/product_publication.json +0 -11
  857. data/test/fixtures/product_publications.json +0 -13
  858. data/test/fixtures/publications.json +0 -9
  859. data/test/fixtures/recurring_application_charge.json +0 -22
  860. data/test/fixtures/recurring_application_charge_adjustment.json +0 -5
  861. data/test/fixtures/recurring_application_charges.json +0 -106
  862. data/test/fixtures/redirect.json +0 -7
  863. data/test/fixtures/refund.json +0 -112
  864. data/test/fixtures/report.json +0 -9
  865. data/test/fixtures/reports.json +0 -11
  866. data/test/fixtures/script_tag.json +0 -10
  867. data/test/fixtures/script_tags.json +0 -18
  868. data/test/fixtures/shipping_rates.json +0 -12
  869. data/test/fixtures/shipping_zones.json +0 -315
  870. data/test/fixtures/shop.json +0 -26
  871. data/test/fixtures/smart_collection.json +0 -21
  872. data/test/fixtures/smart_collection_products.json +0 -155
  873. data/test/fixtures/storefront_access_token.json +0 -9
  874. data/test/fixtures/storefront_access_tokens.json +0 -18
  875. data/test/fixtures/tags.json +0 -1
  876. data/test/fixtures/tax_service.json +0 -9
  877. data/test/fixtures/tender_transactions.json +0 -52
  878. data/test/fixtures/transaction.json +0 -29
  879. data/test/fixtures/usage_charge.json +0 -11
  880. data/test/fixtures/usage_charges.json +0 -23
  881. data/test/fixtures/user.json +0 -21
  882. data/test/fixtures/users.json +0 -42
  883. data/test/fixtures/variant.json +0 -23
  884. data/test/fixtures/variants.json +0 -88
  885. data/test/fixtures/webhook.json +0 -10
  886. data/test/fixtures/webhooks.json +0 -18
  887. data/test/fulfillment_event_test.rb +0 -74
  888. data/test/fulfillment_order_test.rb +0 -530
  889. data/test/fulfillment_order_test_helper.rb +0 -8
  890. data/test/fulfillment_request_test.rb +0 -35
  891. data/test/fulfillment_service_test.rb +0 -18
  892. data/test/fulfillment_test.rb +0 -239
  893. data/test/fulfillment_v2_test.rb +0 -66
  894. data/test/gift_card_test.rb +0 -24
  895. data/test/graphql/http_client_test.rb +0 -26
  896. data/test/graphql_test.rb +0 -190
  897. data/test/hmac_params_test.rb +0 -25
  898. data/test/image_test.rb +0 -41
  899. data/test/inventory_level_test.rb +0 -68
  900. data/test/lib/webmock_extensions/last_request.rb +0 -16
  901. data/test/limits_test.rb +0 -39
  902. data/test/location_test.rb +0 -15
  903. data/test/marketing_event_test.rb +0 -68
  904. data/test/message_enricher_test.rb +0 -45
  905. data/test/meta_test.rb +0 -47
  906. data/test/metafield_test.rb +0 -56
  907. data/test/order_risk_test.rb +0 -47
  908. data/test/order_test.rb +0 -140
  909. data/test/pagination_test.rb +0 -290
  910. data/test/payment_test.rb +0 -19
  911. data/test/policy_test.rb +0 -20
  912. data/test/price_rule_test.rb +0 -70
  913. data/test/product_listing_test.rb +0 -97
  914. data/test/product_publication_test.rb +0 -40
  915. data/test/product_test.rb +0 -111
  916. data/test/publication_test.rb +0 -12
  917. data/test/recurring_application_charge_test.rb +0 -204
  918. data/test/redirect_test.rb +0 -10
  919. data/test/refund_test.rb +0 -37
  920. data/test/report_test.rb +0 -37
  921. data/test/resource_feedback_test.rb +0 -43
  922. data/test/script_tag_test.rb +0 -31
  923. data/test/session_test.rb +0 -640
  924. data/test/shipping_rate_test.rb +0 -17
  925. data/test/shipping_zone_test.rb +0 -11
  926. data/test/shop_test.rb +0 -82
  927. data/test/smart_collection_test.rb +0 -11
  928. data/test/storefront_access_token_test.rb +0 -30
  929. data/test/tax_service_test.rb +0 -12
  930. data/test/tender_transaction_test.rb +0 -18
  931. data/test/test_helper.rb +0 -126
  932. data/test/transaction_test.rb +0 -18
  933. data/test/usage_charge_test.rb +0 -25
  934. data/test/user_test.rb +0 -18
  935. data/test/variant_test.rb +0 -73
  936. data/test/webhook_test.rb +0 -24
data/RELEASING.md ADDED
@@ -0,0 +1,19 @@
1
+ # Releasing ShopifyAPI
2
+
3
+ 1. Before releasing, make sure `sorbet` and related gems are up to date:
4
+ `bundle update sorbet sorbet-runtime sorbet-static tapioca --conservative`
5
+ 1. Check the Semantic Versioning page for info on how to version the new release: http://semver.org
6
+ 1. Update the version of ShopifyAPI in lib/shopify_api/version.rb
7
+ 1. Run `bundle`
8
+ 1. Add a CHANGELOG entry for the new release
9
+ 1. Commit the changes with a commit message like "Packaging for release X.Y.Z"
10
+ 1. Tag the release with the version (Leave REV blank for HEAD or provide a SHA)
11
+ $ git tag vX.Y.Z REV
12
+ 1. Push out the changes
13
+ $ git push
14
+ 1. Push out the tags
15
+ $ git push --tags
16
+ 1. Publish the gem using Shipit
17
+ 1. Consider if the dependency in Shopify/shopify needs updated. It's used only by the tests so is a low risk change.
18
+ Also consider Shopify/shopify_app whose gemspec depends on this.
19
+ We don't need to do this for every release, but we should try to keep them relatively up to date.
data/Rakefile CHANGED
@@ -1,55 +1,23 @@
1
+ # typed: false
1
2
  # frozen_string_literal: true
2
- require 'rake'
3
- require "bundler/gem_tasks"
4
- require 'rake/testtask'
5
- require 'rubocop/rake_task'
6
-
7
- Rake::TestTask.new(:test) do |test|
8
- test.libs << 'lib' << 'test'
9
- test.pattern = 'test/**/*_test.rb'
10
- test.warning = false
11
- end
12
3
 
13
- RuboCop::RakeTask.new
4
+ require "rake/testtask"
5
+ require "bundler/gem_tasks"
14
6
 
15
- begin
16
- require 'rcov/rcovtask'
17
- Rcov::RcovTask.new do |test|
18
- test.libs << 'test'
19
- test.pattern = 'test/**/*_test.rb'
20
- test.verbose = true
21
- end
22
- rescue LoadError
23
- task(:rcov) do
24
- abort("RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov")
7
+ namespace :test do
8
+ Rake::TestTask.new(:library) do |t|
9
+ t.test_files = FileList["test/**/*_test.rb"].exclude("test/rest/**/*.rb")
25
10
  end
26
- end
27
11
 
28
- task(default: [:test, :rubocop, :verify_docs])
12
+ Rake::TestTask.new(:rest_wrappers) do |t|
13
+ pattern = if ENV.key?("API_VERSION")
14
+ "test/rest/**/#{ENV.fetch("API_VERSION")}/*.rb"
15
+ else
16
+ "test/rest/**/*.rb"
17
+ end
29
18
 
30
- require 'verify_docs'
31
- task(:verify_docs) do
32
- unless VerifyDocs.call
33
- abort("\nWARNING: docs/index.md and README.md no longer have identical content. Please correct this.")
19
+ t.pattern = pattern
34
20
  end
35
21
  end
36
22
 
37
- require 'rdoc/task'
38
- Rake::RDocTask.new do |rdoc|
39
- if File.exist?('VERSION.yml')
40
- config = YAML.load(File.read('VERSION.yml'))
41
- version = "#{config[:major]}.#{config[:minor]}.#{config[:patch]}"
42
- else
43
- version = ""
44
- end
45
-
46
- rdoc.rdoc_dir = 'rdoc'
47
- rdoc.title = "shopify_api #{version}"
48
- rdoc.rdoc_files.include('README*')
49
- rdoc.rdoc_files.include('lib/**/*.rb')
50
- end
51
-
52
- task(:docker) do
53
- cmd = "docker-compose up -d && docker exec -i -t shopify_api bash"
54
- exec(cmd, err: File::NULL)
55
- end
23
+ task test: ["test:library"]
data/SECURITY.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  ### New features
6
6
 
7
- New features will only be added to the master branch and will not be made available in point releases.
7
+ New features will only be added to the main branch and will not be made available in point releases.
8
8
 
9
9
  ### Bug fixes
10
10
 
@@ -56,4 +56,4 @@ We look forward to working with all security researchers and strive to be respec
56
56
 
57
57
  ## Receiving Security Updates
58
58
 
59
- To recieve all general updates to vulnerabilities, please subscribe to our hackerone [Hacktivity](https://hackerone.com/shopify/hacktivity)
59
+ To recieve all general updates to vulnerabilities, please subscribe to our hackerone [Hacktivity](https://hackerone.com/shopify/hacktivity)
data/bin/tapioca ADDED
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'tapioca' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ require "pathname"
12
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
13
+ Pathname.new(__FILE__).realpath)
14
+
15
+ bundle_binstub = File.expand_path("../bundle", __FILE__)
16
+
17
+ if File.file?(bundle_binstub)
18
+ if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
19
+ load(bundle_binstub)
20
+ else
21
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
22
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
23
+ end
24
+ end
25
+
26
+ require "rubygems"
27
+ require "bundler/setup"
28
+
29
+ load Gem.bin_path("tapioca", "tapioca")
data/dev.yml CHANGED
@@ -3,9 +3,30 @@ name: shopify-api
3
3
  type: ruby
4
4
 
5
5
  up:
6
- - ruby: "3.0"
6
+ - ruby: 3.0.3
7
7
  - bundler
8
8
 
9
9
  commands:
10
+ console:
11
+ desc: 'start a ruby shell with ShopifyAPI already loaded'
12
+ aliases: ['c']
13
+ run: bundle exec irb -Ilib -rshopify_api
14
+ style:
15
+ desc: 'run rubocop'
16
+ run: bundle exec rubocop
17
+ typecheck:
18
+ desc: 'run Sorbet typechecking'
19
+ aliases: ['tc']
20
+ run: bundle exec srb tc
10
21
  test:
11
22
  run: bundle exec rake test
23
+ sanity:
24
+ desc: 'run all static checks against the codebase'
25
+ run: bundle exec rubocop && bundle exec srb tc && bundle exec rake test
26
+ subcommands:
27
+ all:
28
+ desc: 'run all checks regardless of the success states of previous checks'
29
+ run: bundle exec rubocop; bundle exec srb tc; bundle exec rake test
30
+ rbi:
31
+ desc: 'generate .rbi files for specified gem to the project'
32
+ run: bin/tapioca gem
data/docs/README.md ADDED
@@ -0,0 +1,13 @@
1
+ <!-- Make sure this file is in sync with the Getting started section in README -->
2
+
3
+ # Getting started
4
+
5
+ You can follow our getting started guide to learn how to use this library.
6
+
7
+ - [Getting started](getting_started.md)
8
+ - [Performing OAuth](usage/oauth.md)
9
+ - [REST Admin API](usage/rest.md)
10
+ - [Make a GraphQL API call](usage/graphql.md)
11
+ - [Make a Storefront API call](usage/graphql_storefront.md)
12
+ - [Webhooks](usage/webhooks.md)
13
+ - [Known issues and caveats](issues.md)
@@ -0,0 +1,46 @@
1
+ # Getting started
2
+
3
+ This page will outline everything you need to know and the steps you need to follow in order to start using the Shopify Ruby API gem in your app.
4
+
5
+ ## Requirements
6
+
7
+ - A working knowledge of ruby and a web framework such as Rails or Sinatra
8
+ - A custom app already set up in your test store or partner account
9
+ - We recommend `ngrok` to tunnel traffic to your localhost for testing
10
+
11
+ ## Installation
12
+
13
+ Add the following to your Gemfile:
14
+
15
+ `gem "shopify_api"`
16
+
17
+ ## Steps to use the Gem
18
+
19
+ ### Setup Shopify Context
20
+
21
+ Start by 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).
22
+
23
+ ```ruby
24
+ ShopifyAPI::Context.setup(
25
+ api_key: "<api-key>",
26
+ api_secret_key: "<api-secret-key>",
27
+ host_name: "<application-host-name>",
28
+ scope: "read_orders,read_products,etc",
29
+ is_embedded: true, # Set to true if you are building an embedded app
30
+ is_private: false, # Set to true if you are building a private app
31
+ api_version: "2021-01" # The version of the API you would like to use
32
+ )
33
+ ```
34
+
35
+ ### Performing OAuth
36
+
37
+ Next, unless you are making a private app, you need to go through OAuth as described [here](https://shopify.dev/docs/apps/auth/oauth) to create sessions for shops using your app.
38
+ The Shopify API gem tries to make this easy by providing functions to begin and complete the OAuth process. See the [Oauth doc](usage/oauth.md) for instructions on how to use these.
39
+
40
+ ### Register Webhooks and a Webhook Handler
41
+
42
+ If you intend to use webhooks in your application follow the steps in the [Webhooks doc](usage/webhooks.md) for instructions on registering and handling webhooks.
43
+
44
+ ### Start Making Authenticated Shopify Requests
45
+
46
+ You can now start making authenticated Shopify API calls using the Admin [REST](usage/rest.md) or [GraphQL](usage/graphql.md) Clients or the [Storefront GraphQL Client](usage/graphql_storefront.md).
data/docs/issues.md ADDED
@@ -0,0 +1,39 @@
1
+ # Known issues and caveats
2
+
3
+ By following this guide, you will have a fully functional Shopify app. However, there are some things you should be aware of before using your new app in a production environment.
4
+
5
+ ## Notes on session handling
6
+
7
+ Before you start writing your application, please note that the Shopify library needs to store some information for OAuth in sessions. Since each application may choose a different strategy to store information, the library cannot dictate any specific storage strategy. When calling `ShopifyAPI::Context.setup`, you'll need to provide an instance of a class that implements the `ShopifyAPI::Auth::SessionStorage` interface.
8
+
9
+ This library provides a very simple implementation of that interface which stores sessions in files, `ShopifyAPI::Auth::FileSessionStorage` ([source code](../lib/shopify_api/auth/file_session_storage.rb)). This class is meant to speed up development with this library, but it is not suitable for production use, because it will lead to disk build-up as old sessions are not cleaned up.
10
+
11
+ Before you deploy your app to production, it should use your selected storage method for sessions. You can do that by creating a class that implements the `SessionStorage` interface and pass that in your `Context.setup` call. Your class will need to implement the methods below.
12
+
13
+ **Note**: After you create your implementation of `SessionStorage`, you should make sure to clean up old sessions periodically in your data storage. The library will delete some sessions when they are no longer useful, but it cannot guarantee that expired sessions are deleted automatically.
14
+
15
+ #### `SessionStorage.storeSession`
16
+
17
+ Creates **or updates** a `Session` object in your storage. This function should return a `bool` indicating whether the operation was successful.
18
+
19
+ | Param | Type | Notes |
20
+ | --------- | --------- | --------------------------- |
21
+ | `session` | `Session` | The session object to store |
22
+
23
+ #### `SessionStorage.loadSession`
24
+
25
+ Fetches a `Session` object from your storage. This function should return a `Session` object, or `null` if it was not found.
26
+
27
+ | Param | Type | Notes |
28
+ | ----------- | -------- | ----------------------------- |
29
+ | `sessionId` | `string` | The id of the session to load |
30
+
31
+ #### `SessionStorage.deleteSession`
32
+
33
+ Deletes a session from your storage. This function should return a `bool` indicating whether the operation was successful.
34
+
35
+ | Param | Type | Notes |
36
+ | ----------- | -------- | ------------------------------- |
37
+ | `sessionId` | `string` | The id of the session to delete |
38
+
39
+ [Back to guide index](README.md)
@@ -0,0 +1,121 @@
1
+ # Make a GraphQL API call
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`
4
+
5
+ Below is an example
6
+
7
+ ```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
12
+ client = ShopifyAPI::Clients::Graphql::Admin.new(session: session)
13
+
14
+ # make the GraphQL query string
15
+ query =<<~QUERY
16
+ {
17
+ products(first: 10) {
18
+ edges {
19
+ cursor
20
+ node {
21
+ id
22
+ title
23
+ onlineStoreUrl
24
+ }
25
+ }
26
+ }
27
+ }
28
+ QUERY
29
+
30
+ response = client.query(query: query)
31
+ # do something with the response data
32
+ ```
33
+
34
+ You can also make GraphQL calls that take in variables
35
+
36
+ ```ruby
37
+ client = ShopifyAPI::Clients::Graphql::Admin.new(session: session)
38
+
39
+ query = <<~QUERY
40
+ query testQueryWithVariables($first: Int!){
41
+ products(first: $first) {
42
+ edges {
43
+ cursor
44
+ node {
45
+ id
46
+ title
47
+ onlineStoreUrl
48
+ }
49
+ }
50
+ }
51
+ }
52
+ QUERY
53
+ variables = {
54
+ first: 3
55
+ }
56
+
57
+ response = client.query(query: query, variables: variables)
58
+
59
+ ```
60
+
61
+ Here is an example of how you might use fragments as part of the client
62
+
63
+ ```ruby
64
+ client = ShopifyAPI::Clients::Graphql::Admin.new(session: session)
65
+ # define the fragment as part of the query
66
+ query = <<~QUERY
67
+ fragment ProductStuff on Product {
68
+ id
69
+ title
70
+ description
71
+ onlineStoreUrl
72
+ }
73
+ query testQueryWithVariables($first: Int){
74
+ products(first: $first) {
75
+ edges {
76
+ cursor
77
+ node {
78
+ ...ProductStuff
79
+ }
80
+ }
81
+ }
82
+ }
83
+ QUERY
84
+ variables = {
85
+ first: 3
86
+ }
87
+ response = client.query(query: query, variables: variables)
88
+ # do something with the reponse
89
+ ```
90
+
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.
92
+
93
+ ```ruby
94
+ client = ShopifyAPI::Clients::Graphql::Admin.new(session: session, api_version: "unstable")
95
+ ```
96
+
97
+ Want to make calls to the Storefront API? Click [here](graphql_storefront.md)
98
+
99
+ # Proxy a GraphQL Query
100
+
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:
102
+
103
+ ```ruby
104
+ def proxy
105
+ begin
106
+ response = ShopifyAPI::Utils::GraphqlProxy.proxy_query(
107
+ headers: request.headers.to_h,
108
+ body: request.raw_post,
109
+ cookies: request.cookies.to_h
110
+ )
111
+
112
+ render json: response.body, status: response.code
113
+ rescue ShopifyAPI::Errors::InvalidGraphqlRequestError
114
+ # Handle bad request
115
+ rescue ShopifyAPI::Errors::SessionNotFoundError
116
+ # Handle no session found
117
+ end
118
+ end
119
+ ```
120
+
121
+ **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.
@@ -0,0 +1,48 @@
1
+ # Make a Storefront API call
2
+
3
+ The library also allows you to send GraphQL requests to the [Shopify Storefront API](https://shopify.dev/docs/api/storefront). To do that, you can use `ShopifyAPI::Clients::Graphql::Storefront` with the current session and a `storefrontAccessToken`.
4
+
5
+ You can obtain Storefront API access tokens for both private apps and sales channels. Please read [our documentation](https://shopify.dev/docs/custom-storefronts/building-with-the-storefront-api/getting-started) to learn more about Storefront Access Tokens.
6
+
7
+ Below is an example of how you may query the Storefront API:
8
+
9
+ ```ruby
10
+ # Load the access token as per instructions above
11
+ storefront_access_token = ''
12
+ # your shop domain
13
+ shop_url = 'shop.myshopify.com'
14
+
15
+ # initialize the client with session and storefront access token
16
+ client = ShopifyAPI::Clients::Graphql::Storefront.new(shop_url, storefront_access_token)
17
+
18
+ query = <<~QUERY
19
+ {
20
+ collections(first: 2) {
21
+ edges {
22
+ node {
23
+ id
24
+ products(first: 5) {
25
+ edges {
26
+ node {
27
+ id
28
+ title
29
+ }
30
+ }
31
+ }
32
+ }
33
+ }
34
+ }
35
+ }
36
+ QUERY
37
+
38
+ response = client.query(query: query)
39
+ # do something with the returned data
40
+ ```
41
+
42
+ 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.
43
+
44
+ ```ruby
45
+ client = ShopifyAPI::Clients::Graphql::Storefront.new(shop_url, storefront_access_token, api_version: "unstable")
46
+ ```
47
+
48
+ Want to make calls to the Admin API? Click [here](graphql.md)
@@ -0,0 +1,104 @@
1
+ # Performing OAuth
2
+
3
+ Once the library is set up for your project, you'll be able to use it to start adding functionality to your app. The first thing your app will need to do is to obtain an access token to the Admin API by performing the OAuth process.
4
+
5
+ To do this, you can follow the steps below.
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
+
8
+ ## Add a route to start OAuth
9
+
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`}
11
+
12
+ | Parameter | Type | Required? | Default Value | Notes |
13
+ | -------------- | ---------------------- | :-------: | :-----------: | ----------------------------------------------------------------------------------------------------------- |
14
+ | `shop` | `String` | Yes | - | A Shopify domain name in the form `{exampleshop}.myshopify.com`. |
15
+ | `redirect_path` | `String` | Yes | - | The redirect path used for callback with a leading `/`. The route should be allowed under the app settings. |
16
+ | `is_online` | `Boolean` | No | `true` | `true` if the session is online and `false` otherwise. |
17
+
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.
19
+
20
+ An example is shown below in a Rails app but these steps could be applied in any framework:
21
+
22
+ ```ruby
23
+ class ShopifyAuthController < ApplicationController
24
+ def login
25
+ shop = request.headers["Shop"]
26
+
27
+ auth_response = ShopifyAPI::Auth::Oauth.begin_auth(shop: domain, redirect_path: "/auth/callback")
28
+
29
+ cookies[auth_response[:cookie].name] = {
30
+ expires: auth_response[:cookie].expires,
31
+ secure: true,
32
+ http_only: true,
33
+ value: auth_response[:cookie].value
34
+ }
35
+
36
+ head 307
37
+ response.set_header("Location", auth_response[:auth_route])
38
+ end
39
+ end
40
+ ```
41
+
42
+ ## Add your OAuth callback route
43
+
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`}.
45
+
46
+ An example is shown below in a Rails app but these steps could be applied in any framework:
47
+
48
+ ```ruby
49
+ def callback
50
+ begin
51
+ auth_result = ShopifyAPI::Auth::Oauth.validate_auth_callback(
52
+ cookies: cookies.to_h,
53
+ auth_query: ShopifyAPI::Auth::Oauth::AuthQuery.new(request.parameters.symbolize_keys.except(:controller, :action))
54
+ )
55
+
56
+ cookies[auth_result[:cookie].name] = {
57
+ expires: auth_result[:cookie].expires,
58
+ secure: true,
59
+ http_only: true,
60
+ value: auth_result[:cookie].value
61
+ }
62
+
63
+ puts("OAuth complete! New access token: #{auth_result[:session].access_token}")
64
+
65
+ head 307
66
+ response.set_header("Location", "<some-redirect-url>")
67
+ rescue => e
68
+ puts(e.message)
69
+ head 500
70
+ end
71
+ end
72
+ ```
73
+ ## Fetching sessions
74
+
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.
76
+
77
+ - To load current session, you can use the following method:
78
+
79
+ ```ruby
80
+ ShopifyAPI::Utils::SessionUtils.load_current_session(auth_header: <auth-header>, cookies: <cookies>, is_online: <true|false>)
81
+ ```
82
+
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` |
89
+
90
+ This method will return a `ShopifyAPI::Auth::Session` if a session exists. Either a proper token or a proper cookie must be present.
91
+
92
+ - To load offline session, you can use the following method:
93
+
94
+ ```ruby
95
+ ShopifyAPI::Utils::SessionUtils.load_offline_session(shop)
96
+ ```
97
+
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. |
103
+
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.