spree_api 5.6.1 → 6.0.0.beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (540) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +28 -0
  3. data/Rakefile +1 -1
  4. data/app/controllers/concerns/spree/api/v3/address_params.rb +17 -0
  5. data/app/controllers/concerns/spree/api/v3/admin/product_listing.rb +46 -0
  6. data/app/controllers/concerns/spree/api/v3/admin/product_membership.rb +110 -0
  7. data/app/controllers/concerns/spree/api/v3/admin/receivable_actions.rb +68 -0
  8. data/app/controllers/concerns/spree/api/v3/admin/reporting_authorization.rb +27 -0
  9. data/app/controllers/concerns/spree/api/v3/admin/role_grant_guard.rb +69 -33
  10. data/app/controllers/concerns/spree/api/v3/admin/stock_receipt_actions.rb +86 -0
  11. data/app/controllers/concerns/spree/api/v3/admin/store_context.rb +97 -0
  12. data/app/controllers/concerns/spree/api/v3/admin/subclassed_resource.rb +12 -6
  13. data/app/controllers/concerns/spree/api/v3/admin/validation_details.rb +91 -0
  14. data/app/controllers/concerns/spree/api/v3/admin_authentication.rb +9 -5
  15. data/app/controllers/concerns/spree/api/v3/api_key_authentication.rb +41 -5
  16. data/app/controllers/concerns/spree/api/v3/authentication_strategies.rb +48 -0
  17. data/app/controllers/concerns/spree/api/v3/bulk_operations.rb +4 -6
  18. data/app/controllers/concerns/spree/api/v3/cart_resolvable.rb +52 -16
  19. data/app/controllers/concerns/spree/api/v3/company_address_writes.rb +37 -0
  20. data/app/controllers/concerns/spree/api/v3/current_password_confirmation.rb +41 -0
  21. data/app/controllers/concerns/spree/api/v3/direct_uploads.rb +35 -0
  22. data/app/controllers/concerns/spree/api/v3/error_handler.rb +53 -11
  23. data/app/controllers/concerns/spree/api/v3/idempotent.rb +10 -4
  24. data/app/controllers/concerns/spree/api/v3/items_payload.rb +54 -0
  25. data/app/controllers/concerns/spree/api/v3/jwt_authentication.rb +23 -3
  26. data/app/controllers/concerns/spree/api/v3/key_store_context.rb +31 -0
  27. data/app/controllers/concerns/spree/api/v3/locale_and_currency.rb +3 -3
  28. data/app/controllers/concerns/spree/api/v3/order_lock.rb +22 -3
  29. data/app/controllers/concerns/spree/api/v3/orders/claim_actions.rb +112 -0
  30. data/app/controllers/concerns/spree/api/v3/orders/delivery_actions.rb +105 -0
  31. data/app/controllers/concerns/spree/api/v3/orders/exchange_actions.rb +117 -0
  32. data/app/controllers/concerns/spree/api/v3/orders/fulfillment_actions.rb +157 -0
  33. data/app/controllers/concerns/spree/api/v3/orders/post_sale_actions.rb +76 -0
  34. data/app/controllers/concerns/spree/api/v3/orders/return_actions.rb +116 -0
  35. data/app/controllers/concerns/spree/api/v3/orders/shipping_label_actions.rb +128 -0
  36. data/app/controllers/concerns/spree/api/v3/params_normalizer.rb +7 -4
  37. data/app/controllers/concerns/spree/api/v3/permission_serialization.rb +42 -0
  38. data/app/controllers/concerns/spree/api/v3/rate_limit_headers.rb +40 -6
  39. data/app/controllers/concerns/spree/api/v3/scoped_authorization.rb +80 -26
  40. data/app/controllers/concerns/spree/api/v3/seller/auth_cookies.rb +62 -0
  41. data/app/controllers/concerns/spree/api/v3/seller/seller_context.rb +127 -0
  42. data/app/controllers/concerns/spree/api/v3/seller_authentication.rb +40 -0
  43. data/app/controllers/concerns/spree/api/v3/storefront_access.rb +38 -0
  44. data/app/controllers/concerns/spree/api/v3/streams_shipping_label.rb +37 -0
  45. data/app/controllers/concerns/spree/api/v3/tax_identifier_validation.rb +41 -0
  46. data/app/controllers/spree/api/v3/admin/admin_users_controller.rb +11 -14
  47. data/app/controllers/spree/api/v3/admin/allowed_origins_controller.rb +1 -1
  48. data/app/controllers/spree/api/v3/admin/api_keys_controller.rb +16 -7
  49. data/app/controllers/spree/api/v3/admin/auth_controller.rb +138 -22
  50. data/app/controllers/spree/api/v3/admin/base_controller.rb +2 -0
  51. data/app/controllers/spree/api/v3/admin/catalog_assignments_controller.rb +27 -0
  52. data/app/controllers/spree/api/v3/admin/catalogs/base_controller.rb +29 -0
  53. data/app/controllers/spree/api/v3/admin/catalogs/order_minimums_controller.rb +40 -0
  54. data/app/controllers/spree/api/v3/admin/catalogs/products_controller.rb +107 -0
  55. data/app/controllers/spree/api/v3/admin/catalogs/quantity_rules_controller.rb +75 -0
  56. data/app/controllers/spree/api/v3/admin/catalogs_controller.rb +191 -0
  57. data/app/controllers/spree/api/v3/admin/categories/products_controller.rb +28 -41
  58. data/app/controllers/spree/api/v3/admin/categories_controller.rb +16 -7
  59. data/app/controllers/spree/api/v3/admin/channels_controller.rb +50 -2
  60. data/app/controllers/spree/api/v3/admin/claim_reasons_controller.rb +25 -0
  61. data/app/controllers/spree/api/v3/admin/claims_controller.rb +31 -0
  62. data/app/controllers/spree/api/v3/admin/collection_rules_controller.rb +40 -0
  63. data/app/controllers/spree/api/v3/admin/collections/products_controller.rb +101 -0
  64. data/app/controllers/spree/api/v3/admin/collections_controller.rb +56 -0
  65. data/app/controllers/spree/api/v3/admin/commission_lines_controller.rb +39 -0
  66. data/app/controllers/spree/api/v3/admin/commission_rates_controller.rb +174 -0
  67. data/app/controllers/spree/api/v3/admin/companies/addresses_controller.rb +65 -0
  68. data/app/controllers/spree/api/v3/admin/companies/base_controller.rb +29 -0
  69. data/app/controllers/spree/api/v3/admin/companies/invitations_controller.rb +56 -0
  70. data/app/controllers/spree/api/v3/admin/companies/memberships_controller.rb +66 -0
  71. data/app/controllers/spree/api/v3/admin/companies/tax_exemption_certificates_controller.rb +137 -0
  72. data/app/controllers/spree/api/v3/admin/companies/tax_identifiers_controller.rb +46 -0
  73. data/app/controllers/spree/api/v3/admin/companies_controller.rb +59 -0
  74. data/app/controllers/spree/api/v3/admin/concerns/external_references.rb +166 -0
  75. data/app/controllers/spree/api/v3/admin/consent_records_controller.rb +31 -0
  76. data/app/controllers/spree/api/v3/admin/countries_controller.rb +12 -4
  77. data/app/controllers/spree/api/v3/admin/custom_field_definitions_controller.rb +19 -4
  78. data/app/controllers/spree/api/v3/admin/custom_fields_controller.rb +5 -5
  79. data/app/controllers/spree/api/v3/admin/customer_groups_controller.rb +1 -1
  80. data/app/controllers/spree/api/v3/admin/customers/addresses_controller.rb +4 -4
  81. data/app/controllers/spree/api/v3/admin/customers/base_controller.rb +1 -1
  82. data/app/controllers/spree/api/v3/admin/customers/store_credits_controller.rb +2 -3
  83. data/app/controllers/spree/api/v3/admin/customers/tax_identifiers_controller.rb +43 -0
  84. data/app/controllers/spree/api/v3/admin/customers_controller.rb +190 -11
  85. data/app/controllers/spree/api/v3/admin/dashboard_controller.rb +24 -20
  86. data/app/controllers/spree/api/v3/admin/data_requests_controller.rb +60 -0
  87. data/app/controllers/spree/api/v3/admin/delivery_method_rules_controller.rb +54 -0
  88. data/app/controllers/spree/api/v3/admin/delivery_methods/rules_controller.rb +114 -0
  89. data/app/controllers/spree/api/v3/admin/delivery_methods_controller.rb +243 -0
  90. data/app/controllers/spree/api/v3/admin/delivery_profiles/origin_groups_controller.rb +80 -0
  91. data/app/controllers/spree/api/v3/admin/delivery_profiles_controller.rb +107 -0
  92. data/app/controllers/spree/api/v3/admin/delivery_zones_controller.rb +116 -0
  93. data/app/controllers/spree/api/v3/admin/digital_links_controller.rb +48 -0
  94. data/app/controllers/spree/api/v3/admin/direct_uploads_controller.rb +17 -3
  95. data/app/controllers/spree/api/v3/admin/exchanges_controller.rb +31 -0
  96. data/app/controllers/spree/api/v3/admin/exports_controller.rb +2 -2
  97. data/app/controllers/spree/api/v3/admin/gift_card_batches_controller.rb +1 -1
  98. data/app/controllers/spree/api/v3/admin/gift_cards_controller.rb +3 -2
  99. data/app/controllers/spree/api/v3/admin/imports_controller.rb +71 -8
  100. data/app/controllers/spree/api/v3/admin/integrations_controller.rb +67 -0
  101. data/app/controllers/spree/api/v3/admin/invitation_acceptances_controller.rb +5 -5
  102. data/app/controllers/spree/api/v3/admin/invitations_controller.rb +5 -1
  103. data/app/controllers/spree/api/v3/admin/locales_controller.rb +3 -1
  104. data/app/controllers/spree/api/v3/admin/markets_controller.rb +9 -5
  105. data/app/controllers/spree/api/v3/admin/me_controller.rb +4 -30
  106. data/app/controllers/spree/api/v3/admin/media_controller.rb +88 -38
  107. data/app/controllers/spree/api/v3/admin/media_library_controller.rb +156 -0
  108. data/app/controllers/spree/api/v3/admin/option_types_controller.rb +1 -0
  109. data/app/controllers/spree/api/v3/admin/order_cancellation_reasons_controller.rb +25 -0
  110. data/app/controllers/spree/api/v3/admin/order_groups_controller.rb +43 -0
  111. data/app/controllers/spree/api/v3/admin/order_routing_rules_controller.rb +1 -1
  112. data/app/controllers/spree/api/v3/admin/orders/claims_controller.rb +56 -0
  113. data/app/controllers/spree/api/v3/admin/orders/deliveries_controller.rb +66 -0
  114. data/app/controllers/spree/api/v3/admin/orders/discount_codes_controller.rb +86 -0
  115. data/app/controllers/spree/api/v3/admin/orders/discounts_controller.rb +99 -0
  116. data/app/controllers/spree/api/v3/admin/orders/exchanges_controller.rb +62 -0
  117. data/app/controllers/spree/api/v3/admin/orders/fees_controller.rb +83 -0
  118. data/app/controllers/spree/api/v3/admin/orders/fulfillments_controller.rb +45 -67
  119. data/app/controllers/spree/api/v3/admin/orders/items_controller.rb +40 -22
  120. data/app/controllers/spree/api/v3/admin/orders/labels_controller.rb +75 -0
  121. data/app/controllers/spree/api/v3/admin/orders/payments_controller.rb +36 -18
  122. data/app/controllers/spree/api/v3/admin/orders/refunds_controller.rb +39 -18
  123. data/app/controllers/spree/api/v3/admin/orders/returns_controller.rb +70 -0
  124. data/app/controllers/spree/api/v3/admin/orders/store_credits_controller.rb +2 -2
  125. data/app/controllers/spree/api/v3/admin/orders/tax_identifiers_controller.rb +41 -0
  126. data/app/controllers/spree/api/v3/admin/orders/tax_lines_controller.rb +32 -0
  127. data/app/controllers/spree/api/v3/admin/orders_controller.rb +157 -32
  128. data/app/controllers/spree/api/v3/admin/package_types_controller.rb +39 -0
  129. data/app/controllers/spree/api/v3/admin/password_resets_controller.rb +1 -1
  130. data/app/controllers/spree/api/v3/admin/payment_methods_controller.rb +15 -4
  131. data/app/controllers/spree/api/v3/admin/payout_providers_controller.rb +27 -0
  132. data/app/controllers/spree/api/v3/admin/permissions_controller.rb +30 -0
  133. data/app/controllers/spree/api/v3/admin/policies_controller.rb +42 -0
  134. data/app/controllers/spree/api/v3/admin/price_lists/products_controller.rb +93 -0
  135. data/app/controllers/spree/api/v3/admin/price_lists_controller.rb +43 -29
  136. data/app/controllers/spree/api/v3/admin/prices_controller.rb +41 -4
  137. data/app/controllers/spree/api/v3/admin/product_types_controller.rb +93 -0
  138. data/app/controllers/spree/api/v3/admin/products/digital_assets_controller.rb +148 -0
  139. data/app/controllers/spree/api/v3/admin/products/variants_controller.rb +24 -3
  140. data/app/controllers/spree/api/v3/admin/products_controller.rb +149 -33
  141. data/app/controllers/spree/api/v3/admin/promotion_actions_controller.rb +6 -2
  142. data/app/controllers/spree/api/v3/admin/promotion_rules_controller.rb +1 -1
  143. data/app/controllers/spree/api/v3/admin/promotions_controller.rb +1 -5
  144. data/app/controllers/spree/api/v3/admin/purchase_orders/stock_receipts_controller.rb +32 -0
  145. data/app/controllers/spree/api/v3/admin/purchase_orders_controller.rb +161 -0
  146. data/app/controllers/spree/api/v3/admin/refund_reasons_controller.rb +25 -0
  147. data/app/controllers/spree/api/v3/admin/reporting/saved_reports_controller.rb +45 -0
  148. data/app/controllers/spree/api/v3/admin/reporting_controller.rb +95 -0
  149. data/app/controllers/spree/api/v3/admin/resource_controller.rb +27 -10
  150. data/app/controllers/spree/api/v3/admin/return_reasons_controller.rb +25 -0
  151. data/app/controllers/spree/api/v3/admin/returns_controller.rb +31 -0
  152. data/app/controllers/spree/api/v3/admin/roles_controller.rb +50 -6
  153. data/app/controllers/spree/api/v3/admin/seller_payouts_controller.rb +83 -0
  154. data/app/controllers/spree/api/v3/admin/seller_requirement_submissions_controller.rb +139 -0
  155. data/app/controllers/spree/api/v3/admin/seller_requirements_controller.rb +115 -0
  156. data/app/controllers/spree/api/v3/admin/seller_transfers_controller.rb +36 -0
  157. data/app/controllers/spree/api/v3/admin/sellers/balances_controller.rb +44 -0
  158. data/app/controllers/spree/api/v3/admin/sellers/invitations_controller.rb +77 -0
  159. data/app/controllers/spree/api/v3/admin/sellers/payouts_controller.rb +107 -0
  160. data/app/controllers/spree/api/v3/admin/sellers/team_controller.rb +64 -0
  161. data/app/controllers/spree/api/v3/admin/sellers_controller.rb +197 -0
  162. data/app/controllers/spree/api/v3/admin/setup_controller.rb +231 -0
  163. data/app/controllers/spree/api/v3/admin/stock_levels_controller.rb +172 -0
  164. data/app/controllers/spree/api/v3/admin/stock_locations_controller.rb +3 -2
  165. data/app/controllers/spree/api/v3/admin/stock_movements_controller.rb +37 -0
  166. data/app/controllers/spree/api/v3/admin/stock_reservations_controller.rb +1 -1
  167. data/app/controllers/spree/api/v3/admin/stock_transfers/stock_receipts_controller.rb +31 -0
  168. data/app/controllers/spree/api/v3/admin/stock_transfers_controller.rb +134 -38
  169. data/app/controllers/spree/api/v3/admin/store_controller.rb +65 -0
  170. data/app/controllers/spree/api/v3/admin/store_credits/events_controller.rb +47 -0
  171. data/app/controllers/spree/api/v3/admin/store_credits_controller.rb +87 -0
  172. data/app/controllers/spree/api/v3/admin/suppliers_controller.rb +30 -0
  173. data/app/controllers/spree/api/v3/admin/tags_controller.rb +2 -2
  174. data/app/controllers/spree/api/v3/admin/tax_categories_controller.rb +4 -0
  175. data/app/controllers/spree/api/v3/admin/tax_providers_controller.rb +25 -0
  176. data/app/controllers/spree/api/v3/admin/tax_rates_controller.rb +33 -0
  177. data/app/controllers/spree/api/v3/admin/tracking_carriers_controller.rb +33 -0
  178. data/app/controllers/spree/api/v3/admin/translatable_resources_controller.rb +37 -9
  179. data/app/controllers/spree/api/v3/admin/translations_controller.rb +10 -5
  180. data/app/controllers/spree/api/v3/admin/translations_coverage_controller.rb +150 -0
  181. data/app/controllers/spree/api/v3/admin/variants_controller.rb +11 -4
  182. data/app/controllers/spree/api/v3/admin/webhook_endpoints_controller.rb +1 -1
  183. data/app/controllers/spree/api/v3/base_controller.rb +59 -16
  184. data/app/controllers/spree/api/v3/resource_controller.rb +154 -38
  185. data/app/controllers/spree/api/v3/seller/auth_controller.rb +169 -0
  186. data/app/controllers/spree/api/v3/seller/balances_controller.rb +35 -0
  187. data/app/controllers/spree/api/v3/seller/base_controller.rb +25 -0
  188. data/app/controllers/spree/api/v3/seller/claim_reasons_controller.rb +20 -0
  189. data/app/controllers/spree/api/v3/seller/countries_controller.rb +38 -0
  190. data/app/controllers/spree/api/v3/seller/delivery_methods_controller.rb +265 -0
  191. data/app/controllers/spree/api/v3/seller/delivery_profiles_controller.rb +65 -0
  192. data/app/controllers/spree/api/v3/seller/delivery_zones_controller.rb +41 -0
  193. data/app/controllers/spree/api/v3/seller/direct_uploads_controller.rb +21 -0
  194. data/app/controllers/spree/api/v3/seller/exports_controller.rb +195 -0
  195. data/app/controllers/spree/api/v3/seller/import_rows_controller.rb +49 -0
  196. data/app/controllers/spree/api/v3/seller/imports_controller.rb +317 -0
  197. data/app/controllers/spree/api/v3/seller/invitation_acceptances_controller.rb +152 -0
  198. data/app/controllers/spree/api/v3/seller/invitations_controller.rb +71 -0
  199. data/app/controllers/spree/api/v3/seller/me_controller.rb +72 -0
  200. data/app/controllers/spree/api/v3/seller/onboarding_controller.rb +111 -0
  201. data/app/controllers/spree/api/v3/seller/order_cancellation_reasons_controller.rb +25 -0
  202. data/app/controllers/spree/api/v3/seller/orders/base_controller.rb +44 -0
  203. data/app/controllers/spree/api/v3/seller/orders/claims_controller.rb +45 -0
  204. data/app/controllers/spree/api/v3/seller/orders/deliveries_controller.rb +38 -0
  205. data/app/controllers/spree/api/v3/seller/orders/exchanges_controller.rb +50 -0
  206. data/app/controllers/spree/api/v3/seller/orders/fulfillments_controller.rb +79 -0
  207. data/app/controllers/spree/api/v3/seller/orders/labels_controller.rb +55 -0
  208. data/app/controllers/spree/api/v3/seller/orders/notes_controller.rb +82 -0
  209. data/app/controllers/spree/api/v3/seller/orders/returns_controller.rb +44 -0
  210. data/app/controllers/spree/api/v3/seller/orders_controller.rb +199 -0
  211. data/app/controllers/spree/api/v3/seller/package_types_controller.rb +100 -0
  212. data/app/controllers/spree/api/v3/seller/password_resets_controller.rb +155 -0
  213. data/app/controllers/spree/api/v3/seller/payouts_controller.rb +47 -0
  214. data/app/controllers/spree/api/v3/seller/policies_controller.rb +57 -0
  215. data/app/controllers/spree/api/v3/seller/product_types_controller.rb +35 -0
  216. data/app/controllers/spree/api/v3/seller/products_controller.rb +394 -0
  217. data/app/controllers/spree/api/v3/seller/profile_controller.rb +137 -0
  218. data/app/controllers/spree/api/v3/seller/reasons_controller.rb +45 -0
  219. data/app/controllers/spree/api/v3/seller/requirement_submissions_controller.rb +95 -0
  220. data/app/controllers/spree/api/v3/seller/resource_controller.rb +75 -0
  221. data/app/controllers/spree/api/v3/seller/return_reasons_controller.rb +20 -0
  222. data/app/controllers/spree/api/v3/seller/stock_locations_controller.rb +56 -0
  223. data/app/controllers/spree/api/v3/seller/tax_identifiers_controller.rb +48 -0
  224. data/app/controllers/spree/api/v3/seller/team_controller.rb +103 -0
  225. data/app/controllers/spree/api/v3/seller/tracking_carriers_controller.rb +35 -0
  226. data/app/controllers/spree/api/v3/seller/transfers_controller.rb +43 -0
  227. data/app/controllers/spree/api/v3/store/account/companies_controller.rb +42 -0
  228. data/app/controllers/spree/api/v3/store/auth_controller.rb +21 -34
  229. data/app/controllers/spree/api/v3/store/base_controller.rb +4 -0
  230. data/app/controllers/spree/api/v3/store/carts/discount_codes_controller.rb +24 -2
  231. data/app/controllers/spree/api/v3/store/carts/fulfillments_controller.rb +41 -15
  232. data/app/controllers/spree/api/v3/store/carts/items_controller.rb +53 -20
  233. data/app/controllers/spree/api/v3/store/carts/payment_sessions_controller.rb +36 -20
  234. data/app/controllers/spree/api/v3/store/carts/po_documents_controller.rb +111 -0
  235. data/app/controllers/spree/api/v3/store/carts/store_credits_controller.rb +2 -2
  236. data/app/controllers/spree/api/v3/store/carts/tax_identifiers_controller.rb +96 -0
  237. data/app/controllers/spree/api/v3/store/carts_controller.rb +57 -12
  238. data/app/controllers/spree/api/v3/store/categories_controller.rb +6 -3
  239. data/app/controllers/spree/api/v3/store/collections/products_controller.rb +59 -0
  240. data/app/controllers/spree/api/v3/store/collections_controller.rb +36 -0
  241. data/app/controllers/spree/api/v3/store/companies/addresses_controller.rb +81 -0
  242. data/app/controllers/spree/api/v3/store/companies/base_controller.rb +24 -0
  243. data/app/controllers/spree/api/v3/store/companies/invitations_controller.rb +50 -0
  244. data/app/controllers/spree/api/v3/store/companies/members_controller.rb +66 -0
  245. data/app/controllers/spree/api/v3/store/companies/orders_controller.rb +28 -0
  246. data/app/controllers/spree/api/v3/store/companies_controller.rb +47 -0
  247. data/app/controllers/spree/api/v3/store/company_invitations_controller.rb +90 -0
  248. data/app/controllers/spree/api/v3/store/countries_controller.rb +8 -6
  249. data/app/controllers/spree/api/v3/store/customer/addresses_controller.rb +3 -1
  250. data/app/controllers/spree/api/v3/store/customer/data_requests_controller.rb +78 -0
  251. data/app/controllers/spree/api/v3/store/customer/digital_links_controller.rb +52 -0
  252. data/app/controllers/spree/api/v3/store/customer/orders_controller.rb +6 -0
  253. data/app/controllers/spree/api/v3/store/customer/password_resets_controller.rb +7 -3
  254. data/app/controllers/spree/api/v3/store/customer/payment_setup_sessions_controller.rb +3 -3
  255. data/app/controllers/spree/api/v3/store/customer/store_credits_controller.rb +0 -3
  256. data/app/controllers/spree/api/v3/store/customer/tax_identifiers_controller.rb +91 -0
  257. data/app/controllers/spree/api/v3/store/customers_controller.rb +26 -31
  258. data/app/controllers/spree/api/v3/store/data_feeds_controller.rb +11 -0
  259. data/app/controllers/spree/api/v3/store/data_request_downloads_controller.rb +58 -0
  260. data/app/controllers/spree/api/v3/store/delivery_methods_controller.rb +108 -0
  261. data/app/controllers/spree/api/v3/store/digital_links_controller.rb +105 -0
  262. data/app/controllers/spree/api/v3/store/markets/countries_controller.rb +5 -9
  263. data/app/controllers/spree/api/v3/store/markets_controller.rb +4 -4
  264. data/app/controllers/spree/api/v3/store/newsletter_subscribers_controller.rb +8 -9
  265. data/app/controllers/spree/api/v3/store/orders/claims_controller.rb +94 -0
  266. data/app/controllers/spree/api/v3/store/orders/returns_controller.rb +116 -0
  267. data/app/controllers/spree/api/v3/store/orders/tax_identifiers_controller.rb +46 -0
  268. data/app/controllers/spree/api/v3/store/orders_controller.rb +12 -15
  269. data/app/controllers/spree/api/v3/store/products/filters_controller.rb +10 -3
  270. data/app/controllers/spree/api/v3/store/products_controller.rb +25 -6
  271. data/app/controllers/spree/api/v3/store/resource_controller.rb +2 -0
  272. data/app/controllers/spree/api/v3/store/sellers_controller.rb +43 -0
  273. data/app/controllers/spree/api/v3/store/wishlist_items_controller.rb +9 -6
  274. data/app/controllers/spree/api/v3/store/wishlists_controller.rb +3 -3
  275. data/app/controllers/spree/api/v3/webhooks/fulfillments_controller.rb +88 -0
  276. data/app/controllers/spree/api/v3/webhooks/payments_controller.rb +5 -2
  277. data/app/controllers/spree/api/v3/webhooks/payouts_controller.rb +61 -0
  278. data/app/models/spree/api/data_request_urls.rb +25 -0
  279. data/app/models/spree/api/digital_link_urls.rb +26 -0
  280. data/app/serializers/spree/api/v3/address_serializer.rb +17 -5
  281. data/app/serializers/spree/api/v3/admin/address_serializer.rb +27 -4
  282. data/app/serializers/spree/api/v3/admin/admin_user_serializer.rb +13 -10
  283. data/app/serializers/spree/api/v3/admin/api_key_serializer.rb +1 -1
  284. data/app/serializers/spree/api/v3/admin/applied_promotion_serializer.rb +15 -0
  285. data/app/serializers/spree/api/v3/admin/cart_serializer.rb +34 -0
  286. data/app/serializers/spree/api/v3/admin/catalog_assignment_serializer.rb +32 -0
  287. data/app/serializers/spree/api/v3/admin/catalog_order_minimum_serializer.rb +23 -0
  288. data/app/serializers/spree/api/v3/admin/catalog_price_serializer.rb +48 -0
  289. data/app/serializers/spree/api/v3/admin/catalog_price_tier_serializer.rb +23 -0
  290. data/app/serializers/spree/api/v3/admin/catalog_product_serializer.rb +57 -0
  291. data/app/serializers/spree/api/v3/admin/catalog_product_term_serializer.rb +38 -0
  292. data/app/serializers/spree/api/v3/admin/catalog_quantity_rule_serializer.rb +37 -0
  293. data/app/serializers/spree/api/v3/admin/catalog_serializer.rb +46 -0
  294. data/app/serializers/spree/api/v3/admin/category_serializer.rb +3 -2
  295. data/app/serializers/spree/api/v3/admin/channel_serializer.rb +15 -1
  296. data/app/serializers/spree/api/v3/admin/claim_line_item_serializer.rb +16 -0
  297. data/app/serializers/spree/api/v3/admin/claim_reason_serializer.rb +21 -0
  298. data/app/serializers/spree/api/v3/admin/claim_serializer.rb +29 -0
  299. data/app/serializers/spree/api/v3/admin/collection_rule_serializer.rb +22 -0
  300. data/app/serializers/spree/api/v3/admin/collection_serializer.rb +29 -0
  301. data/app/serializers/spree/api/v3/admin/commission_line_serializer.rb +67 -0
  302. data/app/serializers/spree/api/v3/admin/commission_rate_serializer.rb +69 -0
  303. data/app/serializers/spree/api/v3/admin/commission_rule_serializer.rb +61 -0
  304. data/app/serializers/spree/api/v3/admin/company_invitation_serializer.rb +15 -0
  305. data/app/serializers/spree/api/v3/admin/company_membership_serializer.rb +11 -0
  306. data/app/serializers/spree/api/v3/admin/company_serializer.rb +37 -0
  307. data/app/serializers/spree/api/v3/admin/concerns/external_references_attribute.rb +33 -0
  308. data/app/serializers/spree/api/v3/admin/consent_record_serializer.rb +28 -0
  309. data/app/serializers/spree/api/v3/admin/country_serializer.rb +2 -2
  310. data/app/serializers/spree/api/v3/admin/credit_card_serializer.rb +1 -1
  311. data/app/serializers/spree/api/v3/admin/custom_field_definition_serializer.rb +2 -2
  312. data/app/serializers/spree/api/v3/admin/custom_field_serializer.rb +2 -2
  313. data/app/serializers/spree/api/v3/admin/customer_serializer.rb +23 -22
  314. data/app/serializers/spree/api/v3/admin/dashboard_counter_serializer.rb +24 -0
  315. data/app/serializers/spree/api/v3/admin/data_request_serializer.rb +36 -0
  316. data/app/serializers/spree/api/v3/admin/delivery_method_rule_serializer.rb +32 -0
  317. data/app/serializers/spree/api/v3/admin/delivery_method_serializer.rb +66 -1
  318. data/app/serializers/spree/api/v3/admin/delivery_method_service_serializer.rb +15 -0
  319. data/app/serializers/spree/api/v3/admin/delivery_origin_group_serializer.rb +34 -0
  320. data/app/serializers/spree/api/v3/admin/delivery_profile_serializer.rb +65 -0
  321. data/app/serializers/spree/api/v3/admin/delivery_rate_serializer.rb +10 -1
  322. data/app/serializers/spree/api/v3/admin/delivery_serializer.rb +20 -0
  323. data/app/serializers/spree/api/v3/admin/delivery_zone_member_serializer.rb +11 -0
  324. data/app/serializers/spree/api/v3/admin/delivery_zone_serializer.rb +29 -0
  325. data/app/serializers/spree/api/v3/admin/digital_asset_serializer.rb +59 -0
  326. data/app/serializers/spree/api/v3/admin/discount_serializer.rb +3 -4
  327. data/app/serializers/spree/api/v3/admin/exchange_line_item_serializer.rb +16 -0
  328. data/app/serializers/spree/api/v3/admin/exchange_serializer.rb +35 -0
  329. data/app/serializers/spree/api/v3/admin/export_serializer.rb +20 -1
  330. data/app/serializers/spree/api/v3/admin/fee_serializer.rb +14 -0
  331. data/app/serializers/spree/api/v3/admin/freight_summary_line_serializer.rb +46 -0
  332. data/app/serializers/spree/api/v3/admin/freight_summary_serializer.rb +16 -0
  333. data/app/serializers/spree/api/v3/admin/fulfillment_item_serializer.rb +39 -0
  334. data/app/serializers/spree/api/v3/admin/fulfillment_serializer.rb +31 -9
  335. data/app/serializers/spree/api/v3/admin/gift_card_serializer.rb +2 -3
  336. data/app/serializers/spree/api/v3/admin/import_serializer.rb +15 -2
  337. data/app/serializers/spree/api/v3/admin/integration_serializer.rb +32 -0
  338. data/app/serializers/spree/api/v3/admin/invitation_serializer.rb +4 -4
  339. data/app/serializers/spree/api/v3/admin/line_item_serializer.rb +19 -5
  340. data/app/serializers/spree/api/v3/admin/market_serializer.rb +5 -1
  341. data/app/serializers/spree/api/v3/admin/media_serializer.rb +50 -2
  342. data/app/serializers/spree/api/v3/admin/membership_product_serializer.rb +29 -0
  343. data/app/serializers/spree/api/v3/admin/order_cancellation_reason_serializer.rb +29 -0
  344. data/app/serializers/spree/api/v3/admin/order_group_serializer.rb +50 -0
  345. data/app/serializers/spree/api/v3/admin/order_routing_rule_serializer.rb +2 -6
  346. data/app/serializers/spree/api/v3/admin/order_serializer.rb +131 -19
  347. data/app/serializers/spree/api/v3/admin/package_type_serializer.rb +53 -0
  348. data/app/serializers/spree/api/v3/admin/payment_method_serializer.rb +8 -2
  349. data/app/serializers/spree/api/v3/admin/payment_serializer.rb +6 -0
  350. data/app/serializers/spree/api/v3/admin/payment_split_serializer.rb +41 -0
  351. data/app/serializers/spree/api/v3/admin/permission_serializer.rb +39 -0
  352. data/app/serializers/spree/api/v3/admin/policy_serializer.rb +11 -0
  353. data/app/serializers/spree/api/v3/admin/price_adjustment_tier_serializer.rb +22 -0
  354. data/app/serializers/spree/api/v3/admin/price_list_product_serializer.rb +32 -0
  355. data/app/serializers/spree/api/v3/admin/price_list_serializer.rb +20 -8
  356. data/app/serializers/spree/api/v3/admin/price_rule_serializer.rb +2 -12
  357. data/app/serializers/spree/api/v3/admin/price_serializer.rb +3 -0
  358. data/app/serializers/spree/api/v3/admin/product_serializer.rb +54 -8
  359. data/app/serializers/spree/api/v3/admin/product_submission_serializer.rb +39 -0
  360. data/app/serializers/spree/api/v3/admin/product_type_custom_field_definition_serializer.rb +44 -0
  361. data/app/serializers/spree/api/v3/admin/product_type_serializer.rb +34 -0
  362. data/app/serializers/spree/api/v3/admin/promotion_action_serializer.rb +6 -12
  363. data/app/serializers/spree/api/v3/admin/promotion_rule_serializer.rb +17 -15
  364. data/app/serializers/spree/api/v3/admin/purchase_order_item_serializer.rb +80 -0
  365. data/app/serializers/spree/api/v3/admin/purchase_order_serializer.rb +94 -0
  366. data/app/serializers/spree/api/v3/admin/refund_reason_serializer.rb +27 -0
  367. data/app/serializers/spree/api/v3/admin/refund_serializer.rb +0 -5
  368. data/app/serializers/spree/api/v3/admin/reporting_result_serializer.rb +72 -0
  369. data/app/serializers/spree/api/v3/admin/return_line_item_serializer.rb +16 -0
  370. data/app/serializers/spree/api/v3/admin/return_reason_serializer.rb +21 -0
  371. data/app/serializers/spree/api/v3/admin/return_serializer.rb +59 -0
  372. data/app/serializers/spree/api/v3/admin/role_serializer.rb +24 -6
  373. data/app/serializers/spree/api/v3/admin/saved_report_serializer.rb +33 -0
  374. data/app/serializers/spree/api/v3/admin/seller_balance_serializer.rb +37 -0
  375. data/app/serializers/spree/api/v3/admin/seller_payout_serializer.rb +46 -0
  376. data/app/serializers/spree/api/v3/admin/seller_requirement_serializer.rb +68 -0
  377. data/app/serializers/spree/api/v3/admin/seller_requirement_status_serializer.rb +48 -0
  378. data/app/serializers/spree/api/v3/admin/seller_requirement_submission_serializer.rb +57 -0
  379. data/app/serializers/spree/api/v3/admin/seller_serializer.rb +92 -0
  380. data/app/serializers/spree/api/v3/admin/seller_team_member_serializer.rb +29 -0
  381. data/app/serializers/spree/api/v3/admin/seller_transfer_serializer.rb +53 -0
  382. data/app/serializers/spree/api/v3/admin/shipping_label_serializer.rb +82 -0
  383. data/app/serializers/spree/api/v3/admin/state_serializer.rb +1 -1
  384. data/app/serializers/spree/api/v3/admin/stock_level_serializer.rb +65 -0
  385. data/app/serializers/spree/api/v3/admin/stock_location_serializer.rb +20 -4
  386. data/app/serializers/spree/api/v3/admin/stock_movement_serializer.rb +116 -0
  387. data/app/serializers/spree/api/v3/admin/stock_receipt_item_serializer.rb +57 -0
  388. data/app/serializers/spree/api/v3/admin/stock_receipt_serializer.rb +49 -0
  389. data/app/serializers/spree/api/v3/admin/stock_reservation_serializer.rb +5 -5
  390. data/app/serializers/spree/api/v3/admin/stock_transfer_item_serializer.rb +57 -0
  391. data/app/serializers/spree/api/v3/admin/stock_transfer_serializer.rb +36 -16
  392. data/app/serializers/spree/api/v3/admin/store_credit_event_serializer.rb +32 -0
  393. data/app/serializers/spree/api/v3/admin/store_credit_serializer.rb +42 -7
  394. data/app/serializers/spree/api/v3/admin/store_serializer.rb +63 -1
  395. data/app/serializers/spree/api/v3/admin/supplier_serializer.rb +39 -0
  396. data/app/serializers/spree/api/v3/admin/tax_exemption_certificate_serializer.rb +67 -0
  397. data/app/serializers/spree/api/v3/admin/tax_identifier_serializer.rb +43 -0
  398. data/app/serializers/spree/api/v3/admin/tax_line_serializer.rb +21 -0
  399. data/app/serializers/spree/api/v3/admin/tax_rate_serializer.rb +49 -0
  400. data/app/serializers/spree/api/v3/admin/variant_serializer.rb +49 -8
  401. data/app/serializers/spree/api/v3/applied_promotion_serializer.rb +23 -0
  402. data/app/serializers/spree/api/v3/base_serializer.rb +39 -2
  403. data/app/serializers/spree/api/v3/cart_serializer.rb +90 -12
  404. data/app/serializers/spree/api/v3/category_serializer.rb +3 -3
  405. data/app/serializers/spree/api/v3/claim_line_item_serializer.rb +50 -0
  406. data/app/serializers/spree/api/v3/claim_reason_serializer.rb +20 -0
  407. data/app/serializers/spree/api/v3/claim_serializer.rb +62 -0
  408. data/app/serializers/spree/api/v3/collection_serializer.rb +41 -0
  409. data/app/serializers/spree/api/v3/company_invitation_serializer.rb +28 -0
  410. data/app/serializers/spree/api/v3/company_membership_serializer.rb +28 -0
  411. data/app/serializers/spree/api/v3/company_serializer.rb +33 -0
  412. data/app/serializers/spree/api/v3/custom_field_serializer.rb +2 -2
  413. data/app/serializers/spree/api/v3/customer_serializer.rb +9 -1
  414. data/app/serializers/spree/api/v3/data_request_event_serializer.rb +30 -0
  415. data/app/serializers/spree/api/v3/data_request_serializer.rb +40 -0
  416. data/app/serializers/spree/api/v3/delivery_method_serializer.rb +12 -2
  417. data/app/serializers/spree/api/v3/delivery_rate_serializer.rb +34 -17
  418. data/app/serializers/spree/api/v3/delivery_serializer.rb +29 -0
  419. data/app/serializers/spree/api/v3/delivery_zone_member_serializer.rb +29 -0
  420. data/app/serializers/spree/api/v3/delivery_zone_serializer.rb +13 -0
  421. data/app/serializers/spree/api/v3/digital_asset_serializer.rb +23 -0
  422. data/app/serializers/spree/api/v3/digital_link_serializer.rb +6 -2
  423. data/app/serializers/spree/api/v3/discount_serializer.rb +21 -7
  424. data/app/serializers/spree/api/v3/exchange_line_item_serializer.rb +53 -0
  425. data/app/serializers/spree/api/v3/exchange_serializer.rb +61 -0
  426. data/app/serializers/spree/api/v3/fee_serializer.rb +27 -0
  427. data/app/serializers/spree/api/v3/freight_summary_serializer.rb +38 -0
  428. data/app/serializers/spree/api/v3/fulfillment_serializer.rb +28 -15
  429. data/app/serializers/spree/api/v3/gift_card_serializer.rb +2 -2
  430. data/app/serializers/spree/api/v3/import_row_serializer.rb +1 -1
  431. data/app/serializers/spree/api/v3/import_serializer.rb +18 -4
  432. data/app/serializers/spree/api/v3/invitation_serializer.rb +1 -1
  433. data/app/serializers/spree/api/v3/line_item_serializer.rb +18 -1
  434. data/app/serializers/spree/api/v3/market_serializer.rb +2 -2
  435. data/app/serializers/spree/api/v3/{asset_serializer.rb → media_event_serializer.rb} +4 -4
  436. data/app/serializers/spree/api/v3/media_serializer.rb +48 -7
  437. data/app/serializers/spree/api/v3/newsletter_subscriber_serializer.rb +1 -1
  438. data/app/serializers/spree/api/v3/option_type_serializer.rb +1 -1
  439. data/app/serializers/spree/api/v3/order_group_serializer.rb +60 -0
  440. data/app/serializers/spree/api/v3/order_serializer.rb +58 -6
  441. data/app/serializers/spree/api/v3/payment_method_serializer.rb +1 -1
  442. data/app/serializers/spree/api/v3/payment_serializer.rb +2 -6
  443. data/app/serializers/spree/api/v3/payment_session_serializer.rb +10 -3
  444. data/app/serializers/spree/api/v3/payment_setup_session_serializer.rb +1 -1
  445. data/app/serializers/spree/api/v3/policy_serializer.rb +7 -2
  446. data/app/serializers/spree/api/v3/product_filter_option_serializer.rb +1 -1
  447. data/app/serializers/spree/api/v3/product_serializer.rb +42 -10
  448. data/app/serializers/spree/api/v3/product_type_serializer.rb +17 -0
  449. data/app/serializers/spree/api/v3/purchase_order_event_serializer.rb +11 -0
  450. data/app/serializers/spree/api/v3/refund_serializer.rb +9 -3
  451. data/app/serializers/spree/api/v3/return_line_item_serializer.rb +42 -0
  452. data/app/serializers/spree/api/v3/return_reason_serializer.rb +20 -0
  453. data/app/serializers/spree/api/v3/return_serializer.rb +62 -0
  454. data/app/serializers/spree/api/v3/seller/balance_serializer.rb +35 -0
  455. data/app/serializers/spree/api/v3/seller/claim_line_item_serializer.rb +21 -0
  456. data/app/serializers/spree/api/v3/seller/claim_serializer.rb +25 -0
  457. data/app/serializers/spree/api/v3/seller/delivery_method_rule_serializer.rb +32 -0
  458. data/app/serializers/spree/api/v3/seller/delivery_method_serializer.rb +59 -0
  459. data/app/serializers/spree/api/v3/seller/delivery_profile_serializer.rb +26 -0
  460. data/app/serializers/spree/api/v3/seller/delivery_rate_serializer.rb +35 -0
  461. data/app/serializers/spree/api/v3/seller/delivery_serializer.rb +17 -0
  462. data/app/serializers/spree/api/v3/seller/delivery_zone_serializer.rb +26 -0
  463. data/app/serializers/spree/api/v3/seller/exchange_line_item_serializer.rb +29 -0
  464. data/app/serializers/spree/api/v3/seller/exchange_serializer.rb +30 -0
  465. data/app/serializers/spree/api/v3/seller/export_serializer.rb +44 -0
  466. data/app/serializers/spree/api/v3/seller/fulfillment_item_serializer.rb +43 -0
  467. data/app/serializers/spree/api/v3/seller/fulfillment_serializer.rb +76 -0
  468. data/app/serializers/spree/api/v3/seller/import_mapping_serializer.rb +20 -0
  469. data/app/serializers/spree/api/v3/seller/import_row_serializer.rb +17 -0
  470. data/app/serializers/spree/api/v3/seller/import_serializer.rb +77 -0
  471. data/app/serializers/spree/api/v3/seller/invitation_serializer.rb +29 -0
  472. data/app/serializers/spree/api/v3/seller/media_serializer.rb +26 -0
  473. data/app/serializers/spree/api/v3/seller/order_line_item_serializer.rb +44 -0
  474. data/app/serializers/spree/api/v3/seller/order_serializer.rb +119 -0
  475. data/app/serializers/spree/api/v3/seller/package_type_serializer.rb +52 -0
  476. data/app/serializers/spree/api/v3/seller/payment_split_serializer.rb +34 -0
  477. data/app/serializers/spree/api/v3/seller/payout_serializer.rb +36 -0
  478. data/app/serializers/spree/api/v3/seller/policy_serializer.rb +11 -0
  479. data/app/serializers/spree/api/v3/seller/product_serializer.rb +60 -0
  480. data/app/serializers/spree/api/v3/seller/product_submission_serializer.rb +30 -0
  481. data/app/serializers/spree/api/v3/seller/product_type_serializer.rb +29 -0
  482. data/app/serializers/spree/api/v3/seller/profile_serializer.rb +77 -0
  483. data/app/serializers/spree/api/v3/seller/reason_serializer.rb +24 -0
  484. data/app/serializers/spree/api/v3/seller/requirement_custom_field_serializer.rb +36 -0
  485. data/app/serializers/spree/api/v3/seller/requirement_status_serializer.rb +62 -0
  486. data/app/serializers/spree/api/v3/seller/requirement_submission_serializer.rb +33 -0
  487. data/app/serializers/spree/api/v3/seller/return_line_item_serializer.rb +24 -0
  488. data/app/serializers/spree/api/v3/seller/return_serializer.rb +51 -0
  489. data/app/serializers/spree/api/v3/seller/shipping_label_serializer.rb +23 -0
  490. data/app/serializers/spree/api/v3/seller/stock_level_serializer.rb +27 -0
  491. data/app/serializers/spree/api/v3/seller/stock_location_serializer.rb +17 -0
  492. data/app/serializers/spree/api/v3/seller/tax_identifier_serializer.rb +15 -0
  493. data/app/serializers/spree/api/v3/seller/team_member_serializer.rb +22 -0
  494. data/app/serializers/spree/api/v3/seller/transfer_serializer.rb +49 -0
  495. data/app/serializers/spree/api/v3/seller/variant_serializer.rb +71 -0
  496. data/app/serializers/spree/api/v3/seller_serializer.rb +50 -0
  497. data/app/serializers/spree/api/v3/shipping_label_event_serializer.rb +11 -0
  498. data/app/serializers/spree/api/v3/{stock_item_serializer.rb → stock_level_serializer.rb} +5 -5
  499. data/app/serializers/spree/api/v3/stock_location_serializer.rb +11 -7
  500. data/app/serializers/spree/api/v3/stock_movement_serializer.rb +8 -15
  501. data/app/serializers/spree/api/v3/stock_receipt_event_serializer.rb +11 -0
  502. data/app/serializers/spree/api/v3/stock_transfer_serializer.rb +6 -6
  503. data/app/serializers/spree/api/v3/store_credit_event_serializer.rb +29 -0
  504. data/app/serializers/spree/api/v3/supplier_event_serializer.rb +11 -0
  505. data/app/serializers/spree/api/v3/tax_identifier_serializer.rb +15 -0
  506. data/app/serializers/spree/api/v3/tax_line_serializer.rb +37 -0
  507. data/app/serializers/spree/api/v3/variant_serializer.rb +52 -2
  508. data/app/serializers/spree/api/v3/wishlist_item_serializer.rb +6 -6
  509. data/app/serializers/spree/api/v3/wishlist_serializer.rb +1 -1
  510. data/app/services/spree/api/v3/filters_aggregator.rb +14 -12
  511. data/app/services/spree/webhooks/deliver_webhook.rb +62 -26
  512. data/app/subscribers/spree/webhook_event_subscriber.rb +9 -5
  513. data/config/brakeman.ignore +1 -1
  514. data/config/initializers/typelizer.rb +51 -4
  515. data/config/locales/en.yml +5 -0
  516. data/config/routes.rb +730 -22
  517. data/lib/spree/api/configuration.rb +2 -7
  518. data/lib/spree/api/dependencies.rb +173 -227
  519. data/lib/spree/api/openapi/schema_helper.rb +179 -13
  520. data/lib/spree/api/testing_support/v3/base.rb +45 -15
  521. data/lib/spree/api.rb +10 -4
  522. data/lib/typelizer/open_enums.rb +35 -0
  523. metadata +341 -27
  524. data/app/controllers/spree/api/v3/admin/orders/adjustments_controller.rb +0 -25
  525. data/app/controllers/spree/api/v3/admin/stock_items_controller.rb +0 -42
  526. data/app/controllers/spree/api/v3/admin/store_credit_categories_controller.rb +0 -21
  527. data/app/controllers/spree/api/v3/store/digitals_controller.rb +0 -38
  528. data/app/serializers/spree/api/v3/admin/adjustment_serializer.rb +0 -24
  529. data/app/serializers/spree/api/v3/admin/dashboard_analytics_serializer.rb +0 -143
  530. data/app/serializers/spree/api/v3/admin/reimbursement_serializer.rb +0 -15
  531. data/app/serializers/spree/api/v3/admin/return_authorization_serializer.rb +0 -19
  532. data/app/serializers/spree/api/v3/admin/stock_item_serializer.rb +0 -34
  533. data/app/serializers/spree/api/v3/admin/store_credit_category_serializer.rb +0 -19
  534. data/app/serializers/spree/api/v3/customer_return_serializer.rb +0 -17
  535. data/app/serializers/spree/api/v3/digital_serializer.rb +0 -17
  536. data/app/serializers/spree/api/v3/reimbursement_serializer.rb +0 -27
  537. data/app/serializers/spree/api/v3/report_serializer.rb +0 -34
  538. data/app/serializers/spree/api/v3/return_authorization_serializer.rb +0 -31
  539. data/app/serializers/spree/api/v3/return_item_serializer.rb +0 -53
  540. data/app/serializers/spree/api/v3/shipping_category_serializer.rb +0 -11
@@ -0,0 +1,83 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ module Admin
5
+ module Orders
6
+ # Typed Spree::Fee rows (surcharge, handling, gift wrap, COD).
7
+ # Full CRUD — all fee rows are admin-managed. Order-level when no
8
+ # line_item/fulfillment target is given. Mutations re-sum the order
9
+ # totals and work on completed orders (sanctioned post-placement
10
+ # edit path).
11
+ class FeesController < BaseController
12
+ scoped_resource :orders
13
+
14
+ # POST /api/v3/admin/orders/:order_id/fees
15
+ def create
16
+ with_order_lock do
17
+ result = Spree.order_fee_create_service.call(order: @parent, attributes: permitted_params.merge(target_attributes))
18
+
19
+ if result.success?
20
+ render json: serialize_resource(result.value), status: :created
21
+ else
22
+ render_validation_error(result.value.errors)
23
+ end
24
+ end
25
+ end
26
+
27
+ # PATCH /api/v3/admin/orders/:order_id/fees/:id
28
+ def update
29
+ with_order_lock do
30
+ result = Spree.order_fee_update_service.call(order: @parent, fee: @resource, attributes: permitted_params)
31
+
32
+ if result.success?
33
+ render json: serialize_resource(@resource)
34
+ else
35
+ render_validation_error(@resource.errors)
36
+ end
37
+ end
38
+ end
39
+
40
+ # DELETE /api/v3/admin/orders/:order_id/fees/:id
41
+ def destroy
42
+ with_order_lock do
43
+ Spree.order_fee_destroy_service.call(order: @parent, fee: @resource)
44
+ head :no_content
45
+ end
46
+ end
47
+
48
+ protected
49
+
50
+ def model_class
51
+ Spree::Fee
52
+ end
53
+
54
+ def serializer_class
55
+ Spree.api.admin_fee_serializer
56
+ end
57
+
58
+ def scope
59
+ @parent.fees
60
+ end
61
+
62
+ def permitted_params
63
+ params.permit(:label, :amount, :kind)
64
+ end
65
+
66
+ def collection_includes
67
+ [:line_item, :fulfillment]
68
+ end
69
+
70
+ private
71
+
72
+ def target_attributes
73
+ attributes = {}
74
+ attributes[:line_item] = @parent.line_items.find_by_prefix_id!(params[:line_item_id]) if params[:line_item_id].present?
75
+ attributes[:fulfillment] = @parent.fulfillments.find_by_prefix_id!(params[:fulfillment_id]) if params[:fulfillment_id].present?
76
+ attributes
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
@@ -3,10 +3,18 @@ module Spree
3
3
  module V3
4
4
  module Admin
5
5
  module Orders
6
+ # The parcels owed on an order.
7
+ #
8
+ # Shipping, cancelling and splitting live in the shared concern;
9
+ # what is here is what makes them the operator's — the store-wide
10
+ # scope every id in a payload resolves through, and the two actions
11
+ # only an operator has.
6
12
  class FulfillmentsController < BaseController
13
+ include Spree::Api::V3::Orders::FulfillmentActions
14
+
7
15
  scoped_resource :fulfillments
8
16
 
9
- before_action :set_resource, only: [:show, :update, :fulfill, :cancel, :resume, :split]
17
+ before_action :set_resource, only: [:show, :update, :fulfill, :mark_delivered, :cancel, :split]
10
18
 
11
19
  # POST /api/v3/admin/orders/:order_id/fulfillments
12
20
  #
@@ -20,7 +28,7 @@ module Spree
20
28
  authorize!(:create, Spree::Shipment)
21
29
 
22
30
  with_order_lock do
23
- result = Spree.fulfillment_create_service.call(
31
+ result = Spree.fulfillment_create_workflow.call(
24
32
  order: @order,
25
33
  stock_location: stock_location_for_create,
26
34
  items: items_for_create,
@@ -39,101 +47,71 @@ module Spree
39
47
  end
40
48
  end
41
49
 
42
- # PATCH /api/v3/admin/orders/:order_id/fulfillments/:id
43
- def update
50
+ # PATCH /api/v3/admin/orders/:order_id/fulfillments/:id/mark_delivered
51
+ #
52
+ # Staff confirming the parcel arrived. Deliberately the operator's
53
+ # alone: that goods arrived is the buyer's word, not the sender's.
54
+ def mark_delivered
44
55
  with_order_lock do
45
- result = Spree.shipment_update_service.call(
46
- shipment: @resource,
47
- shipment_attributes: permitted_params.to_h
56
+ result = Spree.fulfillment_mark_delivered_workflow.call(
57
+ fulfillment: @resource,
58
+ delivered_at: mark_delivered_params[:delivered_at],
59
+ notify_customer: notify_customer?(mark_delivered_params[:notify_customer])
48
60
  )
49
61
 
50
62
  if result.success?
51
- render json: serialize_resource(@resource.reload)
63
+ render json: serialize_resource(result.value)
52
64
  else
53
65
  render_result_error(result)
54
66
  end
55
67
  end
56
68
  end
57
69
 
58
- # PATCH /api/v3/admin/orders/:order_id/fulfillments/:id/fulfill
59
- def fulfill
60
- with_order_lock do
61
- @resource.ship!
62
- render json: serialize_resource(@resource.reload)
63
- rescue StateMachines::InvalidTransition => e
64
- render_service_error(e.message)
65
- end
66
- end
70
+ protected
67
71
 
68
- # PATCH /api/v3/admin/orders/:order_id/fulfillments/:id/cancel
69
- def cancel
70
- with_order_lock do
71
- @resource.cancel!
72
- render json: serialize_resource(@resource.reload)
73
- rescue StateMachines::InvalidTransition => e
74
- render_service_error(e.message)
75
- end
72
+ def serializer_class
73
+ Spree.api.admin_fulfillment_serializer
76
74
  end
77
75
 
78
- # PATCH /api/v3/admin/orders/:order_id/fulfillments/:id/resume
79
- def resume
80
- with_order_lock do
81
- @resource.resume!
82
- render json: serialize_resource(@resource.reload)
83
- rescue StateMachines::InvalidTransition => e
84
- render_service_error(e.message)
85
- end
76
+ def collection_includes
77
+ [:deliveries, { shipping_labels: { file_attachment: :blob } }]
86
78
  end
87
79
 
88
- # PATCH /api/v3/admin/orders/:order_id/fulfillments/:id/split
89
- def split
90
- with_order_lock do
91
- variant = current_store.variants.find_by_prefix_id!(params[:variant_id])
92
- quantity = params[:quantity].to_i
93
-
94
- stock_location = if params[:stock_location_id].present?
95
- find_stock_location!(params[:stock_location_id])
96
- else
97
- @resource.stock_location
98
- end
99
-
100
- fulfilment_changer = @resource.transfer_to_location(variant, quantity, stock_location)
101
-
102
- if fulfilment_changer.run!
103
- fulfillments = @order.reload.shipments
104
- render json: {
105
- data: fulfillments.map { |s| serialize_resource(s) }
106
- }
107
- else
108
- render_validation_error(fulfilment_changer.errors)
109
- end
110
- end
80
+ def permitted_params
81
+ params.permit(:tracking, :tracking_carrier, :selected_delivery_rate_id, :stock_location_id)
111
82
  end
112
83
 
113
- protected
84
+ private
114
85
 
115
- def model_class
116
- Spree::Shipment
86
+ # Forcing past a stock or payment guard is the operator's call.
87
+ def fulfill_permitted_keys
88
+ super + [:force]
117
89
  end
118
90
 
119
- def serializer_class
120
- Spree.api.admin_fulfillment_serializer
91
+ def fulfill_workflow_options
92
+ { force: fulfill_params[:force].to_b }
121
93
  end
122
94
 
123
- def parent_association
124
- :shipments
95
+ # The whole catalogue, and any warehouse this staff member may
96
+ # see: an operator ships anything the store sells.
97
+ def variant_for_split
98
+ current_store.variants.find_by_prefix_id!(params[:variant_id])
125
99
  end
126
100
 
127
- # State changes go through the dedicated `fulfill`/`cancel`/`resume`
128
- # member actions, not mass assignment.
129
- def permitted_params
130
- params.permit(:tracking, :selected_delivery_rate_id, :stock_location_id)
101
+ def stock_location_for_split
102
+ return @resource.stock_location if params[:stock_location_id].blank?
103
+
104
+ find_stock_location!(params[:stock_location_id])
131
105
  end
132
106
 
133
107
  def create_params
134
108
  @create_params ||= params.permit(:stock_location_id, :tracking, :delivery_method_id, :cost, :status, metadata: {}, items: [:item_id, :quantity])
135
109
  end
136
110
 
111
+ def mark_delivered_params
112
+ @mark_delivered_params ||= params.permit(:delivered_at, :notify_customer)
113
+ end
114
+
137
115
  def find_stock_location!(id)
138
116
  Spree::StockLocation.accessible_by(current_ability, :show).find_by_prefix_id!(id)
139
117
  end
@@ -7,17 +7,18 @@ module Spree
7
7
  # POST /api/v3/admin/orders/:order_id/items
8
8
  def create
9
9
  with_order_lock do
10
- result = Spree.cart_add_item_service.call(
10
+ result = Spree.order_add_item_service.call(
11
11
  order: @parent,
12
12
  variant: variant,
13
13
  quantity: permitted_params[:quantity] || 1,
14
- options: permitted_params[:options] || {}
14
+ options: permitted_params[:options] || {},
15
+ **manual_price_arguments
15
16
  )
16
17
 
17
18
  if result.success?
18
19
  render json: serialize_resource(result.value), status: :created
19
20
  else
20
- render_service_error(result.error, code: ERROR_CODES[:insufficient_stock])
21
+ render_order_item_error(result, default_code: ERROR_CODES[:insufficient_stock])
21
22
  end
22
23
  end
23
24
  end
@@ -25,24 +26,18 @@ module Spree
25
26
  # PATCH /api/v3/admin/orders/:order_id/items/:id
26
27
  def update
27
28
  with_order_lock do
28
- if permitted_params[:quantity].present?
29
- result = Spree.cart_set_item_quantity_service.call(
30
- order: @parent,
31
- line_item: @resource,
32
- quantity: permitted_params[:quantity]
33
- )
34
-
35
- if result.success?
36
- render json: serialize_resource(@resource.reload)
37
- else
38
- render_service_error(result.error, code: ERROR_CODES[:invalid_quantity])
39
- end
29
+ result = Spree.order_update_item_service.call(
30
+ order: @parent,
31
+ line_item: @resource,
32
+ quantity: permitted_params[:quantity],
33
+ metadata: permitted_params[:metadata]&.to_h,
34
+ **manual_price_arguments
35
+ )
36
+
37
+ if result.success?
38
+ render json: serialize_resource(@resource.reload)
40
39
  else
41
- if @resource.update(permitted_params.except(:variant_id, :quantity))
42
- render json: serialize_resource(@resource)
43
- else
44
- render_errors(@resource.errors)
45
- end
40
+ render_order_item_error(result, default_code: ERROR_CODES[:invalid_quantity])
46
41
  end
47
42
  end
48
43
  end
@@ -50,7 +45,7 @@ module Spree
50
45
  # DELETE /api/v3/admin/orders/:order_id/items/:id
51
46
  def destroy
52
47
  with_order_lock do
53
- Spree.cart_remove_line_item_service.call(
48
+ Spree.order_remove_line_item_service.call(
54
49
  order: @parent,
55
50
  line_item: @resource
56
51
  )
@@ -74,14 +69,37 @@ module Spree
74
69
  end
75
70
 
76
71
  def permitted_params
77
- params.permit(:variant_id, :quantity, metadata: {}, options: {})
72
+ params.permit(:variant_id, :quantity, :price, metadata: {}, options: {})
78
73
  end
79
74
 
80
75
  private
81
76
 
77
+ # price is tri-state — absent leaves pricing alone, an amount
78
+ # negotiates the line, an explicit null reverts to catalog
79
+ # pricing — so it is forwarded only when the request carried the
80
+ # key, which also keeps custom services without the keyword
81
+ # working for every other request.
82
+ def manual_price_arguments
83
+ return {} unless params.key?(:price)
84
+
85
+ { price: permitted_params[:price] }
86
+ end
87
+
82
88
  def variant
83
89
  @variant ||= current_store.variants.find_by_prefix_id!(permitted_params[:variant_id])
84
90
  end
91
+
92
+ # Renders a failed add/update with a code inferred from symbolic errors.
93
+ #
94
+ # @param result [Spree::ServiceModule::Result] failed service outcome
95
+ # @param default_code [String] fallback when the error carries no symbol
96
+ def render_order_item_error(result, default_code:)
97
+ error = result.error
98
+ errors = error.respond_to?(:value) ? error.value : error
99
+ code = infer_line_item_error_code(errors, default: default_code)
100
+
101
+ render_service_error(error, code: code)
102
+ end
85
103
  end
86
104
  end
87
105
  end
@@ -0,0 +1,75 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ module Admin
5
+ module Orders
6
+ # The postage on a parcel or a return.
7
+ #
8
+ # Recording, printing and deleting live in the shared concern. What
9
+ # is here is what needs the operator's carrier account: buying a
10
+ # label, and refunding one that was bought and not used.
11
+ class LabelsController < BaseController
12
+ include Spree::Api::V3::Orders::ShippingLabelActions
13
+
14
+ before_action :set_resource, only: [:show, :download, :refund, :destroy]
15
+
16
+ # POST .../labels
17
+ #
18
+ # Buys the label through the parcel's provider, or — when a `file`
19
+ # is given — records one the merchant bought elsewhere.
20
+ def create
21
+ authorize!(:create, Spree::ShippingLabel)
22
+
23
+ return record_uploaded_label if label_params[:file].present?
24
+
25
+ with_order_lock do
26
+ result = Spree.shipping_label_purchase_workflow.call(owner: @parent)
27
+
28
+ if result.success?
29
+ render json: serialize_resource(result.value), status: :created
30
+ else
31
+ render_result_error(result)
32
+ end
33
+ end
34
+ end
35
+
36
+ # PATCH .../labels/:id/refund — a transition, so a member action.
37
+ def refund
38
+ with_order_lock do
39
+ result = Spree.shipping_label_refund_workflow.call(shipping_label: @resource)
40
+
41
+ if result.success?
42
+ render json: serialize_resource(result.value)
43
+ else
44
+ render_result_error(result)
45
+ end
46
+ end
47
+ end
48
+
49
+ protected
50
+
51
+ def serializer_class
52
+ Spree.api.admin_shipping_label_serializer
53
+ end
54
+
55
+ def collection_includes
56
+ [:integration, :delivery, { file_attachment: :blob }]
57
+ end
58
+
59
+ # The owner — fulfillment or return — is the parent the labels
60
+ # hang off; the base fetches the order first, so an owner id from
61
+ # another order can never resolve.
62
+ def set_parent
63
+ super
64
+ @parent = if params[:return_id].present?
65
+ @order.returns.find_by_prefix_id!(params[:return_id])
66
+ else
67
+ @order.fulfillments.find_by_prefix_id!(params[:fulfillment_id])
68
+ end
69
+ end
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
@@ -27,32 +27,50 @@ module Spree
27
27
 
28
28
  authorize_resource!(@resource, :create)
29
29
 
30
- if @resource.save
31
- render json: serialize_resource(@resource), status: :created
32
- else
33
- render_validation_error(@resource.errors)
34
- end
30
+ render_validation_error(@resource.errors) unless @resource.save
31
+ end
32
+ return if performed?
33
+
34
+ # Gateway I/O — outside the order lock. A source that cannot be
35
+ # profiled must not linger on a half-created payment; the old
36
+ # after_save callback rolled the whole save back.
37
+ begin
38
+ @resource.create_payment_profile if @resource.profiles_supported?
39
+ rescue Spree::Core::GatewayError => e
40
+ @resource.destroy
41
+ return render_service_error(e.message)
35
42
  end
43
+
44
+ render json: serialize_resource(@resource), status: :created
36
45
  end
37
46
 
38
47
  # PATCH /api/v3/admin/orders/:order_id/payments/:id/capture
48
+ #
49
+ # Capture and void deliberately skip with_order_lock: the workflows
50
+ # call the gateway from an external_step, and holding a row lock
51
+ # across a network round trip is exactly what that boundary exists
52
+ # to prevent. Both flows are idempotent on replay — an
53
+ # already-captured or already-void payment returns success.
39
54
  def capture
40
- with_order_lock do
41
- amount = params[:amount] ? (params[:amount].to_f * 100).round : nil
42
- @resource.capture!(amount)
43
- render json: serialize_resource(@resource.reload)
44
- rescue Spree::Core::GatewayError => e
45
- render_service_error(e.message)
55
+ amount = params[:amount] ? (params[:amount].to_f * 100).round : nil
56
+
57
+ result = Spree.payment_capture_workflow.call(payment: @resource, amount: amount)
58
+
59
+ if result.success?
60
+ render json: serialize_resource(result.value)
61
+ else
62
+ render_result_error(result)
46
63
  end
47
64
  end
48
65
 
49
66
  # PATCH /api/v3/admin/orders/:order_id/payments/:id/void
50
67
  def void
51
- with_order_lock do
52
- @resource.void_transaction!
53
- render json: serialize_resource(@resource.reload)
54
- rescue Spree::Core::GatewayError => e
55
- render_service_error(e.message)
68
+ result = Spree.payment_void_workflow.call(payment: @resource)
69
+
70
+ if result.success?
71
+ render json: serialize_resource(result.value)
72
+ else
73
+ render_result_error(result)
56
74
  end
57
75
  end
58
76
 
@@ -78,9 +96,9 @@ module Spree
78
96
  # to that customer to prevent attaching customer A's card to
79
97
  # customer B's order. Refuse if no customer is assigned.
80
98
  def find_source!(payment_method, source_id)
81
- raise ActiveRecord::RecordNotFound unless @parent.user
99
+ raise ActiveRecord::RecordNotFound unless @parent.customer
82
100
 
83
- @parent.user.credit_cards.find_by_prefix_id!(source_id)
101
+ @parent.customer.credit_cards.find_by_prefix_id!(source_id)
84
102
  end
85
103
  end
86
104
  end
@@ -7,24 +7,36 @@ module Spree
7
7
  scoped_resource :refunds
8
8
 
9
9
  # POST /api/v3/admin/orders/:order_id/refunds
10
+ #
11
+ # Deliberately not wrapped in with_order_lock: the workflow calls
12
+ # the gateway from an external_step, and holding a row lock across
13
+ # a network round trip is exactly what that boundary exists to
14
+ # prevent. Refund#perform! is a no-op on a credited refund, so a
15
+ # double submit cannot credit twice.
10
16
  def create
11
- with_order_lock do
12
- payment = @parent.payments.accessible_by(current_ability, :update).find_by_prefix_id!(params[:payment_id])
13
- reason = Spree::RefundReason.accessible_by(current_ability, :show).find_by_prefix_id!(params[:refund_reason_id]) if params[:refund_reason_id].present?
14
- reason ||= Spree::RefundReason.accessible_by(current_ability, :show).first
15
-
16
- @resource = payment.refunds.build(
17
- amount: params[:amount],
18
- reason: reason,
19
- transaction_id: nil
20
- )
21
- authorize_resource!(@resource, :create)
22
-
23
- if @resource.save
24
- render json: serialize_resource(@resource), status: :created
25
- else
26
- render_validation_error(@resource.errors)
27
- end
17
+ payment = settlement_payments.accessible_by(current_ability, :update).find_by_prefix_id!(params[:payment_id])
18
+ # Scoped to the store, not just the ability — a reason id from
19
+ # another store must 404, not attach.
20
+ reason = current_store.refund_reasons.accessible_by(current_ability, :show).find_by_prefix_id!(params[:refund_reason_id]) if params[:refund_reason_id].present?
21
+ reason ||= current_store.refund_reasons.accessible_by(current_ability, :show).first
22
+
23
+ authorize_resource!(payment.refunds.build(amount: params[:amount], reason: reason), :create)
24
+
25
+ result = Spree.refund_create_workflow.call(
26
+ payment: payment,
27
+ amount: params[:amount],
28
+ reason: reason,
29
+ refunder: try_spree_current_user,
30
+ # Names which order is being refunded. Only matters when the
31
+ # payment is shared by a split checkout, where it covers several
32
+ # and the payment cannot say which one this is for.
33
+ order: @parent
34
+ )
35
+
36
+ if result.success?
37
+ render json: serialize_resource(result.value), status: :created
38
+ else
39
+ render_result_error(result)
28
40
  end
29
41
  end
30
42
 
@@ -38,8 +50,17 @@ module Spree
38
50
  Spree.api.admin_refund_serializer
39
51
  end
40
52
 
53
+ # Every refund names the order it put right, so this reads the same
54
+ # for an ordinary order and for one placed in a split checkout,
55
+ # whose payments belong to its group rather than to itself.
41
56
  def scope
42
- Spree::Refund.where(payment_id: @parent.payment_ids)
57
+ Spree::Refund.where(order_id: @parent.id)
58
+ end
59
+
60
+ # The payments that can settle this order — its own, or its group's
61
+ # when it was placed alongside others.
62
+ def settlement_payments
63
+ @parent.settlement_payments
43
64
  end
44
65
 
45
66
  def collection_includes
@@ -0,0 +1,70 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ module Admin
5
+ module Orders
6
+ # Returns on a completed order. Every status change goes through its
7
+ # own member action rather than mass assignment, because each one is
8
+ # a workflow with its own arguments — receiving carries the
9
+ # quantities the warehouse counted, refunding carries a method and
10
+ # an amount.
11
+ class ReturnsController < BaseController
12
+ include Spree::Api::V3::Orders::ReturnActions
13
+
14
+ # Returns are a subject of the `orders` catalog resource (see
15
+ # Spree::PermissionConfiguration), so `read_orders`/`write_orders`
16
+ # gate these endpoints — matching the cross-order ReturnsController.
17
+ # Declaring `:returns` here would name a key no catalog knows: the
18
+ # JWT gate would silently no-op and a `write_orders` secret key
19
+ # would be wrongly denied.
20
+ scoped_resource :orders
21
+
22
+ before_action :set_resource, only: [:show, :update, :approve, :receive, :refund, :cancel]
23
+
24
+ # PATCH /api/v3/admin/orders/:order_id/returns/:id
25
+ #
26
+ # Editable fields only — status moves through the member actions.
27
+ def update
28
+ if @resource.update(permitted_params)
29
+ render json: serialize_resource(@resource.reload)
30
+ else
31
+ render_validation_error(@resource.errors)
32
+ end
33
+ end
34
+
35
+ protected
36
+
37
+ def serializer_class
38
+ Spree.api.admin_return_serializer
39
+ end
40
+
41
+ # `documents` resolves the provider through the returned units and
42
+ # reads the labels it produced, so both are preloaded: without them
43
+ # a page of returns is a query per row.
44
+ def collection_includes
45
+ [
46
+ :reason, :stock_location, :deliveries,
47
+ { shipping_labels: { file_attachment: :blob } },
48
+ { return_line_items: [:variant, :line_item, { fulfillment_item: :fulfillment }] }
49
+ ]
50
+ end
51
+
52
+ def permitted_params
53
+ params.permit(:memo, :reason_id, :stock_location_id, metadata: {})
54
+ end
55
+
56
+ private
57
+
58
+ # Any of the store's warehouses the caller may see.
59
+ def stock_location_for_create
60
+ return nil if create_params[:stock_location_id].blank?
61
+
62
+ current_store.stock_locations.accessible_by(current_ability, :show).
63
+ find_by_prefix_id!(create_params[:stock_location_id])
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -14,7 +14,7 @@ module Spree
14
14
  # credit up to the order total.
15
15
  def create
16
16
  with_order_lock do
17
- result = Spree.checkout_add_store_credit_service.call(
17
+ result = Spree.store_credit_apply_service.call(
18
18
  order: @parent,
19
19
  amount: params[:amount].try(:to_f)
20
20
  )
@@ -30,7 +30,7 @@ module Spree
30
30
  # DELETE /api/v3/admin/orders/:order_id/store_credits
31
31
  def destroy
32
32
  with_order_lock do
33
- result = Spree.checkout_remove_store_credit_service.call(order: @parent)
33
+ result = Spree.store_credit_remove_service.call(order: @parent)
34
34
 
35
35
  if result.success?
36
36
  head :no_content