spree_api 5.6.1 → 6.0.0.beta2

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 (542) 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 +20 -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 +18 -9
  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 +164 -33
  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 +239 -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 +66 -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 +74 -16
  184. data/app/controllers/spree/api/v3/resource_controller.rb +170 -39
  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/actor_serializer.rb +28 -0
  282. data/app/serializers/spree/api/v3/admin/address_serializer.rb +27 -4
  283. data/app/serializers/spree/api/v3/admin/admin_user_serializer.rb +13 -10
  284. data/app/serializers/spree/api/v3/admin/api_key_serializer.rb +15 -2
  285. data/app/serializers/spree/api/v3/admin/applied_promotion_serializer.rb +15 -0
  286. data/app/serializers/spree/api/v3/admin/cart_serializer.rb +34 -0
  287. data/app/serializers/spree/api/v3/admin/catalog_assignment_serializer.rb +32 -0
  288. data/app/serializers/spree/api/v3/admin/catalog_order_minimum_serializer.rb +23 -0
  289. data/app/serializers/spree/api/v3/admin/catalog_price_serializer.rb +48 -0
  290. data/app/serializers/spree/api/v3/admin/catalog_price_tier_serializer.rb +23 -0
  291. data/app/serializers/spree/api/v3/admin/catalog_product_serializer.rb +57 -0
  292. data/app/serializers/spree/api/v3/admin/catalog_product_term_serializer.rb +38 -0
  293. data/app/serializers/spree/api/v3/admin/catalog_quantity_rule_serializer.rb +37 -0
  294. data/app/serializers/spree/api/v3/admin/catalog_serializer.rb +46 -0
  295. data/app/serializers/spree/api/v3/admin/category_serializer.rb +3 -2
  296. data/app/serializers/spree/api/v3/admin/channel_serializer.rb +15 -1
  297. data/app/serializers/spree/api/v3/admin/claim_line_item_serializer.rb +16 -0
  298. data/app/serializers/spree/api/v3/admin/claim_reason_serializer.rb +21 -0
  299. data/app/serializers/spree/api/v3/admin/claim_serializer.rb +28 -0
  300. data/app/serializers/spree/api/v3/admin/collection_rule_serializer.rb +22 -0
  301. data/app/serializers/spree/api/v3/admin/collection_serializer.rb +29 -0
  302. data/app/serializers/spree/api/v3/admin/commission_line_serializer.rb +67 -0
  303. data/app/serializers/spree/api/v3/admin/commission_rate_serializer.rb +69 -0
  304. data/app/serializers/spree/api/v3/admin/commission_rule_serializer.rb +61 -0
  305. data/app/serializers/spree/api/v3/admin/company_invitation_serializer.rb +15 -0
  306. data/app/serializers/spree/api/v3/admin/company_membership_serializer.rb +11 -0
  307. data/app/serializers/spree/api/v3/admin/company_serializer.rb +37 -0
  308. data/app/serializers/spree/api/v3/admin/concerns/external_references_attribute.rb +33 -0
  309. data/app/serializers/spree/api/v3/admin/consent_record_serializer.rb +28 -0
  310. data/app/serializers/spree/api/v3/admin/country_serializer.rb +2 -2
  311. data/app/serializers/spree/api/v3/admin/credit_card_serializer.rb +1 -1
  312. data/app/serializers/spree/api/v3/admin/custom_field_definition_serializer.rb +2 -2
  313. data/app/serializers/spree/api/v3/admin/custom_field_serializer.rb +2 -2
  314. data/app/serializers/spree/api/v3/admin/customer_serializer.rb +23 -22
  315. data/app/serializers/spree/api/v3/admin/dashboard_counter_serializer.rb +24 -0
  316. data/app/serializers/spree/api/v3/admin/data_request_serializer.rb +36 -0
  317. data/app/serializers/spree/api/v3/admin/delivery_method_rule_serializer.rb +32 -0
  318. data/app/serializers/spree/api/v3/admin/delivery_method_serializer.rb +66 -1
  319. data/app/serializers/spree/api/v3/admin/delivery_method_service_serializer.rb +15 -0
  320. data/app/serializers/spree/api/v3/admin/delivery_origin_group_serializer.rb +34 -0
  321. data/app/serializers/spree/api/v3/admin/delivery_profile_serializer.rb +65 -0
  322. data/app/serializers/spree/api/v3/admin/delivery_rate_serializer.rb +10 -1
  323. data/app/serializers/spree/api/v3/admin/delivery_serializer.rb +20 -0
  324. data/app/serializers/spree/api/v3/admin/delivery_zone_member_serializer.rb +11 -0
  325. data/app/serializers/spree/api/v3/admin/delivery_zone_serializer.rb +29 -0
  326. data/app/serializers/spree/api/v3/admin/digital_asset_serializer.rb +59 -0
  327. data/app/serializers/spree/api/v3/admin/discount_serializer.rb +3 -4
  328. data/app/serializers/spree/api/v3/admin/exchange_line_item_serializer.rb +16 -0
  329. data/app/serializers/spree/api/v3/admin/exchange_serializer.rb +34 -0
  330. data/app/serializers/spree/api/v3/admin/export_serializer.rb +20 -1
  331. data/app/serializers/spree/api/v3/admin/fee_serializer.rb +14 -0
  332. data/app/serializers/spree/api/v3/admin/freight_summary_line_serializer.rb +46 -0
  333. data/app/serializers/spree/api/v3/admin/freight_summary_serializer.rb +16 -0
  334. data/app/serializers/spree/api/v3/admin/fulfillment_item_serializer.rb +39 -0
  335. data/app/serializers/spree/api/v3/admin/fulfillment_serializer.rb +31 -9
  336. data/app/serializers/spree/api/v3/admin/gift_card_serializer.rb +2 -3
  337. data/app/serializers/spree/api/v3/admin/import_serializer.rb +15 -2
  338. data/app/serializers/spree/api/v3/admin/integration_serializer.rb +32 -0
  339. data/app/serializers/spree/api/v3/admin/invitation_serializer.rb +4 -4
  340. data/app/serializers/spree/api/v3/admin/line_item_serializer.rb +46 -5
  341. data/app/serializers/spree/api/v3/admin/market_serializer.rb +5 -1
  342. data/app/serializers/spree/api/v3/admin/media_serializer.rb +50 -2
  343. data/app/serializers/spree/api/v3/admin/membership_product_serializer.rb +29 -0
  344. data/app/serializers/spree/api/v3/admin/order_cancellation_reason_serializer.rb +29 -0
  345. data/app/serializers/spree/api/v3/admin/order_group_serializer.rb +50 -0
  346. data/app/serializers/spree/api/v3/admin/order_routing_rule_serializer.rb +2 -6
  347. data/app/serializers/spree/api/v3/admin/order_serializer.rb +126 -31
  348. data/app/serializers/spree/api/v3/admin/package_type_serializer.rb +53 -0
  349. data/app/serializers/spree/api/v3/admin/payment_method_serializer.rb +8 -2
  350. data/app/serializers/spree/api/v3/admin/payment_serializer.rb +6 -0
  351. data/app/serializers/spree/api/v3/admin/payment_split_serializer.rb +41 -0
  352. data/app/serializers/spree/api/v3/admin/permission_serializer.rb +39 -0
  353. data/app/serializers/spree/api/v3/admin/policy_serializer.rb +11 -0
  354. data/app/serializers/spree/api/v3/admin/price_adjustment_tier_serializer.rb +22 -0
  355. data/app/serializers/spree/api/v3/admin/price_list_product_serializer.rb +32 -0
  356. data/app/serializers/spree/api/v3/admin/price_list_serializer.rb +20 -8
  357. data/app/serializers/spree/api/v3/admin/price_rule_serializer.rb +2 -12
  358. data/app/serializers/spree/api/v3/admin/price_serializer.rb +3 -0
  359. data/app/serializers/spree/api/v3/admin/product_serializer.rb +54 -8
  360. data/app/serializers/spree/api/v3/admin/product_submission_serializer.rb +39 -0
  361. data/app/serializers/spree/api/v3/admin/product_type_custom_field_definition_serializer.rb +44 -0
  362. data/app/serializers/spree/api/v3/admin/product_type_serializer.rb +34 -0
  363. data/app/serializers/spree/api/v3/admin/promotion_action_serializer.rb +6 -12
  364. data/app/serializers/spree/api/v3/admin/promotion_rule_serializer.rb +17 -15
  365. data/app/serializers/spree/api/v3/admin/purchase_order_item_serializer.rb +80 -0
  366. data/app/serializers/spree/api/v3/admin/purchase_order_serializer.rb +94 -0
  367. data/app/serializers/spree/api/v3/admin/refund_reason_serializer.rb +27 -0
  368. data/app/serializers/spree/api/v3/admin/refund_serializer.rb +6 -5
  369. data/app/serializers/spree/api/v3/admin/reporting_result_serializer.rb +72 -0
  370. data/app/serializers/spree/api/v3/admin/return_line_item_serializer.rb +16 -0
  371. data/app/serializers/spree/api/v3/admin/return_reason_serializer.rb +21 -0
  372. data/app/serializers/spree/api/v3/admin/return_serializer.rb +58 -0
  373. data/app/serializers/spree/api/v3/admin/role_serializer.rb +24 -6
  374. data/app/serializers/spree/api/v3/admin/saved_report_serializer.rb +32 -0
  375. data/app/serializers/spree/api/v3/admin/seller_balance_serializer.rb +37 -0
  376. data/app/serializers/spree/api/v3/admin/seller_payout_serializer.rb +46 -0
  377. data/app/serializers/spree/api/v3/admin/seller_requirement_serializer.rb +68 -0
  378. data/app/serializers/spree/api/v3/admin/seller_requirement_status_serializer.rb +48 -0
  379. data/app/serializers/spree/api/v3/admin/seller_requirement_submission_serializer.rb +57 -0
  380. data/app/serializers/spree/api/v3/admin/seller_serializer.rb +92 -0
  381. data/app/serializers/spree/api/v3/admin/seller_team_member_serializer.rb +29 -0
  382. data/app/serializers/spree/api/v3/admin/seller_transfer_serializer.rb +53 -0
  383. data/app/serializers/spree/api/v3/admin/shipping_label_serializer.rb +82 -0
  384. data/app/serializers/spree/api/v3/admin/state_serializer.rb +1 -1
  385. data/app/serializers/spree/api/v3/admin/stock_level_serializer.rb +65 -0
  386. data/app/serializers/spree/api/v3/admin/stock_location_serializer.rb +20 -4
  387. data/app/serializers/spree/api/v3/admin/stock_movement_serializer.rb +116 -0
  388. data/app/serializers/spree/api/v3/admin/stock_receipt_item_serializer.rb +57 -0
  389. data/app/serializers/spree/api/v3/admin/stock_receipt_serializer.rb +48 -0
  390. data/app/serializers/spree/api/v3/admin/stock_reservation_serializer.rb +5 -5
  391. data/app/serializers/spree/api/v3/admin/stock_transfer_item_serializer.rb +57 -0
  392. data/app/serializers/spree/api/v3/admin/stock_transfer_serializer.rb +36 -16
  393. data/app/serializers/spree/api/v3/admin/store_credit_event_serializer.rb +32 -0
  394. data/app/serializers/spree/api/v3/admin/store_credit_serializer.rb +42 -7
  395. data/app/serializers/spree/api/v3/admin/store_serializer.rb +65 -1
  396. data/app/serializers/spree/api/v3/admin/supplier_serializer.rb +39 -0
  397. data/app/serializers/spree/api/v3/admin/tax_exemption_certificate_serializer.rb +67 -0
  398. data/app/serializers/spree/api/v3/admin/tax_identifier_serializer.rb +43 -0
  399. data/app/serializers/spree/api/v3/admin/tax_line_serializer.rb +21 -0
  400. data/app/serializers/spree/api/v3/admin/tax_rate_serializer.rb +49 -0
  401. data/app/serializers/spree/api/v3/admin/variant_serializer.rb +49 -8
  402. data/app/serializers/spree/api/v3/applied_promotion_serializer.rb +23 -0
  403. data/app/serializers/spree/api/v3/base_serializer.rb +61 -2
  404. data/app/serializers/spree/api/v3/cart_serializer.rb +90 -12
  405. data/app/serializers/spree/api/v3/category_serializer.rb +3 -3
  406. data/app/serializers/spree/api/v3/claim_line_item_serializer.rb +50 -0
  407. data/app/serializers/spree/api/v3/claim_reason_serializer.rb +20 -0
  408. data/app/serializers/spree/api/v3/claim_serializer.rb +62 -0
  409. data/app/serializers/spree/api/v3/collection_serializer.rb +41 -0
  410. data/app/serializers/spree/api/v3/company_invitation_serializer.rb +28 -0
  411. data/app/serializers/spree/api/v3/company_membership_serializer.rb +28 -0
  412. data/app/serializers/spree/api/v3/company_serializer.rb +33 -0
  413. data/app/serializers/spree/api/v3/custom_field_serializer.rb +2 -2
  414. data/app/serializers/spree/api/v3/customer_serializer.rb +9 -1
  415. data/app/serializers/spree/api/v3/data_request_event_serializer.rb +30 -0
  416. data/app/serializers/spree/api/v3/data_request_serializer.rb +40 -0
  417. data/app/serializers/spree/api/v3/delivery_method_serializer.rb +12 -2
  418. data/app/serializers/spree/api/v3/delivery_rate_serializer.rb +34 -17
  419. data/app/serializers/spree/api/v3/delivery_serializer.rb +29 -0
  420. data/app/serializers/spree/api/v3/delivery_zone_member_serializer.rb +29 -0
  421. data/app/serializers/spree/api/v3/delivery_zone_serializer.rb +13 -0
  422. data/app/serializers/spree/api/v3/digital_asset_serializer.rb +23 -0
  423. data/app/serializers/spree/api/v3/digital_link_serializer.rb +6 -2
  424. data/app/serializers/spree/api/v3/discount_serializer.rb +21 -7
  425. data/app/serializers/spree/api/v3/exchange_line_item_serializer.rb +53 -0
  426. data/app/serializers/spree/api/v3/exchange_serializer.rb +61 -0
  427. data/app/serializers/spree/api/v3/fee_serializer.rb +27 -0
  428. data/app/serializers/spree/api/v3/freight_summary_serializer.rb +38 -0
  429. data/app/serializers/spree/api/v3/fulfillment_serializer.rb +28 -15
  430. data/app/serializers/spree/api/v3/gift_card_serializer.rb +2 -2
  431. data/app/serializers/spree/api/v3/import_row_serializer.rb +1 -1
  432. data/app/serializers/spree/api/v3/import_serializer.rb +18 -4
  433. data/app/serializers/spree/api/v3/invitation_serializer.rb +1 -1
  434. data/app/serializers/spree/api/v3/line_item_serializer.rb +18 -1
  435. data/app/serializers/spree/api/v3/market_serializer.rb +2 -2
  436. data/app/serializers/spree/api/v3/{asset_serializer.rb → media_event_serializer.rb} +4 -4
  437. data/app/serializers/spree/api/v3/media_serializer.rb +48 -7
  438. data/app/serializers/spree/api/v3/newsletter_subscriber_serializer.rb +1 -1
  439. data/app/serializers/spree/api/v3/option_type_serializer.rb +1 -1
  440. data/app/serializers/spree/api/v3/order_group_serializer.rb +60 -0
  441. data/app/serializers/spree/api/v3/order_serializer.rb +58 -6
  442. data/app/serializers/spree/api/v3/payment_method_serializer.rb +1 -1
  443. data/app/serializers/spree/api/v3/payment_serializer.rb +2 -6
  444. data/app/serializers/spree/api/v3/payment_session_serializer.rb +10 -3
  445. data/app/serializers/spree/api/v3/payment_setup_session_serializer.rb +1 -1
  446. data/app/serializers/spree/api/v3/policy_serializer.rb +7 -2
  447. data/app/serializers/spree/api/v3/product_filter_option_serializer.rb +1 -1
  448. data/app/serializers/spree/api/v3/product_serializer.rb +42 -10
  449. data/app/serializers/spree/api/v3/product_type_serializer.rb +17 -0
  450. data/app/serializers/spree/api/v3/purchase_order_event_serializer.rb +11 -0
  451. data/app/serializers/spree/api/v3/refund_serializer.rb +9 -3
  452. data/app/serializers/spree/api/v3/return_line_item_serializer.rb +42 -0
  453. data/app/serializers/spree/api/v3/return_reason_serializer.rb +20 -0
  454. data/app/serializers/spree/api/v3/return_serializer.rb +62 -0
  455. data/app/serializers/spree/api/v3/seller/balance_serializer.rb +35 -0
  456. data/app/serializers/spree/api/v3/seller/claim_line_item_serializer.rb +21 -0
  457. data/app/serializers/spree/api/v3/seller/claim_serializer.rb +25 -0
  458. data/app/serializers/spree/api/v3/seller/delivery_method_rule_serializer.rb +32 -0
  459. data/app/serializers/spree/api/v3/seller/delivery_method_serializer.rb +59 -0
  460. data/app/serializers/spree/api/v3/seller/delivery_profile_serializer.rb +26 -0
  461. data/app/serializers/spree/api/v3/seller/delivery_rate_serializer.rb +35 -0
  462. data/app/serializers/spree/api/v3/seller/delivery_serializer.rb +17 -0
  463. data/app/serializers/spree/api/v3/seller/delivery_zone_serializer.rb +26 -0
  464. data/app/serializers/spree/api/v3/seller/exchange_line_item_serializer.rb +29 -0
  465. data/app/serializers/spree/api/v3/seller/exchange_serializer.rb +30 -0
  466. data/app/serializers/spree/api/v3/seller/export_serializer.rb +44 -0
  467. data/app/serializers/spree/api/v3/seller/fulfillment_item_serializer.rb +43 -0
  468. data/app/serializers/spree/api/v3/seller/fulfillment_serializer.rb +76 -0
  469. data/app/serializers/spree/api/v3/seller/import_mapping_serializer.rb +20 -0
  470. data/app/serializers/spree/api/v3/seller/import_row_serializer.rb +17 -0
  471. data/app/serializers/spree/api/v3/seller/import_serializer.rb +77 -0
  472. data/app/serializers/spree/api/v3/seller/invitation_serializer.rb +29 -0
  473. data/app/serializers/spree/api/v3/seller/media_serializer.rb +26 -0
  474. data/app/serializers/spree/api/v3/seller/order_line_item_serializer.rb +44 -0
  475. data/app/serializers/spree/api/v3/seller/order_serializer.rb +119 -0
  476. data/app/serializers/spree/api/v3/seller/package_type_serializer.rb +52 -0
  477. data/app/serializers/spree/api/v3/seller/payment_split_serializer.rb +34 -0
  478. data/app/serializers/spree/api/v3/seller/payout_serializer.rb +36 -0
  479. data/app/serializers/spree/api/v3/seller/policy_serializer.rb +11 -0
  480. data/app/serializers/spree/api/v3/seller/product_serializer.rb +60 -0
  481. data/app/serializers/spree/api/v3/seller/product_submission_serializer.rb +30 -0
  482. data/app/serializers/spree/api/v3/seller/product_type_serializer.rb +29 -0
  483. data/app/serializers/spree/api/v3/seller/profile_serializer.rb +77 -0
  484. data/app/serializers/spree/api/v3/seller/reason_serializer.rb +24 -0
  485. data/app/serializers/spree/api/v3/seller/requirement_custom_field_serializer.rb +36 -0
  486. data/app/serializers/spree/api/v3/seller/requirement_status_serializer.rb +62 -0
  487. data/app/serializers/spree/api/v3/seller/requirement_submission_serializer.rb +33 -0
  488. data/app/serializers/spree/api/v3/seller/return_line_item_serializer.rb +24 -0
  489. data/app/serializers/spree/api/v3/seller/return_serializer.rb +51 -0
  490. data/app/serializers/spree/api/v3/seller/shipping_label_serializer.rb +23 -0
  491. data/app/serializers/spree/api/v3/seller/stock_level_serializer.rb +27 -0
  492. data/app/serializers/spree/api/v3/seller/stock_location_serializer.rb +17 -0
  493. data/app/serializers/spree/api/v3/seller/tax_identifier_serializer.rb +15 -0
  494. data/app/serializers/spree/api/v3/seller/team_member_serializer.rb +22 -0
  495. data/app/serializers/spree/api/v3/seller/transfer_serializer.rb +49 -0
  496. data/app/serializers/spree/api/v3/seller/variant_serializer.rb +71 -0
  497. data/app/serializers/spree/api/v3/seller_serializer.rb +50 -0
  498. data/app/serializers/spree/api/v3/shipping_label_event_serializer.rb +11 -0
  499. data/app/serializers/spree/api/v3/{stock_item_serializer.rb → stock_level_serializer.rb} +5 -5
  500. data/app/serializers/spree/api/v3/stock_location_serializer.rb +11 -7
  501. data/app/serializers/spree/api/v3/stock_movement_serializer.rb +8 -15
  502. data/app/serializers/spree/api/v3/stock_receipt_event_serializer.rb +11 -0
  503. data/app/serializers/spree/api/v3/stock_transfer_serializer.rb +6 -6
  504. data/app/serializers/spree/api/v3/store_credit_event_serializer.rb +29 -0
  505. data/app/serializers/spree/api/v3/supplier_event_serializer.rb +11 -0
  506. data/app/serializers/spree/api/v3/tax_identifier_serializer.rb +15 -0
  507. data/app/serializers/spree/api/v3/tax_line_serializer.rb +37 -0
  508. data/app/serializers/spree/api/v3/variant_serializer.rb +52 -2
  509. data/app/serializers/spree/api/v3/wishlist_item_serializer.rb +6 -6
  510. data/app/serializers/spree/api/v3/wishlist_serializer.rb +1 -1
  511. data/app/services/spree/api/v3/filters_aggregator.rb +14 -12
  512. data/app/services/spree/webhooks/deliver_webhook.rb +62 -26
  513. data/app/subscribers/spree/webhook_event_subscriber.rb +9 -5
  514. data/config/brakeman.ignore +1 -1
  515. data/config/initializers/typelizer.rb +51 -4
  516. data/config/locales/en.yml +5 -0
  517. data/config/routes.rb +730 -22
  518. data/lib/spree/api/configuration.rb +19 -19
  519. data/lib/spree/api/dependencies.rb +174 -227
  520. data/lib/spree/api/engine.rb +6 -0
  521. data/lib/spree/api/openapi/schema_helper.rb +179 -13
  522. data/lib/spree/api/testing_support/v3/base.rb +45 -15
  523. data/lib/spree/api.rb +10 -4
  524. data/lib/typelizer/open_enums.rb +35 -0
  525. metadata +342 -27
  526. data/app/controllers/spree/api/v3/admin/orders/adjustments_controller.rb +0 -25
  527. data/app/controllers/spree/api/v3/admin/stock_items_controller.rb +0 -42
  528. data/app/controllers/spree/api/v3/admin/store_credit_categories_controller.rb +0 -21
  529. data/app/controllers/spree/api/v3/store/digitals_controller.rb +0 -38
  530. data/app/serializers/spree/api/v3/admin/adjustment_serializer.rb +0 -24
  531. data/app/serializers/spree/api/v3/admin/dashboard_analytics_serializer.rb +0 -143
  532. data/app/serializers/spree/api/v3/admin/reimbursement_serializer.rb +0 -15
  533. data/app/serializers/spree/api/v3/admin/return_authorization_serializer.rb +0 -19
  534. data/app/serializers/spree/api/v3/admin/stock_item_serializer.rb +0 -34
  535. data/app/serializers/spree/api/v3/admin/store_credit_category_serializer.rb +0 -19
  536. data/app/serializers/spree/api/v3/customer_return_serializer.rb +0 -17
  537. data/app/serializers/spree/api/v3/digital_serializer.rb +0 -17
  538. data/app/serializers/spree/api/v3/reimbursement_serializer.rb +0 -27
  539. data/app/serializers/spree/api/v3/report_serializer.rb +0 -34
  540. data/app/serializers/spree/api/v3/return_authorization_serializer.rb +0 -31
  541. data/app/serializers/spree/api/v3/return_item_serializer.rb +0 -53
  542. data/app/serializers/spree/api/v3/shipping_category_serializer.rb +0 -11
@@ -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: current_actor,
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
@@ -0,0 +1,41 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ module Admin
5
+ module Orders
6
+ # The registration the order was taxed against, frozen at completion.
7
+ # Read-only because the row is: staff investigating why an invoice was
8
+ # zero-rated need to see the number and the verdict behind it, not
9
+ # change what the invoice already says.
10
+ class TaxIdentifiersController < BaseController
11
+ # A singular nested resource: there is no :id to look up, and the
12
+ # inherited lookup would reach for a plural association that does
13
+ # not exist. Mirrors Orders::StoreCreditsController.
14
+ skip_before_action :set_resource, raise: false
15
+
16
+ scoped_resource :orders
17
+
18
+ # GET /api/v3/admin/orders/:order_id/tax_identifier
19
+ def show
20
+ return head :not_found if @parent.tax_identifier.nil?
21
+
22
+ authorize_resource!(@parent.tax_identifier, :show)
23
+
24
+ render json: serialize_resource(@parent.tax_identifier)
25
+ end
26
+
27
+ protected
28
+
29
+ def model_class
30
+ Spree::TaxIdentifier
31
+ end
32
+
33
+ def serializer_class
34
+ Spree.api.admin_tax_identifier_serializer
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,32 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ module Admin
5
+ module Orders
6
+ # Read-only: tax lines are written exclusively by the tax provider.
7
+ class TaxLinesController < BaseController
8
+ scoped_resource :orders
9
+
10
+ protected
11
+
12
+ def model_class
13
+ Spree::TaxLine
14
+ end
15
+
16
+ def serializer_class
17
+ Spree.api.admin_tax_line_serializer
18
+ end
19
+
20
+ def scope
21
+ @parent.tax_lines
22
+ end
23
+
24
+ def collection_includes
25
+ [:tax_rate, :line_item, :fulfillment, :fee]
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -7,8 +7,14 @@ module Spree
7
7
 
8
8
  scoped_resource :orders
9
9
 
10
+ # The order accepts a `po_document` signed blob id and streams it back.
11
+ include ActiveStorage::SetCurrent
12
+
13
+ # A tampered signed id would otherwise surface as a 500.
14
+ rescue_from ActiveSupport::MessageVerifier::InvalidSignature, with: :render_invalid_po_document
15
+
10
16
  skip_before_action :set_resource, only: [:index, :create]
11
- before_action :set_resource, only: [:show, :update, :destroy, :complete, :cancel, :approve, :resume, :resend_confirmation]
17
+ before_action :set_resource, only: [:show, :update, :destroy, :complete, :cancel, :approve, :resend_confirmation, :resend_digital_links, :po_document]
12
18
 
13
19
  # POST /api/v3/admin/orders
14
20
  def create
@@ -16,7 +22,8 @@ module Spree
16
22
 
17
23
  result = Spree.order_create_service.call(
18
24
  store: current_store,
19
- user: resolve_user,
25
+ customer: resolve_customer,
26
+ created_by: current_actor,
20
27
  params: order_create_params
21
28
  )
22
29
 
@@ -49,7 +56,7 @@ module Spree
49
56
  with_order_lock do
50
57
  result = Spree.order_complete_service.call(
51
58
  order: @resource,
52
- payment_pending: ActiveModel::Type::Boolean.new.cast(params[:payment_pending]),
59
+ payment_pending: params[:payment_pending].to_b,
53
60
  notify_customer: ActiveModel::Type::Boolean.new.cast(params[:notify_customer])
54
61
  )
55
62
 
@@ -64,35 +71,76 @@ module Spree
64
71
  # PATCH /api/v3/admin/orders/:id/cancel
65
72
  def cancel
66
73
  with_order_lock do
67
- @resource.canceled_by(try_spree_current_user)
68
- render json: serialize_resource(@resource.reload)
74
+ result = Spree.order_cancel_workflow.call(
75
+ order: @resource,
76
+ canceler: current_actor,
77
+ reason: cancel_reason,
78
+ note: params[:cancel_note].presence,
79
+ refund_payments: params[:refund_payments].to_b,
80
+ refund_amount: params[:refund_amount].presence,
81
+ notify_customer: params[:notify_customer].to_b
82
+ )
83
+
84
+ if result.success?
85
+ render json: serialize_resource(@resource.reload)
86
+ else
87
+ render_service_error(@resource.errors.presence || result.error)
88
+ end
69
89
  end
70
90
  end
71
91
 
72
92
  # PATCH /api/v3/admin/orders/:id/approve
73
93
  def approve
74
94
  with_order_lock do
75
- @resource.approved_by(try_spree_current_user)
76
- render json: serialize_resource(@resource.reload)
77
- end
78
- end
79
-
80
- # PATCH /api/v3/admin/orders/:id/resume
81
- def resume
82
- with_order_lock do
83
- @resource.resume!
95
+ @resource.approved_by(current_actor)
84
96
  render json: serialize_resource(@resource.reload)
85
97
  end
86
98
  end
87
99
 
88
100
  # POST /api/v3/admin/orders/:id/resend_confirmation
89
101
  def resend_confirmation
90
- @resource.publish_event('order.completed')
102
+ @resource.publish_event('order.resend_confirmation_email')
91
103
  render json: serialize_resource(@resource)
92
104
  end
93
105
 
106
+ # POST /api/v3/admin/orders/:id/resend_digital_links
107
+ def resend_digital_links
108
+ @resource.publish_event('order.resend_digital_links_email')
109
+ render json: serialize_resource(@resource)
110
+ end
111
+
112
+ # GET /api/v3/admin/orders/:id/po_document
113
+ #
114
+ # The buyer's purchase order, streamed rather than redirected so the
115
+ # document is never reachable without admin credentials.
116
+ def po_document
117
+ unless @resource.po_document.attached?
118
+ return render_error(
119
+ code: ERROR_CODES[:validation_error],
120
+ message: Spree.t(:po_document_missing),
121
+ status: :unprocessable_content
122
+ )
123
+ end
124
+
125
+ send_data(
126
+ @resource.po_document.download,
127
+ filename: @resource.po_document.filename.to_s,
128
+ type: @resource.po_document.content_type || 'application/octet-stream',
129
+ disposition: 'attachment'
130
+ )
131
+ end
132
+
94
133
  protected
95
134
 
135
+ # Fetching the document is a read of the order, so it takes the read
136
+ # scope rather than being classed as a write for not being index or
137
+ # show.
138
+ READ_ACTIONS = %w[index show po_document].freeze
139
+
140
+ def read_actions
141
+ READ_ACTIONS
142
+ end
143
+
96
144
  def model_class
97
145
  Spree::Order
98
146
  end
@@ -101,13 +149,27 @@ module Spree
101
149
  Spree.api.admin_order_serializer
102
150
  end
103
151
 
104
- # Override scope — Order uses SingleStoreResource (for_store)
152
+ # Override scope — Order uses SingleStoreResource (for_store).
153
+ # Variant prices and each line's price list are named here rather
154
+ # than via scope_includes, which this override bypasses; the
155
+ # serializer reads both per row.
105
156
  def scope
106
- current_store.orders.accessible_by(current_ability, :show).preload_associations_lazily
157
+ base = current_store.orders.accessible_by(current_ability, :show).
158
+ includes(line_items: [{ variant: :prices }, { price_list: :catalog }]).
159
+ preload_associations_lazily
160
+
161
+ # Transient completion drafts (status draft + cart_id set) belong
162
+ # to in-flight checkouts, never to the admin. Admin drafts are the
163
+ # cart-less ones.
164
+ base.where(cart_id: nil).or(base.where.not(status: 'draft'))
107
165
  end
108
166
 
167
+ # Through find_resource, not find_by_prefix_id! directly, so the
168
+ # external:<system>:<id> addressing the concern provides reaches
169
+ # orders — an ERP that pushed its order number wants to read the
170
+ # order back by it.
109
171
  def set_resource
110
- @resource = scope.find_by_prefix_id!(params[:id])
172
+ @resource = find_resource
111
173
  @order = @resource # needed for OrderLock
112
174
  authorize_resource!(@resource)
113
175
  end
@@ -115,35 +177,85 @@ module Spree
115
177
  # Map state transition actions to :update permission
116
178
  def authorize_resource!(resource = @resource, action = action_name.to_sym)
117
179
  mapped_action = case action
118
- when :complete, :cancel, :approve, :resume, :resend_confirmation
180
+ when :complete, :cancel, :approve, :resend_confirmation, :resend_digital_links
119
181
  :update
182
+ when :po_document
183
+ :show
120
184
  else
121
185
  action
122
186
  end
123
187
  authorize!(mapped_action, resource)
124
188
  end
125
189
 
190
+ # seller is preloaded because its id is read on every row and an
191
+ # expanded list renders the whole profile; order_group is not, since
192
+ # only its id is reported and that comes off the order's own column.
193
+ # Variant prices ride along because the admin line-item serializer
194
+ # reads the base catalog price for every row (the negotiated-price
195
+ # comparison); without it each line costs its own price query. Each
196
+ # line's price list and its catalog are named for the same reason —
197
+ # stated rather than left to ar_lazy_preload, which happens to cover
198
+ # them today.
126
199
  def collection_includes
127
- [:line_items, :user, :channel, :rich_text_internal_note]
200
+ # `market` is the withdrawal deadline's other input. Fulfillments
201
+ # are loaded with their selected rate because the freight summary
202
+ # reads it — otherwise a page of orders costs a query per
203
+ # fulfillment for a field that is nil on every parcel order.
204
+ [:customer, :channel, :seller, :external_references, :cancel_reason,
205
+ :market, { fulfillments: :selected_delivery_rate },
206
+ { line_items: [{ variant: :prices }, { price_list: :catalog }] },
207
+ { po_document_attachment: :blob }]
208
+ end
209
+
210
+ # Read through the store's own vocabulary, so a reason belonging to
211
+ # another store is a 404 rather than a silent mislabel.
212
+ def cancel_reason
213
+ id = params[:cancel_reason_id].presence
214
+ return if id.nil?
215
+
216
+ current_store.order_cancellation_reasons.find_by_prefix_id!(id)
128
217
  end
129
218
 
130
219
  private
131
220
 
132
- def resolve_user
133
- customer_param = params[:customer_id].presence || params[:user_id].presence
221
+ def render_invalid_po_document
222
+ render_error(
223
+ code: ERROR_CODES[:validation_error],
224
+ message: Spree.t(:po_document_invalid_signed_id),
225
+ status: :unprocessable_content
226
+ )
227
+ end
228
+
229
+ def resolve_customer
230
+ customer_param = params[:customer_id].presence
134
231
  return unless customer_param
135
232
 
136
- Spree.user_class.find_by_param!(customer_param)
233
+ Spree.customer_class.
234
+ accessible_by(current_ability, :show).
235
+ find_by_prefix_id!(customer_param)
236
+ end
237
+
238
+ # An upsert arrives on the create action, so addresses come in under
239
+ # the create names. Translate them to the ones update accepts, or a
240
+ # replayed feed row would silently lose the address it sent.
241
+ def normalize_upsert_params!
242
+ # update runs under with_order_lock, which reads @order — normally
243
+ # set by set_resource, which the create path never runs.
244
+ @order = @resource
137
245
  end
138
246
 
139
247
  def order_create_params
140
- normalize_params(
248
+ permitted = normalize_params(
141
249
  params.permit(
142
- :email, :customer_id, :user_id, :use_customer_default_address,
250
+ :email, :customer_id, :use_customer_default_address,
143
251
  :currency, :market_id, :channel_id, :locale,
144
252
  :customer_note, :internal_note,
253
+ # The buyer's own purchase-order reference, and the signed blob
254
+ # id of the document behind it — a PO arriving by email and
255
+ # keyed in is the draft-order flow plus these two fields.
256
+ :po_number, :po_document,
145
257
  :shipping_address_id, :billing_address_id,
146
- :preferred_stock_location_id,
258
+ :preferred_stock_location_id, :company_id,
147
259
  :coupon_code,
148
260
  metadata: {},
149
261
  tags: [],
@@ -152,36 +264,55 @@ module Spree
152
264
  items: item_permitted_keys
153
265
  )
154
266
  )
267
+ resolve_company_param(permitted)
155
268
  end
156
269
 
157
270
  def order_update_params
158
- normalize_params(
271
+ permitted = normalize_params(
159
272
  params.permit(
160
- :email, :customer_id, :user_id,
273
+ :email, :customer_id,
161
274
  :customer_note, :internal_note,
275
+ :po_number, :po_document,
162
276
  :currency, :locale, :market_id, :channel_id,
163
- :preferred_stock_location_id,
277
+ :preferred_stock_location_id, :company_id,
164
278
  metadata: {},
165
279
  tags: [],
166
- ship_address: address_permitted_keys,
167
- bill_address: address_permitted_keys,
280
+ shipping_address: address_permitted_keys,
281
+ billing_address: address_permitted_keys,
168
282
  items: item_permitted_keys
169
283
  )
170
284
  )
285
+ resolve_company_param(permitted)
286
+ end
287
+
288
+ # An incidental lookup like any other: resolved through the store so
289
+ # another tenant's node 404s instead of surfacing as a validation
290
+ # error (which would confirm the id exists). Reads the raw param —
291
+ # normalize_params has already decoded the prefixed id.
292
+ def resolve_company_param(permitted)
293
+ return permitted unless permitted.key?(:company_id)
294
+
295
+ permitted[:company_id] =
296
+ if params[:company_id].present?
297
+ current_store.companies.find_by_prefix_id!(params[:company_id]).id
298
+ else
299
+ nil
300
+ end
301
+ permitted
171
302
  end
172
303
 
173
304
  def address_permitted_keys
174
305
  [
175
306
  :firstname, :lastname, :first_name, :last_name,
176
307
  :address1, :address2, :city,
177
- :country_iso, :state_abbr, :country_id, :state_id,
308
+ :country_code, :state_code,
178
309
  :zipcode, :postal_code, :phone, :alternative_phone,
179
310
  :state_name, :company, :label
180
311
  ]
181
312
  end
182
313
 
183
314
  def item_permitted_keys
184
- [:variant_id, :quantity, { metadata: {} }]
315
+ [:variant_id, :quantity, :price, { metadata: {} }]
185
316
  end
186
317
  end
187
318
  end
@@ -0,0 +1,39 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ module Admin
5
+ # The store's packaging vocabulary. Marking one row default makes it
6
+ # the box the store's own parcel quotes are built on; the model
7
+ # demotes whichever row held the flag before.
8
+ #
9
+ # On a marketplace this lists every row in the store, the operator's
10
+ # and each seller's, so `q[seller_id_eq]` narrows it to one owner. A
11
+ # row the operator writes here is the marketplace's: `seller_id` is
12
+ # not writable, and a seller's own packaging is theirs to edit through
13
+ # the seller API (docs/plans/6.0-seller-package-types.md).
14
+ class PackageTypesController < ResourceController
15
+ scoped_resource :package_types
16
+
17
+ protected
18
+
19
+ def model_class
20
+ Spree::PackageType
21
+ end
22
+
23
+ def serializer_class
24
+ Spree.api.admin_package_type_serializer
25
+ end
26
+
27
+ def collection_includes
28
+ [:seller]
29
+ end
30
+
31
+ def resource_permitted_attributes
32
+ [:name, :kind, :length, :width, :height, :dimensions_unit,
33
+ :weight, :max_weight, :weight_unit, :default, { metadata: {} }]
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -60,7 +60,7 @@ module Spree
60
60
  # password. Revoke first, then mint the fresh token for this
61
61
  # browser (the auto-sign-in below).
62
62
  Spree::RefreshToken.revoke_all_for(user)
63
- refresh_token = Spree::RefreshToken.create_for(user, request_env: request_env_for_token)
63
+ refresh_token = Spree::RefreshToken.create_for(user, audience: JWT_AUDIENCE_ADMIN, request_env: request_env_for_token)
64
64
  set_refresh_cookie(refresh_token)
65
65
 
66
66
  render json: auth_response(user)