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
@@ -0,0 +1,29 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ # One consignment's carrier journey — the customer's "where is my
5
+ # parcel" answer, so it sits on the public serializer beside the
6
+ # fulfillment's tracking summary.
7
+ class DeliverySerializer < BaseSerializer
8
+ typelize tracking_number: :string,
9
+ tracking_url: [:string, nullable: true],
10
+ carrier: [:string, nullable: true],
11
+ carrier_name: [:string, nullable: true],
12
+ service: [:string, nullable: true],
13
+ status: [:string, enum: Spree::Delivery::STATUSES],
14
+ estimated_delivery_at: [:string, nullable: true],
15
+ delivered_at: [:string, nullable: true]
16
+
17
+ attributes :tracking_number, :carrier, :carrier_name, :service, :status
18
+
19
+ # The best link for this consignment: the one stored on the row, or
20
+ # the one derived from its carrier and number.
21
+ attribute :tracking_url do |delivery|
22
+ delivery.resolved_tracking_url
23
+ end
24
+
25
+ attributes estimated_delivery_at: :iso8601, delivered_at: :iso8601
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ class DeliveryZoneMemberSerializer < BaseSerializer
5
+ typelize member_type: [:string, enum: Spree::DeliveryZoneMember::MEMBER_TYPES], country_code: [:string, nullable: true],
6
+ country_name: [:string, nullable: true],
7
+ state_code: [:string, nullable: true], state_name: [:string, nullable: true],
8
+ postal_code_prefix: [:string, nullable: true],
9
+ postal_code_from: [:string, nullable: true],
10
+ postal_code_to: [:string, nullable: true]
11
+
12
+ attributes :member_type, :country_code, :state_code,
13
+ :postal_code_prefix, :postal_code_from, :postal_code_to
14
+
15
+ # Admin zone summaries list countries by name; without this every
16
+ # client would have to carry its own ISO-to-name table.
17
+ attribute :country_name do |record|
18
+ record.country&.name
19
+ end
20
+
21
+ # The subdivision's name is reference data rather than something the
22
+ # member stores, so it is looked up from its country and code.
23
+ attribute :state_name do |record|
24
+ Spree::IsoData.subdivision_name(record.country_code, record.state_code) if record.state_code.present?
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,13 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ class DeliveryZoneSerializer < BaseSerializer
5
+ typelize name: :string, description: [:string, nullable: true]
6
+
7
+ attributes :name, :description
8
+
9
+ many :members, resource: proc { Spree.api.delivery_zone_member_serializer }, if: proc { expand?('members') }
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spree
4
+ module Api
5
+ module V3
6
+ class DigitalAssetSerializer < BaseSerializer
7
+ typelize variant_id: [:string, nullable: true],
8
+ filename: [:string, nullable: true],
9
+ content_type: [:string, nullable: true]
10
+
11
+ attribute :variant_id do |digital_asset|
12
+ digital_asset.variant&.prefixed_id
13
+ end
14
+
15
+ attribute :filename do |digital_asset|
16
+ digital_asset.filename&.to_s
17
+ end
18
+
19
+ attributes :content_type
20
+ end
21
+ end
22
+ end
23
+ end
@@ -3,13 +3,17 @@ module Spree
3
3
  module V3
4
4
  class DigitalLinkSerializer < BaseSerializer
5
5
  typelize access_counter: :number, filename: :string, content_type: :string,
6
- download_url: :string,
6
+ download_url: :string, expires_at: [:string, nullable: true],
7
7
  authorizable: :boolean, expired: :boolean, access_limit_exceeded: :boolean
8
8
 
9
9
  attributes :access_counter, :filename, :content_type
10
10
 
11
11
  attribute :download_url do |digital_link|
12
- Spree::Core::Engine.routes.url_helpers.api_v3_store_digital_download_path(token: digital_link.token)
12
+ Spree::Api::DigitalLinkUrls.download_path(digital_link)
13
+ end
14
+
15
+ attribute :expires_at do |digital_link|
16
+ digital_link.expires_at&.iso8601
13
17
  end
14
18
 
15
19
  attribute :authorizable do |digital_link|
@@ -1,20 +1,34 @@
1
1
  module Spree
2
2
  module Api
3
3
  module V3
4
- # Unified discount serializer for applied promotions on Cart and Order.
5
- # Replaces CartPromotionSerializer and OrderPromotionSerializer.
4
+ # A typed Spree::Discount money row (promotion-sourced or manual) on a
5
+ # line item or fulfillment. The embedded `discounts` key on Cart/Order
6
+ # stays the applied-promotion summary — see AppliedPromotionSerializer.
6
7
  class DiscountSerializer < BaseSerializer
7
- typelize name: :string, description: [:string, nullable: true], code: [:string, nullable: true],
8
- amount: [:string, nullable: true], display_amount: [:string, nullable: true], promotion_id: :string
8
+ typelize label: :string, kind: [:string, enum: Spree::Discount::KINDS], code: [:string, nullable: true],
9
+ value: [:string, nullable: true], value_type: [:string, nullable: true],
10
+ amount: [:string, nullable: true], display_amount: [:string, nullable: true],
11
+ promotion_id: [:string, nullable: true], line_item_id: [:string, nullable: true],
12
+ fulfillment_id: [:string, nullable: true]
13
+
14
+ attributes :label, :kind, :code, :value_type
15
+
16
+ attribute :value do |record|
17
+ record.value&.to_s
18
+ end
9
19
 
10
20
  attribute :promotion_id do |record|
11
21
  record.promotion&.prefixed_id
12
22
  end
13
23
 
14
- attributes :name, :description, :code
24
+ attribute :line_item_id do |record|
25
+ record.line_item&.prefixed_id
26
+ end
27
+
28
+ attribute :fulfillment_id do |record|
29
+ record.fulfillment&.prefixed_id
30
+ end
15
31
 
16
- # Nulled for gated (prices_hidden) guests so an applied discount can't
17
- # leak the amount the cart/order totals already withhold.
18
32
  money_attributes :amount, :display_amount
19
33
  end
20
34
  end
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spree
4
+ module Api
5
+ module V3
6
+ class ExchangeLineItemSerializer < BaseSerializer
7
+ typelize quantity: :number,
8
+ received_quantity: :number,
9
+ resellable: :boolean,
10
+ original_price: :string,
11
+ new_variant_price: :string,
12
+ price_difference: :string,
13
+ original_variant_id: [:string, nullable: true],
14
+ new_variant_id: [:string, nullable: true],
15
+ line_item_id: [:string, nullable: true],
16
+ fulfillment_item_id: [:string, nullable: true]
17
+
18
+ attributes :quantity, :received_quantity, :resellable
19
+
20
+ attribute :original_price do |line|
21
+ line.original_price.to_s
22
+ end
23
+
24
+ attribute :new_variant_price do |line|
25
+ line.new_variant_price.to_s
26
+ end
27
+
28
+ attribute :price_difference do |line|
29
+ line.price_difference.to_s
30
+ end
31
+
32
+ attribute :original_variant_id do |line|
33
+ line.original_variant&.prefixed_id
34
+ end
35
+
36
+ attribute :new_variant_id do |line|
37
+ line.new_variant&.prefixed_id
38
+ end
39
+
40
+ attribute :line_item_id do |line|
41
+ line.line_item&.prefixed_id
42
+ end
43
+
44
+ attribute :fulfillment_item_id do |line|
45
+ line.fulfillment_item&.prefixed_id
46
+ end
47
+
48
+ one :original_variant, resource: proc { Spree.api.variant_serializer }, if: proc { expand?('original_variant') }
49
+ one :new_variant, resource: proc { Spree.api.variant_serializer }, if: proc { expand?('new_variant') }
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spree
4
+ module Api
5
+ module V3
6
+ # Customer-facing view of an exchange.
7
+ class ExchangeSerializer < BaseSerializer
8
+ typelize number: :string,
9
+ status: [:string, enum: Spree::Exchange.statuses, enum_type_name: 'ExchangeStatus'],
10
+ order_id: [:string, nullable: true],
11
+ reason_id: [:string, nullable: true],
12
+ price_difference: :string,
13
+ display_price_difference: :string,
14
+ approved_at: [:string, nullable: true],
15
+ received_at: [:string, nullable: true],
16
+ fulfilled_at: [:string, nullable: true],
17
+ canceled_at: [:string, nullable: true]
18
+
19
+ attributes :number, :status
20
+
21
+ attribute :order_id do |exchange|
22
+ exchange.order&.prefixed_id
23
+ end
24
+
25
+ attribute :reason_id do |exchange|
26
+ exchange.reason&.prefixed_id
27
+ end
28
+
29
+ attribute :price_difference do |exchange|
30
+ exchange.price_difference.to_s
31
+ end
32
+
33
+ attribute :display_price_difference do |exchange|
34
+ exchange.display_price_difference.to_s
35
+ end
36
+
37
+ attribute :approved_at do |exchange|
38
+ exchange.approved_at&.iso8601
39
+ end
40
+
41
+ attribute :received_at do |exchange|
42
+ exchange.received_at&.iso8601
43
+ end
44
+
45
+ attribute :fulfilled_at do |exchange|
46
+ exchange.fulfilled_at&.iso8601
47
+ end
48
+
49
+ attribute :canceled_at do |exchange|
50
+ exchange.canceled_at&.iso8601
51
+ end
52
+
53
+ one :reason, resource: proc { Spree.api.return_reason_serializer }, if: proc { expand?('reason') }
54
+
55
+ many :exchange_line_items,
56
+ resource: proc { Spree.api.exchange_line_item_serializer },
57
+ if: proc { expand?('exchange_line_items') }
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,27 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ # An extensible charge (typed row): surcharge, handling, gift wrap, COD.
5
+ # Order-level when both adjustable IDs are null.
6
+ class FeeSerializer < BaseSerializer
7
+ typelize label: :string,
8
+ kind: [:string, enum: Spree::Fee::KINDS, enum_type_name: 'FeeKind',
9
+ comment: 'What sort of charge this is. `duty` is a customs duty on a cross-border order and is not taxed; the other kinds are. Extensions may register further kinds.'],
10
+ amount: [:string, nullable: true], display_amount: [:string, nullable: true],
11
+ line_item_id: [:string, nullable: true], fulfillment_id: [:string, nullable: true]
12
+
13
+ attributes :label, :kind
14
+
15
+ attribute :line_item_id do |record|
16
+ record.line_item&.prefixed_id
17
+ end
18
+
19
+ attribute :fulfillment_id do |record|
20
+ record.fulfillment&.prefixed_id
21
+ end
22
+
23
+ money_attributes :amount, :display_amount
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,38 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ # A shipment as a freight forwarder reads it: units, the cartons they
5
+ # fill, the pallets those stack onto, cubic meters and gross weight.
6
+ #
7
+ # +complete+ is false when part of the catalog carries no carton data.
8
+ # The figures are still the best available, but they are a minimum
9
+ # rather than a total, and a surface quoting from them should say so.
10
+ #
11
+ # Totals only. What each product contributes is a warehouse's business,
12
+ # so the per-line breakdown lives on the admin twin.
13
+ class FreightSummarySerializer < BaseSerializer
14
+ # A value object, not a record — it has no id of its own.
15
+ _attributes.delete(:id)
16
+
17
+ typelize total_units: :number,
18
+ total_cartons: :number,
19
+ total_pallets: ['number | null'],
20
+ total_volume: :string,
21
+ total_weight: :string,
22
+ complete: :boolean
23
+
24
+ attributes :total_units, :total_cartons, :total_pallets
25
+
26
+ attribute :total_volume do |summary|
27
+ decimal_string(summary.total_volume)
28
+ end
29
+
30
+ attribute :total_weight do |summary|
31
+ decimal_string(summary.total_weight)
32
+ end
33
+
34
+ attribute :complete, &:complete?
35
+ end
36
+ end
37
+ end
38
+ end
@@ -2,21 +2,32 @@ module Spree
2
2
  module Api
3
3
  module V3
4
4
  class FulfillmentSerializer < BaseSerializer
5
- typelize number: :string, status: :string, fulfillment_type: :string,
5
+ typelize number: :string, status: [:string, enum: Spree::Fulfillment.statuses, enum_type_name: 'FulfillmentStatus'],
6
+ fulfillment_type: [:string, enum: %w[shipping digital pickup pickup_point]],
6
7
  tracking: [:string, nullable: true],
7
8
  tracking_url: [:string, nullable: true], fulfilled_at: [:string, nullable: true],
9
+ delivered_at: [:string, nullable: true],
8
10
  cost: [:string, nullable: true], display_cost: [:string, nullable: true],
11
+ unpriced: :boolean,
9
12
  total: [:string, nullable: true], display_total: [:string, nullable: true],
10
13
  discount_total: [:string, nullable: true], display_discount_total: [:string, nullable: true],
11
14
  additional_tax_total: [:string, nullable: true], display_additional_tax_total: [:string, nullable: true],
12
15
  included_tax_total: [:string, nullable: true], display_included_tax_total: [:string, nullable: true],
13
16
  tax_total: [:string, nullable: true], display_tax_total: [:string, nullable: true],
14
- items: 'Array<{ item_id: string; variant_id: string; quantity: number }>'
17
+ items: 'Array<{ item_id: string; variant_id: string; quantity: number }>',
18
+ pickup_point_data: ['Record<string, unknown>', nullable: true],
19
+ selected_delivery_rate_id: [:string, nullable: true]
15
20
 
16
- attributes :number, :tracking, :tracking_url
21
+ # +tracking+ and +tracking_url+ summarize the primary delivery; every
22
+ # consignment is listed under +deliveries+.
23
+ attributes :number, :tracking, :tracking_url, :pickup_point_data, :selected_delivery_rate_id
17
24
 
18
25
  # Nulled for gated (prices_hidden) guests so a fulfillment can't leak the
19
26
  # shipping/tax amounts the cart/order totals already withhold.
27
+ # Says the shipping price is still to come, so a client need not
28
+ # infer it from a zero cost. Not price-gated — a flag, not an amount.
29
+ attribute :unpriced, &:unpriced?
30
+
20
31
  money_attributes :cost, :display_cost,
21
32
  :total, :display_total,
22
33
  :discount_total, :display_discount_total,
@@ -24,22 +35,20 @@ module Spree
24
35
  :included_tax_total, :display_included_tax_total,
25
36
  :tax_total, :display_tax_total
26
37
 
27
- attribute :status do |shipment|
28
- shipment.state
29
- end
38
+ attributes :status
30
39
 
31
- attribute :fulfillment_type do |shipment|
32
- shipment.digital? ? 'digital' : 'shipping'
40
+ # Column-backed since 6.0; the fallback covers rows created before the
41
+ # fulfillment_type backfill ran.
42
+ attribute :fulfillment_type do |fulfillment|
43
+ fulfillment.fulfillment_type.presence || (fulfillment.digital? ? 'digital' : 'shipping')
33
44
  end
34
45
 
35
- attribute :fulfilled_at do |shipment|
36
- shipment.shipped_at&.iso8601
37
- end
46
+ attributes fulfilled_at: :iso8601, delivered_at: :iso8601
38
47
 
39
48
  # Which items (and how many) are in this fulfillment.
40
49
  # A line item can be split across fulfillments with different quantities.
41
- attribute :items do |shipment|
42
- shipment.manifest.filter_map do |item|
50
+ attribute :items do |fulfillment|
51
+ fulfillment.manifest.filter_map do |item|
43
52
  next unless item.line_item
44
53
 
45
54
  {
@@ -50,9 +59,13 @@ module Spree
50
59
  end
51
60
  end
52
61
 
53
- one :shipping_method, key: :delivery_method, resource: proc { Spree.api.delivery_method_serializer }
62
+ # Where each parcel is, as the carrier last reported it — the
63
+ # customer's question, so always embedded.
64
+ many :deliveries, resource: proc { Spree.api.delivery_serializer }
65
+ one :delivery_method, resource: proc { Spree.api.delivery_method_serializer }
54
66
  one :stock_location, resource: proc { Spree.api.stock_location_serializer }
55
- many :shipping_rates, key: :delivery_rates, resource: proc { Spree.api.delivery_rate_serializer }
67
+ many :delivery_rates, resource: proc { Spree.api.delivery_rate_serializer }
68
+ many :tax_lines, resource: proc { Spree.api.tax_line_serializer }, if: proc { expand?('tax_lines') }
56
69
  end
57
70
  end
58
71
  end
@@ -3,7 +3,7 @@ module Spree
3
3
  module V3
4
4
  class GiftCardSerializer < BaseSerializer
5
5
  typelize code: :string,
6
- status: :string,
6
+ status: [:string, enum: Spree::GiftCard::DISPLAY_STATUSES, enum_type_name: 'GiftCardStatus'],
7
7
  amount: [:string, nullable: true],
8
8
  amount_used: [:string, nullable: true],
9
9
  amount_authorized: [:string, nullable: true],
@@ -22,7 +22,7 @@ module Spree
22
22
  end
23
23
 
24
24
  attribute :status do |gift_card|
25
- gift_card.display_state
25
+ gift_card.display_status
26
26
  end
27
27
 
28
28
  attributes :currency
@@ -5,7 +5,7 @@ module Spree
5
5
  module V3
6
6
  class ImportRowSerializer < BaseSerializer
7
7
  typelize import_id: [:string, nullable: true], row_number: :number,
8
- status: :string, validation_errors: [:string, nullable: true],
8
+ status: [:string, enum: Spree::ImportRow.statuses, enum_type_name: 'ImportRowStatus'], validation_errors: [:string, nullable: true],
9
9
  item_type: [:string, nullable: true], item_id: [:string, nullable: true]
10
10
 
11
11
  attributes :row_number, :status, :validation_errors,
@@ -4,8 +4,10 @@ module Spree
4
4
  module Api
5
5
  module V3
6
6
  class ImportSerializer < BaseSerializer
7
- typelize number: :string, type: [:string, nullable: true], status: :string,
7
+ typelize number: :string,
8
+ type: [:string, nullable: true, comment: 'Import type. Built-in: products, product_translations, customers, price_list_prices. Extensions may register more.'], status: [:string, enum: Spree::Import.statuses, enum_type_name: 'ImportStatus'],
8
9
  owner_type: [:string, nullable: true], owner_id: [:string, nullable: true],
10
+ store_id: [:string, nullable: true], seller_id: [:string, nullable: true],
9
11
  user_id: [:string, nullable: true], rows_count: :number
10
12
 
11
13
  attributes :number, :rows_count,
@@ -23,13 +25,25 @@ module Spree
23
25
  import.status.to_s
24
26
  end
25
27
 
26
- # `"store"` / `"vendor"`, not the polymorphic class name.
28
+ # Which marketplace this import belongs to, and — when a seller ran it —
29
+ # whose it is. A null `seller_id` means the operator's own.
30
+ attribute :store_id do |import|
31
+ import.store&.prefixed_id
32
+ end
33
+
34
+ attribute :seller_id do |import|
35
+ import.seller&.prefixed_id
36
+ end
37
+
38
+ # @deprecated Read `store_id` / `seller_id` — removed in 6.1. Emitted
39
+ # from the pair above rather than the dropped columns, so a client
40
+ # still reading them sees the same answer.
27
41
  attribute :owner_type do |import|
28
- Spree::Base.polymorphic_api_type(import.owner_type)
42
+ Spree::Base.polymorphic_api_type(import.seller_id.present? ? 'Spree::Seller' : 'Spree::Store')
29
43
  end
30
44
 
31
45
  attribute :owner_id do |import|
32
- import.owner&.prefixed_id
46
+ (import.seller || import.store)&.prefixed_id
33
47
  end
34
48
 
35
49
  attribute :user_id do |import|
@@ -4,7 +4,7 @@ module Spree
4
4
  module Api
5
5
  module V3
6
6
  class InvitationSerializer < BaseSerializer
7
- typelize email: :string, status: :string,
7
+ typelize email: :string, status: [:string, enum: Spree::Invitation.statuses, enum_type_name: 'InvitationStatus'],
8
8
  resource_type: [:string, nullable: true], resource_id: [:string, nullable: true],
9
9
  inviter_type: [:string, nullable: true], inviter_id: [:string, nullable: true],
10
10
  invitee_type: [:string, nullable: true], invitee_id: [:string, nullable: true],
@@ -14,12 +14,21 @@ module Spree
14
14
  discounted_amount: [:string, nullable: true], display_discounted_amount: [:string, nullable: true],
15
15
  compare_at_amount: [:string, nullable: true], display_compare_at_amount: [:string, nullable: true],
16
16
  thumbnail_url: [:string, nullable: true],
17
- preorder: :boolean, preorder_ships_at: [:string, nullable: true]
17
+ preorder: :boolean, preorder_ships_at: [:string, nullable: true],
18
+ seller_id: [:string, nullable: true]
18
19
 
19
20
  attribute :variant_id do |line_item|
20
21
  line_item.variant&.prefixed_id
21
22
  end
22
23
 
24
+ # Which seller this line was bought from, snapshotted when it was
25
+ # added — nil is the operator's own first-party item. Always present
26
+ # so a storefront can group a multi-seller cart without paying for the
27
+ # expand; `?expand=seller` adds the public profile.
28
+ attribute :seller_id do |line_item|
29
+ line_item.seller&.prefixed_id
30
+ end
31
+
23
32
  # True when the line item's variant is currently a pre-order, so the
24
33
  # cart/checkout can flag it as shipping later.
25
34
  attribute :preorder do |line_item|
@@ -57,8 +66,16 @@ module Spree
57
66
  image_url_for(line_item.thumbnail)
58
67
  end
59
68
 
69
+ one :seller,
70
+ resource: proc { Spree.api.seller_serializer },
71
+ if: proc { expand?('seller') }
72
+
60
73
  many :option_values, resource: proc { Spree.api.option_value_serializer }
61
74
  many :digital_links, resource: proc { Spree.api.digital_link_serializer }
75
+ # Tax hangs off its adjustable, never off the cart or order: the
76
+ # exactly-one-adjustable rule makes the nested view complete, and the
77
+ # owner already carries the tax totals.
78
+ many :tax_lines, resource: proc { Spree.api.tax_line_serializer }, if: proc { expand?('tax_lines') }
62
79
  end
63
80
  end
64
81
  end
@@ -5,11 +5,11 @@ module Spree
5
5
  typelize name: :string, currency: :string,
6
6
  default_locale: :string,
7
7
  supported_locales: [:string, multi: true],
8
- country_isos: [:string, multi: true],
8
+ country_codes: [:string, multi: true],
9
9
  tax_inclusive: :boolean,
10
10
  default: :boolean
11
11
 
12
- attributes :name, :currency, :default_locale, :tax_inclusive, :default, :country_isos
12
+ attributes :name, :currency, :default_locale, :tax_inclusive, :default, :country_codes
13
13
 
14
14
  attribute :supported_locales do |market|
15
15
  market.supported_locales_list
@@ -3,11 +3,11 @@
3
3
  module Spree
4
4
  module Api
5
5
  module V3
6
- class AssetSerializer < BaseSerializer
7
- # `type` is not exposed: Spree::Image/Spree::Video were collapsed into
8
- # Spree::Asset, so the STI column is a legacy vestige with no subclasses
6
+ class MediaEventSerializer < BaseSerializer
7
+ # `type` is not exposed: the old Spree::Image/Spree::Video STI collapsed
8
+ # into one class, so the column is a legacy vestige with no subclasses
9
9
  # — `media_type` is the discriminator (see MediaSerializer).
10
- typelize media_type: :string, viewable_type: :string,
10
+ typelize media_type: [:string, enum: Spree::Media::MEDIA_TYPES], viewable_type: :string,
11
11
  viewable_id: :string, position: [:number, nullable: true],
12
12
  alt: [:string, nullable: true]
13
13