spree_api 6.0.0.beta4 → 6.0.0.rc2

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 (531) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +4 -48
  3. data/app/controllers/concerns/spree/api/v3/admin/email_template_lookup.rb +139 -0
  4. data/app/controllers/concerns/spree/api/v3/admin/product_membership.rb +10 -0
  5. data/app/controllers/concerns/spree/api/v3/admin/stock_receipt_actions.rb +26 -4
  6. data/app/controllers/concerns/spree/api/v3/admin/store_context.rb +1 -1
  7. data/app/controllers/concerns/spree/api/v3/admin/subclassed_resource.rb +15 -29
  8. data/app/controllers/concerns/spree/api/v3/admin/validation_details.rb +1 -1
  9. data/app/controllers/concerns/spree/api/v3/cart_resolvable.rb +10 -2
  10. data/app/controllers/concerns/spree/api/v3/channel_resolution.rb +3 -3
  11. data/app/controllers/concerns/spree/api/v3/company_address_writes.rb +3 -1
  12. data/app/controllers/concerns/spree/api/v3/current_password_confirmation.rb +1 -1
  13. data/app/controllers/concerns/spree/api/v3/error_handler.rb +55 -4
  14. data/app/controllers/concerns/spree/api/v3/file_uploads.rb +35 -0
  15. data/app/controllers/concerns/spree/api/v3/http_caching.rb +44 -11
  16. data/app/controllers/concerns/spree/api/v3/idempotent.rb +20 -5
  17. data/app/controllers/concerns/spree/api/v3/items_payload.rb +1 -1
  18. data/app/controllers/concerns/spree/api/v3/money_params.rb +52 -0
  19. data/app/controllers/concerns/spree/api/v3/order_lock.rb +2 -2
  20. data/app/controllers/concerns/spree/api/v3/orders/claim_actions.rb +1 -5
  21. data/app/controllers/concerns/spree/api/v3/orders/delivery_actions.rb +7 -11
  22. data/app/controllers/concerns/spree/api/v3/orders/exchange_actions.rb +1 -4
  23. data/app/controllers/concerns/spree/api/v3/orders/fulfillment_actions.rb +3 -15
  24. data/app/controllers/concerns/spree/api/v3/orders/post_sale_actions.rb +2 -10
  25. data/app/controllers/concerns/spree/api/v3/orders/return_actions.rb +1 -4
  26. data/app/controllers/concerns/spree/api/v3/orders/shipping_label_actions.rb +8 -28
  27. data/app/controllers/concerns/spree/api/v3/params_normalizer.rb +5 -0
  28. data/app/controllers/concerns/spree/api/v3/permission_serialization.rb +9 -1
  29. data/app/controllers/concerns/spree/api/v3/purchase_serialization.rb +26 -0
  30. data/app/controllers/concerns/spree/api/v3/request_params.rb +65 -0
  31. data/app/controllers/concerns/spree/api/v3/seller/seller_context.rb +1 -1
  32. data/app/controllers/concerns/spree/api/v3/store/storefront_products.rb +5 -4
  33. data/app/controllers/concerns/spree/api/v3/storefront_gating.rb +11 -5
  34. data/app/controllers/concerns/spree/api/v3/strict_money_params.rb +94 -0
  35. data/app/controllers/spree/api/v3/admin/admin_users_controller.rb +8 -4
  36. data/app/controllers/spree/api/v3/admin/allowed_origins_controller.rb +8 -1
  37. data/app/controllers/spree/api/v3/admin/api_keys_controller.rb +16 -8
  38. data/app/controllers/spree/api/v3/admin/base_controller.rb +1 -0
  39. data/app/controllers/spree/api/v3/admin/catalogs/order_minimums_controller.rb +2 -6
  40. data/app/controllers/spree/api/v3/admin/catalogs/quantity_rules_controller.rb +7 -9
  41. data/app/controllers/spree/api/v3/admin/catalogs_controller.rb +61 -34
  42. data/app/controllers/spree/api/v3/admin/categories/products_controller.rb +4 -1
  43. data/app/controllers/spree/api/v3/admin/categories_controller.rb +40 -20
  44. data/app/controllers/spree/api/v3/admin/channels_controller.rb +39 -10
  45. data/app/controllers/spree/api/v3/admin/claim_reasons_controller.rb +5 -1
  46. data/app/controllers/spree/api/v3/admin/collections/products_controller.rb +5 -3
  47. data/app/controllers/spree/api/v3/admin/collections_controller.rb +44 -15
  48. data/app/controllers/spree/api/v3/admin/commission_rates_controller.rb +62 -14
  49. data/app/controllers/spree/api/v3/admin/companies/addresses_controller.rb +11 -4
  50. data/app/controllers/spree/api/v3/admin/companies/invitations_controller.rb +1 -5
  51. data/app/controllers/spree/api/v3/admin/companies/memberships_controller.rb +9 -5
  52. data/app/controllers/spree/api/v3/admin/companies/tax_exemption_certificates_controller.rb +20 -27
  53. data/app/controllers/spree/api/v3/admin/companies/tax_identifiers_controller.rb +6 -5
  54. data/app/controllers/spree/api/v3/admin/companies_controller.rb +17 -7
  55. data/app/controllers/spree/api/v3/admin/countries_controller.rb +6 -2
  56. data/app/controllers/spree/api/v3/admin/coupon_codes_controller.rb +0 -4
  57. data/app/controllers/spree/api/v3/admin/custom_field_definitions_controller.rb +22 -4
  58. data/app/controllers/spree/api/v3/admin/custom_fields_controller.rb +12 -9
  59. data/app/controllers/spree/api/v3/admin/customer_groups_controller.rb +9 -5
  60. data/app/controllers/spree/api/v3/admin/customers/addresses_controller.rb +12 -11
  61. data/app/controllers/spree/api/v3/admin/customers/credit_cards_controller.rb +0 -4
  62. data/app/controllers/spree/api/v3/admin/customers/store_credits_controller.rb +11 -13
  63. data/app/controllers/spree/api/v3/admin/customers/tax_identifiers_controller.rb +6 -1
  64. data/app/controllers/spree/api/v3/admin/customers_controller.rb +37 -9
  65. data/app/controllers/spree/api/v3/admin/data_requests_controller.rb +8 -0
  66. data/app/controllers/spree/api/v3/admin/delivery_method_rules_controller.rb +1 -1
  67. data/app/controllers/spree/api/v3/admin/delivery_methods/rules_controller.rb +16 -8
  68. data/app/controllers/spree/api/v3/admin/delivery_methods_controller.rb +95 -62
  69. data/app/controllers/spree/api/v3/admin/delivery_profiles/origin_groups_controller.rb +8 -1
  70. data/app/controllers/spree/api/v3/admin/delivery_profiles_controller.rb +14 -7
  71. data/app/controllers/spree/api/v3/admin/delivery_zones_controller.rb +21 -5
  72. data/app/controllers/spree/api/v3/admin/email_templates/drafts_controller.rb +53 -0
  73. data/app/controllers/spree/api/v3/admin/email_templates/previews_controller.rb +34 -0
  74. data/app/controllers/spree/api/v3/admin/email_templates/publications_controller.rb +37 -0
  75. data/app/controllers/spree/api/v3/admin/email_templates/restorations_controller.rb +42 -0
  76. data/app/controllers/spree/api/v3/admin/email_templates/revisions_controller.rb +35 -0
  77. data/app/controllers/spree/api/v3/admin/email_templates/sample_records_controller.rb +33 -0
  78. data/app/controllers/spree/api/v3/admin/email_templates/test_emails_controller.rb +44 -0
  79. data/app/controllers/spree/api/v3/admin/email_templates_controller.rb +46 -0
  80. data/app/controllers/spree/api/v3/admin/exports_controller.rb +23 -6
  81. data/app/controllers/spree/api/v3/admin/files_controller.rb +29 -0
  82. data/app/controllers/spree/api/v3/admin/gift_card_batches_controller.rb +20 -1
  83. data/app/controllers/spree/api/v3/admin/gift_cards_controller.rb +19 -1
  84. data/app/controllers/spree/api/v3/admin/imports_controller.rb +37 -11
  85. data/app/controllers/spree/api/v3/admin/integrations_controller.rb +13 -1
  86. data/app/controllers/spree/api/v3/admin/invitation_acceptances_controller.rb +9 -2
  87. data/app/controllers/spree/api/v3/admin/invitations_controller.rb +8 -8
  88. data/app/controllers/spree/api/v3/admin/locales_controller.rb +1 -1
  89. data/app/controllers/spree/api/v3/admin/markets_controller.rb +30 -9
  90. data/app/controllers/spree/api/v3/admin/me_controller.rb +13 -4
  91. data/app/controllers/spree/api/v3/admin/media_controller.rb +22 -9
  92. data/app/controllers/spree/api/v3/admin/media_library_controller.rb +9 -5
  93. data/app/controllers/spree/api/v3/admin/option_types_controller.rb +24 -7
  94. data/app/controllers/spree/api/v3/admin/order_cancellation_reasons_controller.rb +5 -1
  95. data/app/controllers/spree/api/v3/admin/order_routing_rules_controller.rb +13 -5
  96. data/app/controllers/spree/api/v3/admin/orders/claims_controller.rb +39 -1
  97. data/app/controllers/spree/api/v3/admin/orders/deliveries_controller.rb +20 -6
  98. data/app/controllers/spree/api/v3/admin/orders/discount_codes_controller.rb +6 -2
  99. data/app/controllers/spree/api/v3/admin/orders/discounts_controller.rb +30 -6
  100. data/app/controllers/spree/api/v3/admin/orders/exchanges_controller.rb +36 -1
  101. data/app/controllers/spree/api/v3/admin/orders/fees_controller.rb +22 -1
  102. data/app/controllers/spree/api/v3/admin/orders/fulfillments_controller.rb +83 -22
  103. data/app/controllers/spree/api/v3/admin/orders/gift_cards_controller.rb +9 -5
  104. data/app/controllers/spree/api/v3/admin/orders/items_controller.rb +11 -1
  105. data/app/controllers/spree/api/v3/admin/orders/labels_controller.rb +37 -12
  106. data/app/controllers/spree/api/v3/admin/orders/payments_controller.rb +18 -19
  107. data/app/controllers/spree/api/v3/admin/orders/refunds_controller.rb +7 -5
  108. data/app/controllers/spree/api/v3/admin/orders/returns_controller.rb +37 -1
  109. data/app/controllers/spree/api/v3/admin/orders/store_credits_controller.rb +6 -3
  110. data/app/controllers/spree/api/v3/admin/orders_controller.rb +76 -62
  111. data/app/controllers/spree/api/v3/admin/package_types_controller.rb +30 -5
  112. data/app/controllers/spree/api/v3/admin/password_resets_controller.rb +26 -7
  113. data/app/controllers/spree/api/v3/admin/payment_methods_controller.rb +38 -22
  114. data/app/controllers/spree/api/v3/admin/policies_controller.rb +8 -4
  115. data/app/controllers/spree/api/v3/admin/price_lists_controller.rb +32 -67
  116. data/app/controllers/spree/api/v3/admin/prices_controller.rb +51 -8
  117. data/app/controllers/spree/api/v3/admin/product_types_controller.rb +25 -8
  118. data/app/controllers/spree/api/v3/admin/products/digital_assets_controller.rb +29 -16
  119. data/app/controllers/spree/api/v3/admin/products/variants_controller.rb +9 -18
  120. data/app/controllers/spree/api/v3/admin/products_controller.rb +122 -71
  121. data/app/controllers/spree/api/v3/admin/promotion_actions_controller.rb +11 -6
  122. data/app/controllers/spree/api/v3/admin/promotion_rules_controller.rb +10 -5
  123. data/app/controllers/spree/api/v3/admin/promotions_controller.rb +50 -14
  124. data/app/controllers/spree/api/v3/admin/purchase_orders_controller.rb +55 -8
  125. data/app/controllers/spree/api/v3/admin/refund_reasons_controller.rb +5 -1
  126. data/app/controllers/spree/api/v3/admin/reporting/saved_reports_controller.rb +9 -1
  127. data/app/controllers/spree/api/v3/admin/reporting_controller.rb +34 -0
  128. data/app/controllers/spree/api/v3/admin/resource_controller.rb +2 -1
  129. data/app/controllers/spree/api/v3/admin/return_reasons_controller.rb +5 -1
  130. data/app/controllers/spree/api/v3/admin/roles_controller.rb +13 -1
  131. data/app/controllers/spree/api/v3/admin/seller_payouts_controller.rb +7 -9
  132. data/app/controllers/spree/api/v3/admin/seller_requirement_submissions_controller.rb +17 -10
  133. data/app/controllers/spree/api/v3/admin/seller_requirements_controller.rb +32 -6
  134. data/app/controllers/spree/api/v3/admin/seller_transfers_controller.rb +0 -4
  135. data/app/controllers/spree/api/v3/admin/sellers/invitations_controller.rb +1 -1
  136. data/app/controllers/spree/api/v3/admin/sellers/payouts_controller.rb +1 -1
  137. data/app/controllers/spree/api/v3/admin/sellers_controller.rb +77 -32
  138. data/app/controllers/spree/api/v3/admin/setup_controller.rb +54 -23
  139. data/app/controllers/spree/api/v3/admin/stock_levels_controller.rb +38 -9
  140. data/app/controllers/spree/api/v3/admin/stock_locations_controller.rb +41 -9
  141. data/app/controllers/spree/api/v3/admin/stock_transfers_controller.rb +49 -8
  142. data/app/controllers/spree/api/v3/admin/store_controller.rb +122 -48
  143. data/app/controllers/spree/api/v3/admin/store_credits_controller.rb +1 -7
  144. data/app/controllers/spree/api/v3/admin/suppliers_controller.rb +16 -6
  145. data/app/controllers/spree/api/v3/admin/tags_controller.rb +8 -5
  146. data/app/controllers/spree/api/v3/admin/tax_categories_controller.rb +7 -4
  147. data/app/controllers/spree/api/v3/admin/tax_rates_controller.rb +21 -3
  148. data/app/controllers/spree/api/v3/admin/tracking_carriers_controller.rb +4 -0
  149. data/app/controllers/spree/api/v3/admin/translations/batches_controller.rb +17 -9
  150. data/app/controllers/spree/api/v3/admin/translations_controller.rb +4 -0
  151. data/app/controllers/spree/api/v3/admin/translations_coverage_controller.rb +5 -0
  152. data/app/controllers/spree/api/v3/admin/updates_controller.rb +39 -0
  153. data/app/controllers/spree/api/v3/admin/webhook_endpoints_controller.rb +40 -13
  154. data/app/controllers/spree/api/v3/admin/webhook_events_controller.rb +25 -0
  155. data/app/controllers/spree/api/v3/base_controller.rb +12 -0
  156. data/app/controllers/spree/api/v3/resource_controller.rb +99 -3
  157. data/app/controllers/spree/api/v3/seller/auth_controller.rb +10 -2
  158. data/app/controllers/spree/api/v3/seller/base_controller.rb +1 -0
  159. data/app/controllers/spree/api/v3/seller/countries_controller.rb +3 -3
  160. data/app/controllers/spree/api/v3/seller/delivery_methods_controller.rb +49 -60
  161. data/app/controllers/spree/api/v3/seller/exports_controller.rb +21 -4
  162. data/app/controllers/spree/api/v3/seller/files_controller.rb +27 -0
  163. data/app/controllers/spree/api/v3/seller/imports_controller.rb +25 -9
  164. data/app/controllers/spree/api/v3/seller/invitation_acceptances_controller.rb +12 -4
  165. data/app/controllers/spree/api/v3/seller/invitations_controller.rb +1 -1
  166. data/app/controllers/spree/api/v3/seller/me_controller.rb +15 -4
  167. data/app/controllers/spree/api/v3/seller/onboarding_controller.rb +11 -0
  168. data/app/controllers/spree/api/v3/seller/orders/claims_controller.rb +35 -0
  169. data/app/controllers/spree/api/v3/seller/orders/deliveries_controller.rb +12 -0
  170. data/app/controllers/spree/api/v3/seller/orders/exchanges_controller.rb +33 -0
  171. data/app/controllers/spree/api/v3/seller/orders/fulfillments_controller.rb +28 -2
  172. data/app/controllers/spree/api/v3/seller/orders/labels_controller.rb +23 -2
  173. data/app/controllers/spree/api/v3/seller/orders/notes_controller.rb +8 -1
  174. data/app/controllers/spree/api/v3/seller/orders/returns_controller.rb +32 -0
  175. data/app/controllers/spree/api/v3/seller/orders_controller.rb +35 -14
  176. data/app/controllers/spree/api/v3/seller/package_types_controller.rb +21 -9
  177. data/app/controllers/spree/api/v3/seller/password_resets_controller.rb +20 -11
  178. data/app/controllers/spree/api/v3/seller/policies_controller.rb +12 -4
  179. data/app/controllers/spree/api/v3/seller/products_controller.rb +115 -28
  180. data/app/controllers/spree/api/v3/seller/profile_controller.rb +33 -10
  181. data/app/controllers/spree/api/v3/seller/requirement_submissions_controller.rb +13 -6
  182. data/app/controllers/spree/api/v3/seller/resource_controller.rb +12 -0
  183. data/app/controllers/spree/api/v3/seller/stock_locations_controller.rb +44 -13
  184. data/app/controllers/spree/api/v3/seller/tax_identifiers_controller.rb +10 -1
  185. data/app/controllers/spree/api/v3/seller/team_controller.rb +5 -1
  186. data/app/controllers/spree/api/v3/store/auth_controller.rb +10 -0
  187. data/app/controllers/spree/api/v3/store/carts/discount_codes_controller.rb +9 -2
  188. data/app/controllers/spree/api/v3/store/carts/fulfillments_controller.rb +11 -11
  189. data/app/controllers/spree/api/v3/store/carts/gift_cards_controller.rb +13 -4
  190. data/app/controllers/spree/api/v3/store/carts/items_controller.rb +23 -7
  191. data/app/controllers/spree/api/v3/store/carts/payment_sessions_controller.rb +21 -7
  192. data/app/controllers/spree/api/v3/store/carts/payments_controller.rb +16 -3
  193. data/app/controllers/spree/api/v3/store/carts/po_documents_controller.rb +26 -28
  194. data/app/controllers/spree/api/v3/store/carts/store_credits_controller.rb +9 -1
  195. data/app/controllers/spree/api/v3/store/carts/tax_identifiers_controller.rb +5 -1
  196. data/app/controllers/spree/api/v3/store/carts_controller.rb +64 -52
  197. data/app/controllers/spree/api/v3/store/companies/addresses_controller.rb +12 -8
  198. data/app/controllers/spree/api/v3/store/companies/invitations_controller.rb +1 -5
  199. data/app/controllers/spree/api/v3/store/companies/members_controller.rb +4 -0
  200. data/app/controllers/spree/api/v3/store/companies_controller.rb +5 -1
  201. data/app/controllers/spree/api/v3/store/company_invitations_controller.rb +10 -2
  202. data/app/controllers/spree/api/v3/store/customer/addresses_controller.rb +8 -11
  203. data/app/controllers/spree/api/v3/store/customer/credit_cards_controller.rb +0 -4
  204. data/app/controllers/spree/api/v3/store/customer/data_requests_controller.rb +5 -5
  205. data/app/controllers/spree/api/v3/store/customer/digital_links_controller.rb +0 -4
  206. data/app/controllers/spree/api/v3/store/customer/gift_cards_controller.rb +0 -4
  207. data/app/controllers/spree/api/v3/store/customer/orders_controller.rb +0 -4
  208. data/app/controllers/spree/api/v3/store/customer/password_resets_controller.rb +25 -6
  209. data/app/controllers/spree/api/v3/store/customer/payment_setup_sessions_controller.rb +10 -9
  210. data/app/controllers/spree/api/v3/store/customer/store_credits_controller.rb +0 -5
  211. data/app/controllers/spree/api/v3/store/customer/tax_identifiers_controller.rb +5 -1
  212. data/app/controllers/spree/api/v3/store/customers_controller.rb +28 -2
  213. data/app/controllers/spree/api/v3/store/data_request_downloads_controller.rb +1 -1
  214. data/app/controllers/spree/api/v3/store/delivery_methods_controller.rb +1 -1
  215. data/app/controllers/spree/api/v3/store/newsletter_subscribers_controller.rb +27 -14
  216. data/app/controllers/spree/api/v3/store/orders/claims_controller.rb +12 -7
  217. data/app/controllers/spree/api/v3/store/orders/returns_controller.rb +11 -6
  218. data/app/controllers/spree/api/v3/store/orders_controller.rb +47 -10
  219. data/app/controllers/spree/api/v3/store/products_controller.rb +8 -0
  220. data/app/controllers/spree/api/v3/store/wishlist_items_controller.rb +10 -8
  221. data/app/controllers/spree/api/v3/store/wishlists_controller.rb +12 -4
  222. data/app/request_schemas/spree/api/v3/address_request_schema.rb +27 -0
  223. data/app/request_schemas/spree/api/v3/admin/address_request_schema.rb +13 -0
  224. data/app/request_schemas/spree/api/v3/admin/bulk_tags_request_schema.rb +17 -0
  225. data/app/request_schemas/spree/api/v3/admin/catalog_order_minimum_request_schema.rb +17 -0
  226. data/app/request_schemas/spree/api/v3/admin/email_template_language_request_schema.rb +17 -0
  227. data/app/request_schemas/spree/api/v3/admin/email_template_preview_request_schema.rb +32 -0
  228. data/app/request_schemas/spree/api/v3/admin/price_adjustment_tier_request_schema.rb +21 -0
  229. data/app/request_schemas/spree/api/v3/admin/price_list_price_request_schema.rb +21 -0
  230. data/app/request_schemas/spree/api/v3/admin/price_list_rule_request_schema.rb +19 -0
  231. data/app/request_schemas/spree/api/v3/admin/product_membership_reposition_request_schema.rb +17 -0
  232. data/app/request_schemas/spree/api/v3/admin/promotion_action_calculator_request_schema.rb +18 -0
  233. data/app/request_schemas/spree/api/v3/admin/promotion_action_line_item_request_schema.rb +15 -0
  234. data/app/request_schemas/spree/api/v3/admin/promotion_action_request_schema.rb +19 -0
  235. data/app/request_schemas/spree/api/v3/admin/promotion_rule_request_schema.rb +22 -0
  236. data/app/request_schemas/spree/api/v3/admin/reason_request_schema.rb +14 -0
  237. data/app/request_schemas/spree/api/v3/admin/tax_identifier_request_schema.rb +15 -0
  238. data/app/request_schemas/spree/api/v3/custom_field_value_request_schema.rb +15 -0
  239. data/app/request_schemas/spree/api/v3/file_upload_request_schema.rb +20 -0
  240. data/app/request_schemas/spree/api/v3/media_request_schema.rb +27 -0
  241. data/app/request_schemas/spree/api/v3/price_request_schema.rb +17 -0
  242. data/app/request_schemas/spree/api/v3/stock_level_request_schema.rb +18 -0
  243. data/app/request_schemas/spree/api/v3/store/address_request_schema.rb +29 -0
  244. data/app/request_schemas/spree/api/v3/tax_identifier_request_schema.rb +18 -0
  245. data/app/request_schemas/spree/api/v3/variant_option_request_schema.rb +13 -0
  246. data/app/request_schemas/spree/api/v3/variant_request_schema.rb +52 -0
  247. data/app/serializers/concerns/spree/api/v3/purchase_summary.rb +48 -0
  248. data/app/serializers/spree/api/v3/address_serializer.rb +4 -2
  249. data/app/serializers/spree/api/v3/admin/address_serializer.rb +8 -7
  250. data/app/serializers/spree/api/v3/admin/api_key_serializer.rb +2 -6
  251. data/app/serializers/spree/api/v3/admin/applied_promotion_serializer.rb +3 -1
  252. data/app/serializers/spree/api/v3/admin/cart_serializer.rb +3 -1
  253. data/app/serializers/spree/api/v3/admin/catalog_assignment_serializer.rb +1 -3
  254. data/app/serializers/spree/api/v3/admin/catalog_order_minimum_serializer.rb +3 -8
  255. data/app/serializers/spree/api/v3/admin/catalog_price_serializer.rb +3 -4
  256. data/app/serializers/spree/api/v3/admin/catalog_price_tier_serializer.rb +4 -3
  257. data/app/serializers/spree/api/v3/admin/catalog_product_term_serializer.rb +1 -3
  258. data/app/serializers/spree/api/v3/admin/catalog_quantity_rule_serializer.rb +1 -3
  259. data/app/serializers/spree/api/v3/admin/channel_serializer.rb +7 -10
  260. data/app/serializers/spree/api/v3/admin/claim_line_item_serializer.rb +7 -0
  261. data/app/serializers/spree/api/v3/admin/claim_reason_serializer.rb +1 -3
  262. data/app/serializers/spree/api/v3/admin/claim_serializer.rb +5 -0
  263. data/app/serializers/spree/api/v3/admin/commission_line_serializer.rb +7 -18
  264. data/app/serializers/spree/api/v3/admin/commission_rate_serializer.rb +7 -11
  265. data/app/serializers/spree/api/v3/admin/commission_rule_serializer.rb +1 -5
  266. data/app/serializers/spree/api/v3/admin/country_serializer.rb +4 -0
  267. data/app/serializers/spree/api/v3/admin/coupon_code_serializer.rb +1 -7
  268. data/app/serializers/spree/api/v3/admin/credit_card_serializer.rb +1 -7
  269. data/app/serializers/spree/api/v3/admin/custom_field_definition_serializer.rb +6 -2
  270. data/app/serializers/spree/api/v3/admin/customer_serializer.rb +5 -17
  271. data/app/serializers/spree/api/v3/admin/data_request_serializer.rb +2 -6
  272. data/app/serializers/spree/api/v3/admin/delivery_method_rule_serializer.rb +0 -2
  273. data/app/serializers/spree/api/v3/admin/delivery_method_serializer.rb +20 -30
  274. data/app/serializers/spree/api/v3/admin/delivery_method_service_serializer.rb +9 -1
  275. data/app/serializers/spree/api/v3/admin/delivery_origin_group_serializer.rb +1 -3
  276. data/app/serializers/spree/api/v3/admin/delivery_rate_serializer.rb +8 -0
  277. data/app/serializers/spree/api/v3/admin/delivery_serializer.rb +1 -3
  278. data/app/serializers/spree/api/v3/admin/delivery_zone_serializer.rb +1 -7
  279. data/app/serializers/spree/api/v3/admin/digital_asset_serializer.rb +4 -2
  280. data/app/serializers/spree/api/v3/admin/discount_serializer.rb +3 -1
  281. data/app/serializers/spree/api/v3/admin/email_template_draft_serializer.rb +19 -0
  282. data/app/serializers/spree/api/v3/admin/email_template_preview_serializer.rb +38 -0
  283. data/app/serializers/spree/api/v3/admin/email_template_revision_serializer.rb +18 -0
  284. data/app/serializers/spree/api/v3/admin/email_template_sample_record_serializer.rb +13 -0
  285. data/app/serializers/spree/api/v3/admin/email_template_serializer.rb +61 -0
  286. data/app/serializers/spree/api/v3/admin/exchange_line_item_serializer.rb +5 -0
  287. data/app/serializers/spree/api/v3/admin/exchange_serializer.rb +6 -3
  288. data/app/serializers/spree/api/v3/admin/export_serializer.rb +1 -7
  289. data/app/serializers/spree/api/v3/admin/fee_serializer.rb +3 -1
  290. data/app/serializers/spree/api/v3/admin/file_upload_serializer.rb +11 -0
  291. data/app/serializers/spree/api/v3/admin/file_upload_target_serializer.rb +10 -0
  292. data/app/serializers/spree/api/v3/admin/fulfillment_item_serializer.rb +1 -7
  293. data/app/serializers/spree/api/v3/admin/fulfillment_serializer.rb +13 -17
  294. data/app/serializers/spree/api/v3/admin/gift_card_serializer.rb +4 -10
  295. data/app/serializers/spree/api/v3/admin/import_serializer.rb +2 -2
  296. data/app/serializers/spree/api/v3/admin/integration_serializer.rb +1 -3
  297. data/app/serializers/spree/api/v3/admin/line_item_serializer.rb +14 -18
  298. data/app/serializers/spree/api/v3/admin/locale_serializer.rb +13 -0
  299. data/app/serializers/spree/api/v3/admin/market_serializer.rb +7 -2
  300. data/app/serializers/spree/api/v3/admin/media_serializer.rb +4 -5
  301. data/app/serializers/spree/api/v3/admin/order_cancellation_reason_serializer.rb +1 -3
  302. data/app/serializers/spree/api/v3/admin/order_group_serializer.rb +5 -9
  303. data/app/serializers/spree/api/v3/admin/order_routing_rule_serializer.rb +2 -6
  304. data/app/serializers/spree/api/v3/admin/order_serializer.rb +38 -48
  305. data/app/serializers/spree/api/v3/admin/package_type_serializer.rb +1 -3
  306. data/app/serializers/spree/api/v3/admin/payment_method_serializer.rb +7 -4
  307. data/app/serializers/spree/api/v3/admin/payment_serializer.rb +6 -8
  308. data/app/serializers/spree/api/v3/admin/payment_split_serializer.rb +8 -9
  309. data/app/serializers/spree/api/v3/admin/permission_serializer.rb +4 -4
  310. data/app/serializers/spree/api/v3/admin/price_adjustment_tier_serializer.rb +3 -6
  311. data/app/serializers/spree/api/v3/admin/price_history_serializer.rb +5 -2
  312. data/app/serializers/spree/api/v3/admin/price_list_serializer.rb +1 -5
  313. data/app/serializers/spree/api/v3/admin/price_rule_serializer.rb +2 -6
  314. data/app/serializers/spree/api/v3/admin/price_serializer.rb +2 -0
  315. data/app/serializers/spree/api/v3/admin/product_serializer.rb +4 -10
  316. data/app/serializers/spree/api/v3/admin/product_submission_serializer.rb +2 -10
  317. data/app/serializers/spree/api/v3/admin/product_type_serializer.rb +1 -3
  318. data/app/serializers/spree/api/v3/admin/promotion_action_serializer.rb +5 -9
  319. data/app/serializers/spree/api/v3/admin/promotion_rule_serializer.rb +1 -5
  320. data/app/serializers/spree/api/v3/admin/purchase_order_item_serializer.rb +6 -25
  321. data/app/serializers/spree/api/v3/admin/purchase_order_serializer.rb +4 -17
  322. data/app/serializers/spree/api/v3/admin/refund_reason_serializer.rb +1 -3
  323. data/app/serializers/spree/api/v3/admin/refund_serializer.rb +7 -0
  324. data/app/serializers/spree/api/v3/admin/reporting_result_serializer.rb +9 -2
  325. data/app/serializers/spree/api/v3/admin/return_line_item_serializer.rb +9 -0
  326. data/app/serializers/spree/api/v3/admin/return_reason_serializer.rb +1 -3
  327. data/app/serializers/spree/api/v3/admin/return_serializer.rb +8 -12
  328. data/app/serializers/spree/api/v3/admin/saved_report_serializer.rb +1 -3
  329. data/app/serializers/spree/api/v3/admin/seller_balance_serializer.rb +15 -10
  330. data/app/serializers/spree/api/v3/admin/seller_payout_serializer.rb +7 -7
  331. data/app/serializers/spree/api/v3/admin/seller_requirement_status_serializer.rb +2 -6
  332. data/app/serializers/spree/api/v3/admin/seller_requirement_submission_serializer.rb +1 -7
  333. data/app/serializers/spree/api/v3/admin/seller_serializer.rb +8 -16
  334. data/app/serializers/spree/api/v3/admin/seller_transfer_serializer.rb +11 -10
  335. data/app/serializers/spree/api/v3/admin/shipping_label_serializer.rb +8 -21
  336. data/app/serializers/spree/api/v3/admin/stock_level_serializer.rb +1 -3
  337. data/app/serializers/spree/api/v3/admin/stock_location_serializer.rb +4 -3
  338. data/app/serializers/spree/api/v3/admin/stock_movement_serializer.rb +3 -9
  339. data/app/serializers/spree/api/v3/admin/stock_receipt_item_serializer.rb +1 -7
  340. data/app/serializers/spree/api/v3/admin/stock_receipt_serializer.rb +1 -3
  341. data/app/serializers/spree/api/v3/admin/stock_reservation_serializer.rb +1 -3
  342. data/app/serializers/spree/api/v3/admin/stock_transfer_item_serializer.rb +1 -3
  343. data/app/serializers/spree/api/v3/admin/store_credit_event_serializer.rb +6 -3
  344. data/app/serializers/spree/api/v3/admin/store_credit_serializer.rb +11 -20
  345. data/app/serializers/spree/api/v3/admin/store_serializer.rb +21 -84
  346. data/app/serializers/spree/api/v3/admin/supplier_serializer.rb +2 -4
  347. data/app/serializers/spree/api/v3/admin/tax_exemption_certificate_serializer.rb +6 -10
  348. data/app/serializers/spree/api/v3/admin/tax_identifier_serializer.rb +1 -3
  349. data/app/serializers/spree/api/v3/admin/tax_line_serializer.rb +9 -3
  350. data/app/serializers/spree/api/v3/admin/tax_rate_serializer.rb +3 -19
  351. data/app/serializers/spree/api/v3/admin/update_status_serializer.rb +28 -0
  352. data/app/serializers/spree/api/v3/admin/variant_serializer.rb +13 -10
  353. data/app/serializers/spree/api/v3/admin/webhook_delivery_serializer.rb +1 -3
  354. data/app/serializers/spree/api/v3/admin/webhook_event_serializer.rb +23 -0
  355. data/app/serializers/spree/api/v3/applied_promotion_serializer.rb +2 -4
  356. data/app/serializers/spree/api/v3/base_serializer.rb +132 -7
  357. data/app/serializers/spree/api/v3/cart_serializer.rb +20 -66
  358. data/app/serializers/spree/api/v3/category_serializer.rb +5 -15
  359. data/app/serializers/spree/api/v3/claim_line_item_serializer.rb +6 -29
  360. data/app/serializers/spree/api/v3/claim_serializer.rb +2 -16
  361. data/app/serializers/spree/api/v3/collection_serializer.rb +1 -3
  362. data/app/serializers/spree/api/v3/company_serializer.rb +1 -3
  363. data/app/serializers/spree/api/v3/country_serializer.rb +2 -1
  364. data/app/serializers/spree/api/v3/currency_serializer.rb +9 -1
  365. data/app/serializers/spree/api/v3/custom_field_serializer.rb +1 -2
  366. data/app/serializers/spree/api/v3/customer_serializer.rb +3 -2
  367. data/app/serializers/spree/api/v3/delivery_rate_serializer.rb +8 -32
  368. data/app/serializers/spree/api/v3/delivery_zone_member_serializer.rb +1 -1
  369. data/app/serializers/spree/api/v3/digital_asset_serializer.rb +1 -3
  370. data/app/serializers/spree/api/v3/digital_link_serializer.rb +3 -9
  371. data/app/serializers/spree/api/v3/discount_serializer.rb +4 -12
  372. data/app/serializers/spree/api/v3/exchange_line_item_serializer.rb +6 -30
  373. data/app/serializers/spree/api/v3/exchange_serializer.rb +2 -16
  374. data/app/serializers/spree/api/v3/export_serializer.rb +1 -3
  375. data/app/serializers/spree/api/v3/fee_serializer.rb +2 -10
  376. data/app/serializers/spree/api/v3/file_upload_serializer.rb +28 -0
  377. data/app/serializers/spree/api/v3/file_upload_target_serializer.rb +17 -0
  378. data/app/serializers/spree/api/v3/fulfillment_serializer.rb +4 -11
  379. data/app/serializers/spree/api/v3/gift_card_batch_serializer.rb +3 -7
  380. data/app/serializers/spree/api/v3/gift_card_serializer.rb +7 -17
  381. data/app/serializers/spree/api/v3/import_row_serializer.rb +2 -6
  382. data/app/serializers/spree/api/v3/import_serializer.rb +3 -26
  383. data/app/serializers/spree/api/v3/invitation_serializer.rb +2 -19
  384. data/app/serializers/spree/api/v3/line_item_serializer.rb +19 -23
  385. data/app/serializers/spree/api/v3/locale_serializer.rb +3 -1
  386. data/app/serializers/spree/api/v3/market_serializer.rb +5 -5
  387. data/app/serializers/spree/api/v3/media_event_serializer.rb +1 -3
  388. data/app/serializers/spree/api/v3/media_serializer.rb +8 -5
  389. data/app/serializers/spree/api/v3/newsletter_subscriber_request_event_serializer.rb +35 -0
  390. data/app/serializers/spree/api/v3/newsletter_subscriber_serializer.rb +2 -6
  391. data/app/serializers/spree/api/v3/option_value_serializer.rb +1 -3
  392. data/app/serializers/spree/api/v3/order_group_serializer.rb +12 -25
  393. data/app/serializers/spree/api/v3/order_serializer.rb +14 -58
  394. data/app/serializers/spree/api/v3/password_reset_requested_event_serializer.rb +29 -0
  395. data/app/serializers/spree/api/v3/payment_method_serializer.rb +2 -6
  396. data/app/serializers/spree/api/v3/payment_serializer.rb +5 -10
  397. data/app/serializers/spree/api/v3/payment_session_serializer.rb +5 -13
  398. data/app/serializers/spree/api/v3/payment_setup_session_serializer.rb +3 -11
  399. data/app/serializers/spree/api/v3/policy_serializer.rb +1 -3
  400. data/app/serializers/spree/api/v3/price_history_serializer.rb +6 -8
  401. data/app/serializers/spree/api/v3/price_serializer.rb +7 -12
  402. data/app/serializers/spree/api/v3/product_filter_price_range_serializer.rb +10 -4
  403. data/app/serializers/spree/api/v3/product_publication_serializer.rb +1 -7
  404. data/app/serializers/spree/api/v3/product_serializer.rb +10 -24
  405. data/app/serializers/spree/api/v3/product_submission_serializer.rb +26 -0
  406. data/app/serializers/spree/api/v3/purchase_order_event_serializer.rb +23 -4
  407. data/app/serializers/spree/api/v3/refund_serializer.rb +11 -16
  408. data/app/serializers/spree/api/v3/return_line_item_serializer.rb +6 -21
  409. data/app/serializers/spree/api/v3/return_serializer.rb +4 -16
  410. data/app/serializers/spree/api/v3/saved_report_event_serializer.rb +23 -0
  411. data/app/serializers/spree/api/v3/seller/address_serializer.rb +12 -0
  412. data/app/serializers/spree/api/v3/seller/balance_serializer.rb +15 -10
  413. data/app/serializers/spree/api/v3/seller/claim_line_item_serializer.rb +7 -0
  414. data/app/serializers/spree/api/v3/seller/claim_serializer.rb +5 -0
  415. data/app/serializers/spree/api/v3/seller/country_serializer.rb +19 -0
  416. data/app/serializers/spree/api/v3/seller/delivery_method_rule_serializer.rb +1 -3
  417. data/app/serializers/spree/api/v3/seller/delivery_method_serializer.rb +5 -15
  418. data/app/serializers/spree/api/v3/seller/delivery_rate_serializer.rb +8 -13
  419. data/app/serializers/spree/api/v3/seller/delivery_serializer.rb +1 -3
  420. data/app/serializers/spree/api/v3/seller/delivery_zone_serializer.rb +1 -3
  421. data/app/serializers/spree/api/v3/seller/exchange_line_item_serializer.rb +5 -0
  422. data/app/serializers/spree/api/v3/seller/exchange_serializer.rb +6 -3
  423. data/app/serializers/spree/api/v3/seller/file_upload_serializer.rb +11 -0
  424. data/app/serializers/spree/api/v3/seller/file_upload_target_serializer.rb +10 -0
  425. data/app/serializers/spree/api/v3/seller/fulfillment_item_serializer.rb +1 -7
  426. data/app/serializers/spree/api/v3/seller/fulfillment_serializer.rb +2 -6
  427. data/app/serializers/spree/api/v3/seller/import_serializer.rb +2 -2
  428. data/app/serializers/spree/api/v3/seller/invitation_serializer.rb +1 -3
  429. data/app/serializers/spree/api/v3/seller/media_serializer.rb +2 -5
  430. data/app/serializers/spree/api/v3/seller/order_line_item_serializer.rb +8 -13
  431. data/app/serializers/spree/api/v3/seller/order_serializer.rb +19 -40
  432. data/app/serializers/spree/api/v3/seller/payment_split_serializer.rb +8 -9
  433. data/app/serializers/spree/api/v3/seller/payout_serializer.rb +6 -6
  434. data/app/serializers/spree/api/v3/seller/price_history_serializer.rb +11 -0
  435. data/app/serializers/spree/api/v3/seller/price_serializer.rb +11 -0
  436. data/app/serializers/spree/api/v3/seller/product_serializer.rb +3 -7
  437. data/app/serializers/spree/api/v3/seller/product_submission_serializer.rb +1 -21
  438. data/app/serializers/spree/api/v3/seller/profile_serializer.rb +9 -13
  439. data/app/serializers/spree/api/v3/seller/requirement_status_serializer.rb +3 -9
  440. data/app/serializers/spree/api/v3/seller/return_line_item_serializer.rb +8 -0
  441. data/app/serializers/spree/api/v3/seller/return_serializer.rb +8 -17
  442. data/app/serializers/spree/api/v3/seller/state_serializer.rb +10 -0
  443. data/app/serializers/spree/api/v3/seller/stock_location_serializer.rb +3 -0
  444. data/app/serializers/spree/api/v3/seller/transfer_serializer.rb +10 -9
  445. data/app/serializers/spree/api/v3/seller/variant_serializer.rb +8 -4
  446. data/app/serializers/spree/api/v3/seller_serializer.rb +1 -3
  447. data/app/serializers/spree/api/v3/shipping_label_event_serializer.rb +22 -4
  448. data/app/serializers/spree/api/v3/stock_level_serializer.rb +1 -7
  449. data/app/serializers/spree/api/v3/stock_location_serializer.rb +8 -1
  450. data/app/serializers/spree/api/v3/stock_movement_serializer.rb +1 -3
  451. data/app/serializers/spree/api/v3/stock_receipt_event_serializer.rb +20 -4
  452. data/app/serializers/spree/api/v3/stock_transfer_serializer.rb +1 -7
  453. data/app/serializers/spree/api/v3/store_credit_event_serializer.rb +2 -13
  454. data/app/serializers/spree/api/v3/store_credit_serializer.rb +3 -27
  455. data/app/serializers/spree/api/v3/supplier_event_serializer.rb +6 -4
  456. data/app/serializers/spree/api/v3/tax_line_serializer.rb +11 -23
  457. data/app/serializers/spree/api/v3/variant_serializer.rb +10 -24
  458. data/app/serializers/spree/api/v3/wishlist_item_serializer.rb +1 -11
  459. data/app/serializers/spree/api/v3/wishlist_serializer.rb +2 -6
  460. data/app/services/spree/api/v3/filter_predicates.rb +29 -0
  461. data/app/services/spree/api/v3/filter_table.rb +337 -0
  462. data/app/services/spree/api/v3/filters_aggregator.rb +2 -2
  463. data/app/services/spree/api/v3/request_schema.rb +430 -0
  464. data/app/services/spree/webhooks/deliver_webhook.rb +7 -3
  465. data/app/subscribers/spree/webhook_event_subscriber.rb +3 -10
  466. data/config/initializers/pagy.rb +1 -1
  467. data/config/initializers/typelizer.rb +7 -9
  468. data/config/locales/ar.yml +15 -0
  469. data/config/locales/be.yml +15 -0
  470. data/config/locales/bg.yml +15 -0
  471. data/config/locales/ca.yml +15 -0
  472. data/config/locales/cs.yml +15 -0
  473. data/config/locales/da.yml +15 -0
  474. data/config/locales/de-CH.yml +11 -0
  475. data/config/locales/de.yml +15 -0
  476. data/config/locales/el.yml +15 -0
  477. data/config/locales/en.yml +5 -40
  478. data/config/locales/es-CL.yml +10 -0
  479. data/config/locales/es-EC.yml +11 -0
  480. data/config/locales/es-MX.yml +12 -0
  481. data/config/locales/es.yml +15 -0
  482. data/config/locales/et.yml +15 -0
  483. data/config/locales/fa.yml +15 -0
  484. data/config/locales/fi.yml +15 -0
  485. data/config/locales/fr.yml +15 -0
  486. data/config/locales/hu.yml +15 -0
  487. data/config/locales/id.yml +15 -0
  488. data/config/locales/it.yml +15 -0
  489. data/config/locales/ja.yml +15 -0
  490. data/config/locales/km.yml +15 -0
  491. data/config/locales/ko.yml +15 -0
  492. data/config/locales/ku.yml +15 -0
  493. data/config/locales/lt.yml +15 -0
  494. data/config/locales/lv.yml +15 -0
  495. data/config/locales/nb.yml +15 -0
  496. data/config/locales/ne.yml +15 -0
  497. data/config/locales/nl.yml +15 -0
  498. data/config/locales/pl.yml +15 -0
  499. data/config/locales/pt-BR.yml +13 -0
  500. data/config/locales/pt.yml +15 -0
  501. data/config/locales/ro.yml +15 -0
  502. data/config/locales/ru.yml +15 -0
  503. data/config/locales/sk.yml +15 -0
  504. data/config/locales/sl-SI.yml +15 -0
  505. data/config/locales/sv.yml +15 -0
  506. data/config/locales/th.yml +15 -0
  507. data/config/locales/tr.yml +15 -0
  508. data/config/locales/uk.yml +15 -0
  509. data/config/locales/vi.yml +15 -0
  510. data/config/locales/zh-CN.yml +15 -0
  511. data/config/locales/zh-TW.yml +15 -0
  512. data/config/routes.rb +54 -102
  513. data/lib/spree/api/configuration.rb +5 -0
  514. data/lib/spree/api/dependencies.rb +54 -274
  515. data/lib/spree/api/middleware/request_size_limit.rb +24 -3
  516. data/lib/spree/api/openapi/filter_documentation.rb +136 -0
  517. data/lib/spree/api/openapi/schema_helper.rb +127 -81
  518. data/lib/spree/api/preference_families.rb +46 -0
  519. data/lib/spree/api/preference_types.rb +138 -0
  520. data/lib/spree/api/typelizer_generation.rb +39 -0
  521. data/lib/spree/api/webhook_event_types.rb +140 -0
  522. data/lib/spree/api.rb +0 -2
  523. data/lib/tasks/filters.rake +12 -0
  524. data/lib/typelizer/open_enums.rb +10 -0
  525. metadata +125 -40
  526. data/app/controllers/concerns/spree/api/v3/address_params.rb +0 -17
  527. data/app/controllers/concerns/spree/api/v3/direct_uploads.rb +0 -35
  528. data/app/controllers/spree/api/v3/admin/direct_uploads_controller.rb +0 -54
  529. data/app/controllers/spree/api/v3/seller/direct_uploads_controller.rb +0 -21
  530. data/config/i18n-tasks.yml +0 -40
  531. data/config/initializers/alba.rb +0 -5
@@ -7,7 +7,8 @@ module Spree
7
7
  typelize email: :string, first_name: [:string, nullable: true], last_name: [:string, nullable: true],
8
8
  full_name: :string,
9
9
  phone: [:string, nullable: true], accepts_email_marketing: :boolean,
10
- available_store_credit_total: :string, display_available_store_credit_total: :string,
10
+ available_store_credit_total: :string,
11
+ display_available_store_credit_total: display_money_type(:display_available_store_credit_total, nullable: false),
11
12
  default_billing_address: { nullable: true }, default_shipping_address: { nullable: true },
12
13
  newsletter_subscriber: { nullable: true },
13
14
  email_marketing_consent_updated_at: [:string, nullable: true]
@@ -28,7 +29,7 @@ module Spree
28
29
  attribute :available_store_credit_total do |user, params|
29
30
  store = params&.dig(:store) || Spree::Current.store
30
31
  currency = params&.dig(:currency) || Spree::Current.currency || store&.default_currency
31
- user.total_available_store_credit(currency, store).to_s
32
+ Spree::Money::Rounding.format(user.total_available_store_credit(currency, store), currency)
32
33
  end
33
34
 
34
35
  attribute :display_available_store_credit_total do |user, params|
@@ -3,29 +3,22 @@ module Spree
3
3
  module V3
4
4
  class DeliveryRateSerializer < BaseSerializer
5
5
  typelize name: :string, selected: :boolean, delivery_method_id: :string,
6
- cost: :string, display_cost: :string,
7
- total: :string, display_total: :string,
8
- additional_tax_total: :string, display_additional_tax_total: :string,
9
- included_tax_total: :string, display_included_tax_total: :string,
10
- tax_total: :string, display_tax_total: :string,
11
6
  carrier: [:string, nullable: true],
12
7
  service_level: [:string, nullable: true],
13
8
  estimated_delivery_date: [:string, nullable: true],
14
9
  unpriced: :boolean,
15
10
  freight_summary: [:FreightSummary, nullable: true]
16
11
 
17
- attribute :delivery_method_id do |deliver_rate|
18
- deliver_rate.delivery_method&.prefixed_id
19
- end
12
+ prefixed_id_attributes :delivery_method
20
13
 
21
14
  # Carrier, service level and delivery date come from the rate provider
22
15
  # and are what the customer chooses between; nil on calculator-priced
23
16
  # methods. Provider metadata stays admin-only.
24
- attributes :name, :selected,
25
- :cost, :total,
26
- :additional_tax_total, :included_tax_total,
27
- :tax_total,
28
- :carrier, :service_level, :estimated_delivery_date,
17
+ attributes :name, :selected
18
+
19
+ money_attributes :cost, :total, :additional_tax_total, :included_tax_total, :tax_total
20
+
21
+ attributes :carrier, :service_level, :estimated_delivery_date,
29
22
  :unpriced
30
23
 
31
24
  # What the shipment looks like to a freight forwarder — cartons,
@@ -35,25 +28,8 @@ module Spree
35
28
  # froze it here when it quoted.
36
29
  one :freight_summary, resource: proc { Spree.api.freight_summary_serializer }
37
30
 
38
- attribute :display_cost do |deliver_rate|
39
- deliver_rate.display_cost.to_s
40
- end
41
-
42
- attribute :display_total do |deliver_rate|
43
- deliver_rate.display_total.to_s
44
- end
45
-
46
- attribute :display_additional_tax_total do |deliver_rate|
47
- deliver_rate.display_additional_tax_total.to_s
48
- end
49
-
50
- attribute :display_included_tax_total do |deliver_rate|
51
- deliver_rate.display_included_tax_total.to_s
52
- end
53
-
54
- attribute :display_tax_total do |deliver_rate|
55
- deliver_rate.display_tax_total.to_s
56
- end
31
+ money_attributes :display_cost, :display_total, :display_additional_tax_total,
32
+ :display_included_tax_total, :display_tax_total
57
33
 
58
34
  one :delivery_method, resource: proc { Spree.api.delivery_method_serializer }
59
35
  end
@@ -2,7 +2,7 @@ module Spree
2
2
  module Api
3
3
  module V3
4
4
  class DeliveryZoneMemberSerializer < BaseSerializer
5
- typelize member_type: [:string, enum: Spree::DeliveryZoneMember::MEMBER_TYPES], country_code: [:string, nullable: true],
5
+ typelize member_type: [:string, enum: Spree::DeliveryZoneMember::MEMBER_TYPES], country_code: [:string, nullable: true, enum: Spree::IsoData.country_codes, enum_type_name: 'CountryCode'],
6
6
  country_name: [:string, nullable: true],
7
7
  state_code: [:string, nullable: true], state_name: [:string, nullable: true],
8
8
  postal_code_prefix: [:string, nullable: true],
@@ -8,9 +8,7 @@ module Spree
8
8
  filename: [:string, nullable: true],
9
9
  content_type: [:string, nullable: true]
10
10
 
11
- attribute :variant_id do |digital_asset|
12
- digital_asset.variant&.prefixed_id
13
- end
11
+ prefixed_id_attributes :variant
14
12
 
15
13
  attribute :filename do |digital_asset|
16
14
  digital_asset.filename&.to_s
@@ -16,17 +16,11 @@ module Spree
16
16
  digital_link.expires_at&.iso8601
17
17
  end
18
18
 
19
- attribute :authorizable do |digital_link|
20
- digital_link.authorizable?
21
- end
19
+ attribute :authorizable, &:authorizable?
22
20
 
23
- attribute :expired do |digital_link|
24
- digital_link.expired?
25
- end
21
+ attribute :expired, &:expired?
26
22
 
27
- attribute :access_limit_exceeded do |digital_link|
28
- digital_link.access_limit_exceeded?
29
- end
23
+ attribute :access_limit_exceeded, &:access_limit_exceeded?
30
24
  end
31
25
  end
32
26
  end
@@ -7,27 +7,19 @@ module Spree
7
7
  class DiscountSerializer < BaseSerializer
8
8
  typelize label: :string, kind: [:string, enum: Spree::Discount::KINDS], code: [:string, nullable: true],
9
9
  value: [:string, nullable: true], value_type: [:string, nullable: true],
10
- amount: [:string, nullable: true], display_amount: [:string, nullable: true],
11
10
  promotion_id: [:string, nullable: true], line_item_id: [:string, nullable: true],
12
11
  fulfillment_id: [:string, nullable: true]
13
12
 
14
13
  attributes :label, :kind, :code, :value_type
15
14
 
15
+ # A percent discount carries a rate; a flat one an amount.
16
16
  attribute :value do |record|
17
- record.value&.to_s
18
- end
19
-
20
- attribute :promotion_id do |record|
21
- record.promotion&.prefixed_id
22
- end
17
+ next Spree::Money::Rounding.format_decimal(record.value) if record.value_type == 'percent'
23
18
 
24
- attribute :line_item_id do |record|
25
- record.line_item&.prefixed_id
19
+ Spree::Money::Rounding.format(record.value, record.currency) unless params[:hide_prices]
26
20
  end
27
21
 
28
- attribute :fulfillment_id do |record|
29
- record.fulfillment&.prefixed_id
30
- end
22
+ prefixed_id_attributes :promotion, :line_item, :fulfillment
31
23
 
32
24
  money_attributes :amount, :display_amount
33
25
  end
@@ -7,9 +7,6 @@ module Spree
7
7
  typelize quantity: :number,
8
8
  received_quantity: :number,
9
9
  resellable: :boolean,
10
- original_price: :string,
11
- new_variant_price: :string,
12
- price_difference: :string,
13
10
  original_variant_id: [:string, nullable: true],
14
11
  new_variant_id: [:string, nullable: true],
15
12
  line_item_id: [:string, nullable: true],
@@ -17,33 +14,12 @@ module Spree
17
14
 
18
15
  attributes :quantity, :received_quantity, :resellable
19
16
 
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
17
+ # What the customer paid for the units coming back, after discounts
18
+ # and with their tax.
19
+ money_attributes :original_price
20
+ # The replacement at the same discount, with its own tax.
21
+ money_attributes :new_variant_price, :price_difference, :original_tax_total, :new_tax_total
22
+ prefixed_id_attributes :original_variant, :new_variant, :line_item, :fulfillment_item
47
23
 
48
24
  one :original_variant, resource: proc { Spree.api.variant_serializer }, if: proc { expand?('original_variant') }
49
25
  one :new_variant, resource: proc { Spree.api.variant_serializer }, if: proc { expand?('new_variant') }
@@ -9,8 +9,6 @@ module Spree
9
9
  status: [:string, enum: Spree::Exchange.statuses, enum_type_name: 'ExchangeStatus'],
10
10
  order_id: [:string, nullable: true],
11
11
  reason_id: [:string, nullable: true],
12
- price_difference: :string,
13
- display_price_difference: :string,
14
12
  approved_at: [:string, nullable: true],
15
13
  received_at: [:string, nullable: true],
16
14
  fulfilled_at: [:string, nullable: true],
@@ -18,21 +16,9 @@ module Spree
18
16
 
19
17
  attributes :number, :status
20
18
 
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
19
+ prefixed_id_attributes :order, :reason
28
20
 
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
21
+ money_attributes :price_difference, :display_price_difference
36
22
 
37
23
  attribute :approved_at do |exchange|
38
24
  exchange.approved_at&.iso8601
@@ -18,9 +18,7 @@ module Spree
18
18
  Spree::Export.api_type_for(export.type)
19
19
  end
20
20
 
21
- attribute :user_id do |export|
22
- export.user&.prefixed_id
23
- end
21
+ prefixed_id_attributes :user
24
22
  end
25
23
  end
26
24
  end
@@ -5,20 +5,12 @@ module Spree
5
5
  # Order-level when both adjustable IDs are null.
6
6
  class FeeSerializer < BaseSerializer
7
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],
8
+ kind: [:string, enum: Spree::Fee::KINDS, enum_type_name: 'FeeKind', 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.'],
11
9
  line_item_id: [:string, nullable: true], fulfillment_id: [:string, nullable: true]
12
10
 
13
11
  attributes :label, :kind
14
12
 
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
13
+ prefixed_id_attributes :line_item, :fulfillment
22
14
 
23
15
  money_attributes :amount, :display_amount
24
16
  end
@@ -0,0 +1,28 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ # A file accepted by an upload endpoint ({Spree::FileUpload}).
5
+ #
6
+ # `signed_id` is opaque: clients pass it back unchanged to the endpoint
7
+ # that uses the file and never parse it. It stops being attachable at
8
+ # `expires_at`. `upload` is where a presigned upload sends its bytes, and
9
+ # null once the file is already stored.
10
+ class FileUploadSerializer < BaseSerializer
11
+ # A value object, not a record — it has no id of its own.
12
+ _attributes.delete(:id)
13
+
14
+ typelize signed_id: :string,
15
+ filename: :string,
16
+ content_type: :string,
17
+ byte_size: :number,
18
+ visibility: [:string, enum: Spree::FileUpload::VISIBILITIES],
19
+ expires_at: :string,
20
+ upload: [:FileUploadTarget, nullable: true]
21
+
22
+ attributes :signed_id, :filename, :content_type, :byte_size, :visibility, expires_at: :iso8601
23
+
24
+ one :upload_target, key: :upload, resource: proc { Spree.api.file_upload_target_serializer }
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,17 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ # Where a presigned upload sends its bytes. Clients send them with
5
+ # `method` to `url` carrying exactly `headers`, and treat all three as
6
+ # opaque: the storage service decides them.
7
+ class FileUploadTargetSerializer < BaseSerializer
8
+ _attributes.delete(:id)
9
+
10
+ typelize method: :string, url: :string, headers: 'Record<string, string>'
11
+
12
+ attribute :method, &:http_method
13
+ attributes :url, :headers
14
+ end
15
+ end
16
+ end
17
+ end
@@ -2,18 +2,11 @@ module Spree
2
2
  module Api
3
3
  module V3
4
4
  class FulfillmentSerializer < BaseSerializer
5
- typelize number: :string, status: [:string, enum: Spree::Fulfillment.statuses, enum_type_name: 'FulfillmentStatus'],
5
+ typelize number: :string,
6
+ status: [:string, enum: Spree::Fulfillment.statuses, enum_type_name: 'FulfillmentStatus'],
6
7
  fulfillment_type: [:string, enum: %w[shipping digital pickup pickup_point]],
7
- tracking: [:string, nullable: true],
8
- tracking_url: [:string, nullable: true], fulfilled_at: [:string, nullable: true],
9
- delivered_at: [:string, nullable: true],
10
- cost: [:string, nullable: true], display_cost: [:string, nullable: true],
11
- unpriced: :boolean,
12
- total: [:string, nullable: true], display_total: [:string, nullable: true],
13
- discount_total: [:string, nullable: true], display_discount_total: [:string, nullable: true],
14
- additional_tax_total: [:string, nullable: true], display_additional_tax_total: [:string, nullable: true],
15
- included_tax_total: [:string, nullable: true], display_included_tax_total: [:string, nullable: true],
16
- tax_total: [:string, nullable: true], display_tax_total: [:string, nullable: true],
8
+ tracking: [:string, nullable: true], tracking_url: [:string, nullable: true],
9
+ fulfilled_at: [:string, nullable: true], delivered_at: [:string, nullable: true], unpriced: :boolean,
17
10
  items: 'Array<{ item_id: string; variant_id: string; quantity: number }>',
18
11
  pickup_point_data: ['Record<string, unknown>', nullable: true],
19
12
  selected_delivery_rate_id: [:string, nullable: true]
@@ -4,24 +4,20 @@ module Spree
4
4
  module Api
5
5
  module V3
6
6
  class GiftCardBatchSerializer < BaseSerializer
7
- typelize codes_count: :number, amount: [:string, nullable: true], currency: [:string, nullable: true],
7
+ typelize codes_count: :number, currency: [:string, nullable: true, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'],
8
8
  prefix: [:string, nullable: true], expires_at: [:string, nullable: true],
9
9
  created_by_id: [:string, nullable: true]
10
10
 
11
11
  attributes :codes_count, :currency, :prefix,
12
12
  created_at: :iso8601, updated_at: :iso8601
13
13
 
14
- attribute :amount do |batch|
15
- batch.amount&.to_s
16
- end
14
+ money_attributes :amount
17
15
 
18
16
  attribute :expires_at do |batch|
19
17
  batch.expires_at&.iso8601
20
18
  end
21
19
 
22
- attribute :created_by_id do |batch|
23
- batch.created_by&.prefixed_id
24
- end
20
+ prefixed_id_attributes :created_by
25
21
  end
26
22
  end
27
23
  end
@@ -4,17 +4,11 @@ module Spree
4
4
  class GiftCardSerializer < BaseSerializer
5
5
  typelize code: :string,
6
6
  status: [:string, enum: Spree::GiftCard::DISPLAY_STATUSES, enum_type_name: 'GiftCardStatus'],
7
- amount: [:string, nullable: true],
8
- amount_used: [:string, nullable: true],
9
- amount_authorized: [:string, nullable: true],
10
- amount_remaining: [:string, nullable: true],
11
- display_amount: [:string, nullable: true],
12
- display_amount_used: [:string, nullable: true],
13
- display_amount_remaining: [:string, nullable: true],
14
- currency: :string,
15
- expires_at: [:string, nullable: true],
16
- redeemed_at: [:string, nullable: true],
17
- expired: :boolean,
7
+ display_amount: display_money_type(:display_amount),
8
+ display_amount_used: display_money_type(:display_amount_used),
9
+ display_amount_remaining: display_money_type(:display_amount_remaining),
10
+ currency: [:string, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'],
11
+ expires_at: [:string, nullable: true], redeemed_at: [:string, nullable: true], expired: :boolean,
18
12
  active: :boolean
19
13
 
20
14
  # A bearer credential: masked when the order is shown to someone other
@@ -53,13 +47,9 @@ module Spree
53
47
  gift_card.redeemed_at&.iso8601
54
48
  end
55
49
 
56
- attribute :expired do |gift_card|
57
- gift_card.expired?
58
- end
50
+ attribute :expired, &:expired?
59
51
 
60
- attribute :active do |gift_card|
61
- gift_card.active?
62
- end
52
+ attribute :active, &:active?
63
53
 
64
54
  end
65
55
  end
@@ -11,18 +11,14 @@ module Spree
11
11
  attributes :row_number, :status, :validation_errors,
12
12
  created_at: :iso8601, updated_at: :iso8601
13
13
 
14
- attribute :import_id do |row|
15
- row.import&.prefixed_id
16
- end
14
+ prefixed_id_attributes :import
17
15
 
18
16
  # `"product"` / `"variant"`, not the polymorphic class name.
19
17
  attribute :item_type do |row|
20
18
  Spree::Base.polymorphic_api_type(row.item_type)
21
19
  end
22
20
 
23
- attribute :item_id do |row|
24
- row.item&.prefixed_id
25
- end
21
+ prefixed_id_attributes :item
26
22
  end
27
23
  end
28
24
  end
@@ -6,7 +6,6 @@ module Spree
6
6
  class ImportSerializer < BaseSerializer
7
7
  typelize number: :string,
8
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'],
9
- owner_type: [:string, nullable: true], owner_id: [:string, nullable: true],
10
9
  store_id: [:string, nullable: true], seller_id: [:string, nullable: true],
11
10
  user_id: [:string, nullable: true], rows_count: :number
12
11
 
@@ -21,34 +20,12 @@ module Spree
21
20
  Spree::Import.api_type_for(import.type)
22
21
  end
23
22
 
24
- attribute :status do |import|
25
- import.status.to_s
26
- end
27
-
23
+ attributes status: :string
28
24
  # Which marketplace this import belongs to, and — when a seller ran it —
29
25
  # 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
26
+ prefixed_id_attributes :store, :seller
37
27
 
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.
41
- attribute :owner_type do |import|
42
- Spree::Base.polymorphic_api_type(import.seller_id.present? ? 'Spree::Seller' : 'Spree::Store')
43
- end
44
-
45
- attribute :owner_id do |import|
46
- (import.seller || import.store)&.prefixed_id
47
- end
48
-
49
- attribute :user_id do |import|
50
- import.user&.prefixed_id
51
- end
28
+ prefixed_id_attributes :user
52
29
  end
53
30
  end
54
31
  end
@@ -14,10 +14,7 @@ module Spree
14
14
  attributes :email,
15
15
  created_at: :iso8601, updated_at: :iso8601
16
16
 
17
- attribute :status do |invitation|
18
- invitation.status.to_s
19
- end
20
-
17
+ attributes status: :string
21
18
  # `"store"` / `"admin_user"`, not the polymorphic class names.
22
19
  attribute :resource_type do |invitation|
23
20
  Spree::Base.polymorphic_api_type(invitation.resource_type)
@@ -31,21 +28,7 @@ module Spree
31
28
  Spree::Base.polymorphic_api_type(invitation.invitee_type)
32
29
  end
33
30
 
34
- attribute :resource_id do |invitation|
35
- invitation.resource&.prefixed_id
36
- end
37
-
38
- attribute :inviter_id do |invitation|
39
- invitation.inviter&.prefixed_id
40
- end
41
-
42
- attribute :invitee_id do |invitation|
43
- invitation.invitee&.prefixed_id
44
- end
45
-
46
- attribute :role_id do |invitation|
47
- invitation.role&.prefixed_id
48
- end
31
+ prefixed_id_attributes :resource, :inviter, :invitee, :role
49
32
 
50
33
  attribute :expires_at do |invitation|
51
34
  invitation.expires_at&.iso8601
@@ -2,32 +2,18 @@ module Spree
2
2
  module Api
3
3
  module V3
4
4
  class LineItemSerializer < BaseSerializer
5
- typelize variant_id: :string, quantity: :number, currency: :string,
6
- name: :string, slug: :string, options_text: :string,
7
- price: [:string, nullable: true], display_price: [:string, nullable: true],
8
- total: [:string, nullable: true], display_total: [:string, nullable: true],
9
- adjustment_total: [:string, nullable: true], display_adjustment_total: [:string, nullable: true],
10
- additional_tax_total: [:string, nullable: true], display_additional_tax_total: [:string, nullable: true],
11
- included_tax_total: [:string, nullable: true], display_included_tax_total: [:string, nullable: true],
12
- discount_total: [:string, nullable: true], display_discount_total: [:string, nullable: true],
13
- pre_tax_amount: [:string, nullable: true], display_pre_tax_amount: [:string, nullable: true],
14
- discounted_amount: [:string, nullable: true], display_discounted_amount: [:string, nullable: true],
15
- compare_at_amount: [:string, nullable: true], display_compare_at_amount: [:string, nullable: true],
16
- thumbnail_url: [:string, nullable: true],
17
- preorder: :boolean, preorder_ships_at: [:string, nullable: true],
18
- seller_id: [:string, nullable: true]
5
+ typelize variant_id: :string, quantity: :number, currency: [:string, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'], name: :string, slug: :string,
6
+ options_text: :string, compare_at_amount: [:string, nullable: true, comment: 'The compare-at price times quantity, or null when the variant has none.'],
7
+ thumbnail_url: [:string, nullable: true], preorder: :boolean,
8
+ preorder_ships_at: [:string, nullable: true], seller_id: [:string, nullable: true]
19
9
 
20
- attribute :variant_id do |line_item|
21
- line_item.variant&.prefixed_id
22
- end
10
+ prefixed_id_attributes :variant
23
11
 
24
12
  # Which seller this line was bought from, snapshotted when it was
25
13
  # added — nil is the operator's own first-party item. Always present
26
14
  # so a storefront can group a multi-seller cart without paying for the
27
15
  # expand; `?expand=seller` adds the public profile.
28
- attribute :seller_id do |line_item|
29
- line_item.seller&.prefixed_id
30
- end
16
+ prefixed_id_attributes :seller
31
17
 
32
18
  # True when the line item's variant is currently a pre-order, so the
33
19
  # cart/checkout can flag it as shipping later.
@@ -44,21 +30,31 @@ module Spree
44
30
 
45
31
  # Nulled for gated (prices_hidden) guests so the cart's line items can't
46
32
  # leak the prices that product/variant serializers already withhold.
47
- money_attributes :price, :display_price, :total, :display_total,
33
+ money_attributes :price, :display_price, unit_price: true, descriptions: { price: 'The price of one unit.' }
34
+ money_attributes :total, :display_total,
48
35
  :adjustment_total, :display_adjustment_total,
49
36
  :additional_tax_total, :display_additional_tax_total,
50
37
  :included_tax_total, :display_included_tax_total,
51
38
  :discount_total, :display_discount_total,
52
39
  :pre_tax_amount, :display_pre_tax_amount,
53
40
  :discounted_amount, :display_discounted_amount,
54
- :display_compare_at_amount
41
+ :display_compare_at_amount,
42
+ descriptions: {
43
+ total: 'What this line costs: price times quantity, with its discounts, fees and added tax.',
44
+ adjustment_total: "This line's discounts, fees and added tax together.",
45
+ additional_tax_total: 'Tax added on top of the price.',
46
+ included_tax_total: 'Tax already included in the price.',
47
+ discount_total: 'What promotions take off this line, as a negative amount.',
48
+ pre_tax_amount: 'This line after discounts, without tax.',
49
+ discounted_amount: 'Price times quantity, after discounts.'
50
+ }
55
51
 
56
52
  # Return compare_at_amount as string, nil if zero
57
53
  attribute :compare_at_amount do |line_item|
58
54
  next nil if params[:hide_prices]
59
55
 
60
56
  amount = line_item.compare_at_amount
61
- amount.present? && amount.positive? ? amount.to_s : nil
57
+ amount.present? && amount.positive? ? Spree::Money::Rounding.format(amount, line_item.currency, unit_price: true) : nil
62
58
  end
63
59
 
64
60
  # Thumbnail URL for line item (variant thumbnail or product thumbnail)
@@ -7,7 +7,9 @@ module Spree
7
7
  include Alba::Resource
8
8
  include Typelizer::DSL
9
9
 
10
- typelize code: :string, name: :string, default: :boolean, rtl: :boolean
10
+ typelize code: [:string, enum: Spree::Locales::ALL, enum_type_name: 'LocaleCode'],
11
+ name: [:string, deprecated: 'Name the locale from `code` with `Intl.DisplayNames`. Removed in 6.1.'],
12
+ default: :boolean, rtl: :boolean
11
13
 
12
14
  attributes :code, :name
13
15
 
@@ -2,11 +2,11 @@ module Spree
2
2
  module Api
3
3
  module V3
4
4
  class MarketSerializer < BaseSerializer
5
- typelize name: :string, currency: :string,
6
- default_locale: :string,
7
- supported_locales: [:string, multi: true],
8
- country_codes: [:string, multi: true],
9
- country_isos: [:string, multi: true],
5
+ typelize name: :string, currency: [:string, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'],
6
+ default_locale: [:string, enum: Spree::Locales::ALL, enum_type_name: 'LocaleCode'],
7
+ supported_locales: [:string, multi: true, enum: Spree::Locales::ALL, enum_type_name: 'LocaleCode'],
8
+ country_codes: [:string, multi: true, enum: Spree::IsoData.country_codes, enum_type_name: 'CountryCode'],
9
+ country_isos: [:string, multi: true, deprecated: 'Use `country_codes`. Removed in 6.1.'],
10
10
  tax_inclusive: :boolean,
11
11
  default: :boolean
12
12
 
@@ -11,9 +11,7 @@ module Spree
11
11
  viewable_id: :string, position: [:number, nullable: true],
12
12
  alt: [:string, nullable: true]
13
13
 
14
- attribute :viewable_id do |asset|
15
- asset.viewable&.prefixed_id
16
- end
14
+ prefixed_id_attributes :viewable
17
15
 
18
16
  # `"product"` / `"variant"`, not the polymorphic class name.
19
17
  attribute :viewable_type do |asset|