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
@@ -5,6 +5,14 @@ module Spree
5
5
  # Admin API Order Serializer
6
6
  # Full order data including admin-only fields
7
7
  class OrderSerializer < V3::OrderSerializer
8
+ include Concerns::ExternalReferencesAttribute
9
+
10
+
11
+ typelize company_id: [:string, nullable: true],
12
+ company_name: [:string, nullable: true],
13
+ seller_id: [:string, nullable: true],
14
+ po_document_url: [:string, nullable: true],
15
+ order_group_id: [:string, nullable: true]
8
16
 
9
17
  # The Admin API has no guest gating — money fields inherited from the
10
18
  # store serializer are always present, so override their nullability.
@@ -17,18 +25,37 @@ module Spree
17
25
  additional_tax_total: [:string, nullable: false], display_additional_tax_total: [:string, nullable: false],
18
26
  store_credit_total: [:string, nullable: false], display_store_credit_total: [:string, nullable: false],
19
27
  gift_card_total: [:string, nullable: false], display_gift_card_total: [:string, nullable: false],
28
+ fee_total: [:string, nullable: false], display_fee_total: [:string, nullable: false],
20
29
  total: [:string, nullable: false], display_total: [:string, nullable: false],
21
30
  amount_due: [:string, nullable: false], display_amount_due: [:string, nullable: false]
22
31
 
23
- typelize status: :string,
32
+ # Back-office only: what the marketplace earned on this sale — the fee,
33
+ # the tax charged on it, and the two together. Never on the store
34
+ # serializer: a commission settles between the platform and the
35
+ # seller, and the shopper does not pay it.
36
+ #
37
+ # The tax stands on its own because it is separately reportable —
38
+ # the platform files it as output tax on a B2B supply to the seller.
39
+ typelize commission_amount_total: [:string, nullable: false],
40
+ display_commission_amount_total: [:string, nullable: false],
41
+ commission_tax_total: [:string, nullable: false],
42
+ display_commission_tax_total: [:string, nullable: false],
43
+ commission_total: [:string, nullable: false],
44
+ display_commission_total: [:string, nullable: false]
45
+
46
+ typelize status: [:string, enum: Spree::Order::STATUSES],
24
47
  last_ip_address: [:string, nullable: true],
25
48
  considered_risky: :boolean, confirmation_delivered: :boolean,
26
49
  store_owner_notification_delivered: :boolean,
27
- internal_note: [:string, nullable: true], approver_id: [:string, nullable: true],
50
+ internal_note: [:string, nullable: true], internal_note_html: [:string, nullable: true],
51
+ approver_id: [:string, nullable: true],
28
52
  canceler_id: [:string, nullable: true], created_by_id: [:string, nullable: true],
29
53
  customer_id: [:string, nullable: true],
30
54
  preferred_stock_location_id: [:string, nullable: true],
31
55
  canceled_at: [:string, nullable: true], approved_at: [:string, nullable: true],
56
+ cancel_reason_id: [:string, nullable: true],
57
+ cancel_reason_name: [:string, nullable: true],
58
+ cancel_note: [:string, nullable: true],
32
59
  payment_total: :string, display_payment_total: :string,
33
60
  tags: [:string, multi: true],
34
61
  metadata: 'Record<string, unknown>'
@@ -37,6 +64,10 @@ module Spree
37
64
  attributes :status, :last_ip_address, :considered_risky,
38
65
  :confirmation_delivered, :store_owner_notification_delivered,
39
66
  :payment_total, :display_payment_total, :metadata,
67
+ :cancel_note,
68
+ :commission_amount_total, :display_commission_amount_total,
69
+ :commission_tax_total, :display_commission_tax_total,
70
+ :commission_total, :display_commission_total,
40
71
  canceled_at: :iso8601, approved_at: :iso8601,
41
72
  created_at: :iso8601, updated_at: :iso8601
42
73
 
@@ -44,12 +75,57 @@ module Spree
44
75
  order.preferred_stock_location&.prefixed_id
45
76
  end
46
77
 
78
+ # Our own endpoint rather than a pre-signed storage URL: the
79
+ # controller streams the bytes, so admin auth runs on every download
80
+ # of the buyer's purchase order.
81
+ attribute :po_document_url do |order|
82
+ next nil unless order.po_document.attached?
83
+
84
+ Spree::Core::Engine.routes.url_helpers.po_document_api_v3_admin_order_path(id: order.prefixed_id)
85
+ end
86
+
87
+ # Which company node the order is for, so the dashboard can show and
88
+ # change it. Read back from the column rather than #resolved_company:
89
+ # a placed order must report what it was stamped with.
90
+ attribute :company_id do |order|
91
+ order.company&.prefixed_id
92
+ end
93
+
94
+ attribute :company_name do |order|
95
+ order.company&.name
96
+ end
97
+
98
+ # Whose sale this is — nil on the operator's own goods. The full
99
+ # profile is `?expand=seller`.
100
+ attribute :seller_id do |order|
101
+ order.seller&.prefixed_id
102
+ end
103
+
104
+ one :seller,
105
+ resource: proc { Spree.api.admin_seller_serializer },
106
+ if: proc { expand?('seller') }
107
+
108
+ # The checkout this order was placed in, when it was placed alongside
109
+ # others.
110
+ #
111
+ # Deliberately an id and no expand: the group serializer renders the
112
+ # orders it holds, so expanding it from an order would render this
113
+ # order again inside itself. A client wanting the group fetches
114
+ # /order_groups/:id, which is what that endpoint is for.
115
+ attribute :order_group_id do |order|
116
+ Spree::OrderGroup.prefixed_id_for(order.order_group_id)
117
+ end
118
+
47
119
  attribute :tags do |order|
48
120
  order.tags.map(&:name) # not pluck as we preload tags
49
121
  end
50
122
 
51
123
  attribute :internal_note do |order|
52
- order.internal_note&.to_plain_text.presence
124
+ Spree::RichTextHelper.to_plain_text(order.internal_note).presence
125
+ end
126
+
127
+ attribute :internal_note_html do |order|
128
+ order.internal_note.presence
53
129
  end
54
130
 
55
131
  attribute :approver_id do |order|
@@ -60,23 +136,47 @@ module Spree
60
136
  order.canceler&.prefixed_id
61
137
  end
62
138
 
139
+ attribute :cancel_reason_id do |order|
140
+ order.cancel_reason&.prefixed_id
141
+ end
142
+
143
+ # The reason's name alongside its id, so an order list can show why
144
+ # each canceled order was called off without expanding a record per
145
+ # row.
146
+ attribute :cancel_reason_name do |order|
147
+ order.cancel_reason&.name
148
+ end
149
+
63
150
  attribute :created_by_id do |order|
64
151
  order.created_by&.prefixed_id
65
152
  end
66
153
 
67
154
  attribute :customer_id do |order|
68
- order.user&.prefixed_id
155
+ order.customer&.prefixed_id
69
156
  end
70
157
 
71
158
  # Override inherited associations to use admin serializers
72
- many :discounts, resource: proc { Spree.api.admin_discount_serializer }, if: proc { expand?('discounts') }
159
+ # Renamed from the store's `discounts` key: on the admin surface that
160
+ # word means the typed money rows (/orders/:id/discounts), so the
161
+ # promotion summaries carry their real name here. The inherited
162
+ # store-keyed declaration is dropped, not shadowed.
163
+ _attributes.delete(:discounts)
164
+ # Fees reach the admin through their own `/orders/:id/fees` endpoint,
165
+ # which is also the write path — embedding them here would ship the
166
+ # same rows twice, through a store serializer.
167
+ _attributes.delete(:fees)
168
+ many :order_promotions, key: :applied_promotions, resource: proc { Spree.api.admin_applied_promotion_serializer }, if: proc { expand?('applied_promotions') }
73
169
  many :line_items, key: :items, resource: proc { Spree.api.admin_line_item_serializer }, if: proc { expand?('items') }
74
170
  many :fulfillments, resource: proc { Spree.api.admin_fulfillment_serializer }, if: proc { expand?('fulfillments') }
75
171
  many :payments, resource: proc { Spree.api.admin_payment_serializer }, if: proc { expand?('payments') }
172
+ # An order from a split checkout has no payments of its own; what it
173
+ # has is a share of each payment made against its group.
174
+ many :payment_splits, resource: proc { Spree.api.admin_payment_split_serializer }, if: proc { expand?('payment_splits') }
76
175
 
77
176
  one :billing_address, resource: proc { Spree.api.admin_address_serializer }, if: proc { expand?('billing_address') }
78
177
  one :shipping_address, resource: proc { Spree.api.admin_address_serializer }, if: proc { expand?('shipping_address') }
79
178
  one :gift_card, resource: proc { Spree.api.admin_gift_card_serializer }
179
+ one :cart, resource: proc { Spree.api.admin_cart_serializer }, if: proc { expand?('cart') }
80
180
  one :market, resource: proc { Spree.api.admin_market_serializer }
81
181
  one :channel, resource: proc { Spree.api.admin_channel_serializer }, if: proc { expand?('channel') }
82
182
  one :preferred_stock_location,
@@ -85,34 +185,46 @@ module Spree
85
185
 
86
186
  many :payment_methods, resource: proc { Spree.api.admin_payment_method_serializer }, if: proc { expand?('payment_methods') }
87
187
 
88
- one :user,
89
- key: :customer,
188
+ one :customer,
90
189
  resource: proc { Spree.api.admin_customer_serializer },
91
190
  if: proc { expand?('customer') }
92
191
 
192
+ # Staff actors, not customers — these point at Spree.admin_user_class.
93
193
  one :approver,
94
- resource: proc { Spree.api.admin_customer_serializer },
194
+ resource: proc { Spree.api.admin_admin_user_serializer },
95
195
  if: proc { expand?('approver') }
96
196
 
97
197
  one :canceler,
98
- resource: proc { Spree.api.admin_customer_serializer },
198
+ resource: proc { Spree.api.admin_admin_user_serializer },
99
199
  if: proc { expand?('canceler') }
100
200
 
201
+ one :cancel_reason,
202
+ resource: proc { Spree.api.admin_order_cancellation_reason_serializer },
203
+ if: proc { expand?('cancel_reason') }
204
+
101
205
  one :created_by,
102
- resource: proc { Spree.api.admin_customer_serializer },
206
+ resource: proc { Spree.api.admin_admin_user_serializer },
103
207
  if: proc { expand?('created_by') }
104
208
 
105
- many :adjustments,
106
- resource: proc { Spree.api.admin_adjustment_serializer },
107
- if: proc { expand?('adjustments') }
108
209
 
109
- many :return_authorizations,
110
- resource: proc { Spree.api.admin_return_authorization_serializer },
111
- if: proc { expand?('return_authorizations') }
210
+ many :returns,
211
+ resource: proc { Spree.api.admin_return_serializer },
212
+ if: proc { expand?('returns') }
213
+
214
+ many :exchanges,
215
+ resource: proc { Spree.api.admin_exchange_serializer },
216
+ if: proc { expand?('exchanges') }
217
+
218
+ many :claims,
219
+ resource: proc { Spree.api.admin_claim_serializer },
220
+ if: proc { expand?('claims') }
221
+
222
+ # What the forwarder quoted against, frozen onto the rates this
223
+ # order shipped under. Back-office only: a buyer is told what their
224
+ # shipment costs, not how the warehouse packed it.
225
+ typelize freight_summary: [:FreightSummary, nullable: true]
112
226
 
113
- many :reimbursements,
114
- resource: proc { Spree.api.admin_reimbursement_serializer },
115
- if: proc { expand?('reimbursements') }
227
+ one :freight_summary, resource: proc { Spree.api.admin_freight_summary_serializer }
116
228
  end
117
229
  end
118
230
  end
@@ -0,0 +1,53 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ module Admin
5
+ # A store's packaging: the box it ships parcels in, and the cartons,
6
+ # pallets and containers a wholesale order leaves on. Back-office
7
+ # only — a shopper never picks their packaging.
8
+ class PackageTypeSerializer < V3::BaseSerializer
9
+ typelize name: :string,
10
+ kind: [:string, enum: Spree::PackageType::KINDS],
11
+ length: [:string, nullable: true],
12
+ width: [:string, nullable: true],
13
+ height: [:string, nullable: true],
14
+ dimensions_unit: [:string, enum: Spree::Variant::DIMENSION_UNITS],
15
+ weight: [:string, nullable: true],
16
+ max_weight: [:string, nullable: true],
17
+ weight_unit: [:string, enum: Spree::Variant::WEIGHT_UNITS],
18
+ volume: [:string, nullable: true],
19
+ default: :boolean,
20
+ seller_id: [:string, nullable: true],
21
+ seller_name: [:string, nullable: true],
22
+ metadata: ['Record<string, unknown> | null']
23
+
24
+ attributes :name, :kind, :length, :width, :height, :weight, :max_weight,
25
+ :default, :metadata
26
+
27
+ attributes created_at: :iso8601, updated_at: :iso8601
28
+
29
+ # Both units read through their fallbacks, so a row that never set
30
+ # one still tells the merchant what its numbers mean.
31
+ attribute :dimensions_unit, &:dimensions_unit
32
+ attribute :weight_unit, &:weight_unit
33
+
34
+ # Cubic meters, so a merchant configuring volume tiers can read the
35
+ # figure their rules are compared against. Null until every side is
36
+ # measured.
37
+ attribute :volume, &:volume
38
+
39
+ # Whose packaging this is: a seller's own, or (null) the
40
+ # marketplace's shared vocabulary
41
+ # (docs/plans/6.0-seller-package-types.md).
42
+ attribute :seller_id do |package_type|
43
+ package_type.seller&.prefixed_id
44
+ end
45
+
46
+ attribute :seller_name do |package_type|
47
+ package_type.seller&.name
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -5,13 +5,19 @@ module Spree
5
5
  class PaymentMethodSerializer < V3::PaymentMethodSerializer
6
6
  typelize active: :boolean,
7
7
  auto_capture: [:boolean, nullable: true],
8
+ capture_method: "'checkout' | 'on_dispatch' | 'manual' | null",
9
+ resolved_capture_method: "'checkout' | 'on_dispatch' | 'manual'",
8
10
  storefront_visible: :boolean,
9
11
  position: :number,
10
12
  metadata: 'Record<string, unknown>',
11
13
  preferences: 'Record<string, unknown>',
12
- preference_schema: "Array<{ key: string; type: string; default: unknown }>"
14
+ preference_schema: "Array<{ key: string; type: string; default: unknown; choices?: string[] }>"
13
15
 
14
- attributes :metadata, :active, :auto_capture, :storefront_visible, :position,
16
+ # Null capture_method means the method inherits from its store;
17
+ # resolved_capture_method is what actually applies, so the dashboard
18
+ # can show the inherited value.
19
+ attributes :metadata, :active, :auto_capture, :capture_method, :resolved_capture_method,
20
+ :storefront_visible, :position,
15
21
  created_at: :iso8601, updated_at: :iso8601
16
22
 
17
23
  attribute :preferences, &:serialized_preferences
@@ -50,6 +50,12 @@ module Spree
50
50
  many :refunds,
51
51
  resource: proc { Spree.api.admin_refund_serializer },
52
52
  if: proc { expand?('refunds') }
53
+
54
+ # How a payment made against an order group is shared between the
55
+ # orders in it; empty on a payment made against a single order.
56
+ many :payment_splits,
57
+ resource: proc { Spree.api.admin_payment_split_serializer },
58
+ if: proc { expand?('payment_splits') }
53
59
  end
54
60
  end
55
61
  end
@@ -0,0 +1,41 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ module Admin
5
+ # Serializes Spree::PaymentSplit — one child order's share of a payment
6
+ # made against its order group.
7
+ #
8
+ # Read-only: the shares are written by the split at checkout and kept
9
+ # current by the payment and refund subscribers.
10
+ class PaymentSplitSerializer < V3::BaseSerializer
11
+ AMOUNTS = %i[authorized_amount captured_amount refunded_amount claimed_amount
12
+ net_captured_amount refundable_amount].freeze
13
+
14
+ typelize currency: :string,
15
+ payment_id: :string,
16
+ payment_number: 'string | null',
17
+ order_id: :string,
18
+ order_number: 'string | null',
19
+ authorized_amount: :string, display_authorized_amount: :string,
20
+ captured_amount: :string, display_captured_amount: :string,
21
+ refunded_amount: :string, display_refunded_amount: :string,
22
+ claimed_amount: :string, display_claimed_amount: :string,
23
+ net_captured_amount: :string, display_net_captured_amount: :string,
24
+ refundable_amount: :string, display_refundable_amount: :string
25
+
26
+ attributes :currency, created_at: :iso8601, updated_at: :iso8601
27
+
28
+ AMOUNTS.each do |amount|
29
+ attribute(amount) { |split| split.public_send(amount).to_s }
30
+ attribute(:"display_#{amount}") { |split| split.public_send(:"display_#{amount}").to_s }
31
+ end
32
+
33
+ attribute(:payment_id) { |split| split.payment&.prefixed_id }
34
+ attribute(:payment_number) { |split| split.payment&.number }
35
+ attribute(:order_id) { |split| split.order&.prefixed_id }
36
+ attribute(:order_number) { |split| split.order&.number }
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,39 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ module Admin
5
+ # Serializes one permission catalog entry
6
+ # (Spree::PermissionConfiguration::Entry) for the discovery endpoint.
7
+ # Labels and descriptions resolve through Spree.t so backend extensions
8
+ # localize without shipping dashboard translations.
9
+ class PermissionSerializer
10
+ include Alba::Resource
11
+ include Typelizer::DSL
12
+
13
+ typelize key: :string, resource: :string, kind: [:string, enum: %w[read write]], group: :string,
14
+ group_label: :string, label: :string, description: :string
15
+
16
+ attributes :key
17
+
18
+ attribute(:resource) { |entry| entry.scope.name.to_s }
19
+ attribute(:kind) { |entry| entry.kind.to_s }
20
+ attribute(:group) { |entry| entry.scope.group.to_s }
21
+
22
+ attribute(:group_label) do |entry|
23
+ Spree.t("permissions_catalog.groups.#{entry.scope.group}",
24
+ default: entry.scope.group.to_s.humanize)
25
+ end
26
+
27
+ attribute(:label) do |entry|
28
+ Spree.t("permissions_catalog.resources.#{entry.scope.name}.label",
29
+ default: entry.scope.name.to_s.humanize)
30
+ end
31
+
32
+ attribute(:description) do |entry|
33
+ Spree.t("permissions_catalog.resources.#{entry.scope.name}.description", default: '')
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,11 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ module Admin
5
+ class PolicySerializer < V3::PolicySerializer
6
+ attributes created_at: :iso8601
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,22 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ module Admin
5
+ # One band of a price list's percentage adjustment. Admin-only, like
6
+ # the list itself — the storefront sees resolved prices, never the
7
+ # arithmetic behind them.
8
+ class PriceAdjustmentTierSerializer < V3::BaseSerializer
9
+ typelize min_quantity: :number, percentage: :string
10
+
11
+ attributes :min_quantity
12
+
13
+ # A decimal as a string, like every other money-shaped value on the
14
+ # wire — a float would round the merchant's own figure.
15
+ attribute :percentage do |tier|
16
+ tier.percentage&.to_s
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,32 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ module Admin
5
+ # A product as the price list's own page reads it: what the membership
6
+ # card renders, plus what the list charges for it per variant — a
7
+ # ladder shown where it is edited and not only where it is sold
8
+ # (docs/plans/6.0-volume-pricing.md).
9
+ #
10
+ # The rows are expanded rather than always sent, because resolving
11
+ # them costs a query per page that the picker has no use for. There is
12
+ # deliberately no product-level price: the card prices variants, and a
13
+ # figure on the product row would have to pick one variant to speak
14
+ # for the rest (docs/plans/6.0-volume-pricing.md).
15
+ class PriceListProductSerializer < Admin::MembershipProductSerializer
16
+ # Every variant with what this list charges for it, each with its
17
+ # own ladder. `source:` rather than an association: the rows are
18
+ # resolved per request against the list, which the serializer
19
+ # receives in params.
20
+ many :price_list_variants,
21
+ resource: proc { Spree.api.admin_catalog_price_serializer },
22
+ if: proc { expand?('price_list_price') },
23
+ source: lambda { |params|
24
+ resolver = params[:price_list_price_resolver]
25
+
26
+ variants.filter_map { |variant| resolver&.call(variant) }
27
+ }
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -9,21 +9,32 @@ module Spree
9
9
  class PriceListSerializer < V3::BaseSerializer
10
10
  typelize name: :string,
11
11
  description: 'string | null',
12
- status: :string,
12
+ status: [:string, enum: Spree::PriceList.statuses, enum_type_name: 'PriceListStatus'],
13
13
  position: :number,
14
14
  starts_at: 'string | null',
15
15
  ends_at: 'string | null',
16
16
  deleted_at: 'string | null',
17
- match_policy: :string,
17
+ match_policy: [:string, enum: Spree::PriceList::MATCH_POLICIES],
18
+ price_adjustment_percentage: 'string | null',
19
+ adjust_compare_at: :boolean,
20
+ automatic_pricing: :boolean,
18
21
  currently_active: :boolean,
19
22
  products_count: :number,
20
- prices_count: :number,
21
- product_ids: [:string, multi: true]
23
+ prices_count: :number
22
24
 
23
25
  attributes :name, :description, :status, :position, :match_policy,
26
+ :adjust_compare_at,
24
27
  starts_at: :iso8601, ends_at: :iso8601, deleted_at: :iso8601,
25
28
  created_at: :iso8601, updated_at: :iso8601
26
29
 
30
+ # A decimal as a string, like every other money-shaped value on the
31
+ # wire — a float would round the merchant's own figure.
32
+ attribute :price_adjustment_percentage do |price_list|
33
+ price_list.price_adjustment_percentage&.to_s
34
+ end
35
+
36
+ attribute :automatic_pricing, &:automatic_pricing?
37
+
27
38
  attribute :currently_active, &:currently_active?
28
39
 
29
40
  # Cheap counts so the index can render "12 products / 36 prices"
@@ -36,10 +47,11 @@ module Spree
36
47
  pl.prices.count
37
48
  end
38
49
 
39
- # Prefixed product ids in the list drives the SPA's
40
- # Products picker pre-fill, and is the same payload the
41
- # client ships back on PATCH to reconcile membership.
42
- attribute :product_ids, &:product_prefixed_ids
50
+ # Always expanded: a list's bands are the rest of the sentence its
51
+ # percentage starts, and the pricing card cannot render one without
52
+ # the other.
53
+ many :price_adjustment_tiers,
54
+ resource: proc { Spree.api.admin_price_adjustment_tier_serializer }
43
55
 
44
56
  many :price_rules,
45
57
  resource: proc { Spree.api.admin_price_rule_serializer },
@@ -6,12 +6,10 @@ module Spree
6
6
  # Same shape as PromotionRuleSerializer so the SPA can drive both
7
7
  # editors from one generic preference-form component.
8
8
  class PriceRuleSerializer < V3::BaseSerializer
9
- typelize type: :string,
9
+ typelize type: [:string, comment: 'Rule type. Built-in: channel_rule, customer_group_rule, market_rule, user_rule, volume_rule, zone_rule. Extensions may register more.'],
10
10
  price_list_id: :string,
11
11
  preferences: 'Record<string, unknown>',
12
- preference_schema: 'Array<{ key: string; type: string; default: unknown }>',
13
- label: :string,
14
- description: 'string | null'
12
+ preference_schema: 'Array<{ key: string; type: string; default: unknown }>'
15
13
 
16
14
  attributes created_at: :iso8601, updated_at: :iso8601
17
15
 
@@ -26,14 +24,6 @@ module Spree
26
24
  attribute :preferences, &:serialized_preferences
27
25
  attribute :preference_schema, &:serialized_preference_schema
28
26
 
29
- attribute :label do |rule|
30
- rule.class.respond_to?(:human_name) ? rule.class.human_name : rule.class.to_s.demodulize
31
- end
32
-
33
- attribute :description do |rule|
34
- rule.class.respond_to?(:description) ? rule.class.description : nil
35
- end
36
-
37
27
  # Embeds skip rules that don't carry the association (e.g.
38
28
  # VolumeRule has no markets/customers — the keys are omitted).
39
29
  many :markets,
@@ -6,9 +6,12 @@ module Spree
6
6
  # Extends Store Price Serializer with admin-only fields
7
7
  class PriceSerializer < V3::PriceSerializer
8
8
  typelize variant_id: [:string, nullable: true],
9
+ min_quantity: :number,
9
10
  created_at: :string,
10
11
  updated_at: :string
11
12
 
13
+ attributes :min_quantity
14
+
12
15
  attribute :variant_id do |price|
13
16
  price&.variant&.prefixed_id
14
17
  end