spree_api 6.0.0.beta3 → 6.0.0.rc1

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 (342) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +4 -31
  3. data/app/controllers/concerns/spree/api/v3/admin/email_template_lookup.rb +139 -0
  4. data/app/controllers/concerns/spree/api/v3/admin/store_context.rb +1 -1
  5. data/app/controllers/concerns/spree/api/v3/admin/subclassed_resource.rb +1 -1
  6. data/app/controllers/concerns/spree/api/v3/cart_resolvable.rb +7 -0
  7. data/app/controllers/concerns/spree/api/v3/channel_resolution.rb +2 -2
  8. data/app/controllers/concerns/spree/api/v3/current_password_confirmation.rb +1 -1
  9. data/app/controllers/concerns/spree/api/v3/error_handler.rb +7 -2
  10. data/app/controllers/concerns/spree/api/v3/http_caching.rb +44 -11
  11. data/app/controllers/concerns/spree/api/v3/idempotent.rb +20 -5
  12. data/app/controllers/concerns/spree/api/v3/items_payload.rb +1 -1
  13. data/app/controllers/concerns/spree/api/v3/order_lock.rb +2 -2
  14. data/app/controllers/concerns/spree/api/v3/orders/delivery_actions.rb +1 -5
  15. data/app/controllers/concerns/spree/api/v3/orders/fulfillment_actions.rb +2 -10
  16. data/app/controllers/concerns/spree/api/v3/orders/post_sale_actions.rb +2 -10
  17. data/app/controllers/concerns/spree/api/v3/orders/shipping_label_actions.rb +4 -8
  18. data/app/controllers/concerns/spree/api/v3/permission_serialization.rb +9 -1
  19. data/app/controllers/concerns/spree/api/v3/seller/seller_context.rb +1 -1
  20. data/app/controllers/concerns/spree/api/v3/store/storefront_products.rb +5 -4
  21. data/app/controllers/concerns/spree/api/v3/storefront_gating.rb +11 -5
  22. data/app/controllers/spree/api/v3/admin/admin_users_controller.rb +0 -5
  23. data/app/controllers/spree/api/v3/admin/api_keys_controller.rb +1 -1
  24. data/app/controllers/spree/api/v3/admin/catalogs/order_minimums_controller.rb +0 -6
  25. data/app/controllers/spree/api/v3/admin/catalogs/quantity_rules_controller.rb +0 -4
  26. data/app/controllers/spree/api/v3/admin/catalogs_controller.rb +1 -1
  27. data/app/controllers/spree/api/v3/admin/channels_controller.rb +0 -4
  28. data/app/controllers/spree/api/v3/admin/collections/products_controller.rb +1 -2
  29. data/app/controllers/spree/api/v3/admin/commission_rates_controller.rb +2 -2
  30. data/app/controllers/spree/api/v3/admin/companies/addresses_controller.rb +0 -4
  31. data/app/controllers/spree/api/v3/admin/companies/invitations_controller.rb +1 -5
  32. data/app/controllers/spree/api/v3/admin/companies/memberships_controller.rb +0 -4
  33. data/app/controllers/spree/api/v3/admin/companies/tax_exemption_certificates_controller.rb +1 -9
  34. data/app/controllers/spree/api/v3/admin/companies/tax_identifiers_controller.rb +0 -4
  35. data/app/controllers/spree/api/v3/admin/companies_controller.rb +0 -4
  36. data/app/controllers/spree/api/v3/admin/countries_controller.rb +1 -1
  37. data/app/controllers/spree/api/v3/admin/coupon_codes_controller.rb +0 -4
  38. data/app/controllers/spree/api/v3/admin/custom_field_definitions_controller.rb +9 -1
  39. data/app/controllers/spree/api/v3/admin/custom_fields_controller.rb +0 -4
  40. data/app/controllers/spree/api/v3/admin/customer_groups_controller.rb +0 -4
  41. data/app/controllers/spree/api/v3/admin/customers/addresses_controller.rb +0 -4
  42. data/app/controllers/spree/api/v3/admin/customers/credit_cards_controller.rb +0 -4
  43. data/app/controllers/spree/api/v3/admin/customers/store_credits_controller.rb +0 -4
  44. data/app/controllers/spree/api/v3/admin/customers_controller.rb +2 -2
  45. data/app/controllers/spree/api/v3/admin/delivery_methods/rules_controller.rb +1 -1
  46. data/app/controllers/spree/api/v3/admin/delivery_methods_controller.rb +3 -5
  47. data/app/controllers/spree/api/v3/admin/delivery_profiles_controller.rb +1 -6
  48. data/app/controllers/spree/api/v3/admin/email_templates/drafts_controller.rb +40 -0
  49. data/app/controllers/spree/api/v3/admin/email_templates/previews_controller.rb +30 -0
  50. data/app/controllers/spree/api/v3/admin/email_templates/publications_controller.rb +30 -0
  51. data/app/controllers/spree/api/v3/admin/email_templates/restorations_controller.rb +34 -0
  52. data/app/controllers/spree/api/v3/admin/email_templates/revisions_controller.rb +35 -0
  53. data/app/controllers/spree/api/v3/admin/email_templates/sample_records_controller.rb +33 -0
  54. data/app/controllers/spree/api/v3/admin/email_templates/test_emails_controller.rb +40 -0
  55. data/app/controllers/spree/api/v3/admin/email_templates_controller.rb +46 -0
  56. data/app/controllers/spree/api/v3/admin/imports_controller.rb +1 -2
  57. data/app/controllers/spree/api/v3/admin/invitations_controller.rb +0 -7
  58. data/app/controllers/spree/api/v3/admin/me_controller.rb +1 -1
  59. data/app/controllers/spree/api/v3/admin/media_library_controller.rb +5 -5
  60. data/app/controllers/spree/api/v3/admin/order_routing_rules_controller.rb +0 -4
  61. data/app/controllers/spree/api/v3/admin/orders/deliveries_controller.rb +1 -5
  62. data/app/controllers/spree/api/v3/admin/orders/discount_codes_controller.rb +1 -1
  63. data/app/controllers/spree/api/v3/admin/orders/discounts_controller.rb +1 -1
  64. data/app/controllers/spree/api/v3/admin/orders/fulfillments_controller.rb +18 -16
  65. data/app/controllers/spree/api/v3/admin/orders/gift_cards_controller.rb +3 -3
  66. data/app/controllers/spree/api/v3/admin/orders/labels_controller.rb +2 -10
  67. data/app/controllers/spree/api/v3/admin/orders/payments_controller.rb +2 -14
  68. data/app/controllers/spree/api/v3/admin/orders/refunds_controller.rb +1 -5
  69. data/app/controllers/spree/api/v3/admin/orders_controller.rb +3 -3
  70. data/app/controllers/spree/api/v3/admin/password_resets_controller.rb +9 -7
  71. data/app/controllers/spree/api/v3/admin/price_lists_controller.rb +6 -53
  72. data/app/controllers/spree/api/v3/admin/prices_controller.rb +0 -4
  73. data/app/controllers/spree/api/v3/admin/products/digital_assets_controller.rb +2 -6
  74. data/app/controllers/spree/api/v3/admin/products/variants_controller.rb +0 -4
  75. data/app/controllers/spree/api/v3/admin/products_controller.rb +1 -1
  76. data/app/controllers/spree/api/v3/admin/promotion_actions_controller.rb +0 -4
  77. data/app/controllers/spree/api/v3/admin/promotion_rules_controller.rb +0 -4
  78. data/app/controllers/spree/api/v3/admin/purchase_orders_controller.rb +1 -1
  79. data/app/controllers/spree/api/v3/admin/resource_controller.rb +1 -1
  80. data/app/controllers/spree/api/v3/admin/seller_payouts_controller.rb +1 -9
  81. data/app/controllers/spree/api/v3/admin/seller_requirement_submissions_controller.rb +2 -10
  82. data/app/controllers/spree/api/v3/admin/seller_transfers_controller.rb +0 -4
  83. data/app/controllers/spree/api/v3/admin/sellers/invitations_controller.rb +1 -1
  84. data/app/controllers/spree/api/v3/admin/sellers/payouts_controller.rb +1 -1
  85. data/app/controllers/spree/api/v3/admin/sellers_controller.rb +2 -10
  86. data/app/controllers/spree/api/v3/admin/setup_controller.rb +8 -12
  87. data/app/controllers/spree/api/v3/admin/stock_transfers_controller.rb +1 -1
  88. data/app/controllers/spree/api/v3/admin/store_controller.rb +6 -1
  89. data/app/controllers/spree/api/v3/admin/tags_controller.rb +8 -5
  90. data/app/controllers/spree/api/v3/admin/webhook_endpoints_controller.rb +17 -12
  91. data/app/controllers/spree/api/v3/admin/webhook_events_controller.rb +25 -0
  92. data/app/controllers/spree/api/v3/base_controller.rb +10 -0
  93. data/app/controllers/spree/api/v3/resource_controller.rb +44 -1
  94. data/app/controllers/spree/api/v3/seller/auth_controller.rb +2 -2
  95. data/app/controllers/spree/api/v3/seller/countries_controller.rb +1 -1
  96. data/app/controllers/spree/api/v3/seller/exports_controller.rb +3 -3
  97. data/app/controllers/spree/api/v3/seller/invitation_acceptances_controller.rb +3 -3
  98. data/app/controllers/spree/api/v3/seller/invitations_controller.rb +1 -1
  99. data/app/controllers/spree/api/v3/seller/me_controller.rb +1 -1
  100. data/app/controllers/spree/api/v3/seller/orders/labels_controller.rb +1 -1
  101. data/app/controllers/spree/api/v3/seller/password_resets_controller.rb +10 -11
  102. data/app/controllers/spree/api/v3/seller/products_controller.rb +2 -1
  103. data/app/controllers/spree/api/v3/seller/requirement_submissions_controller.rb +1 -1
  104. data/app/controllers/spree/api/v3/seller/team_controller.rb +1 -1
  105. data/app/controllers/spree/api/v3/store/carts/discount_codes_controller.rb +1 -1
  106. data/app/controllers/spree/api/v3/store/carts/fulfillments_controller.rb +3 -11
  107. data/app/controllers/spree/api/v3/store/carts/gift_cards_controller.rb +5 -3
  108. data/app/controllers/spree/api/v3/store/carts/items_controller.rb +6 -2
  109. data/app/controllers/spree/api/v3/store/carts/payment_sessions_controller.rb +1 -1
  110. data/app/controllers/spree/api/v3/store/carts/payments_controller.rb +5 -3
  111. data/app/controllers/spree/api/v3/store/carts/po_documents_controller.rb +2 -2
  112. data/app/controllers/spree/api/v3/store/carts/store_credits_controller.rb +2 -0
  113. data/app/controllers/spree/api/v3/store/carts_controller.rb +9 -6
  114. data/app/controllers/spree/api/v3/store/companies/addresses_controller.rb +0 -4
  115. data/app/controllers/spree/api/v3/store/companies/invitations_controller.rb +1 -5
  116. data/app/controllers/spree/api/v3/store/company_invitations_controller.rb +1 -1
  117. data/app/controllers/spree/api/v3/store/customer/addresses_controller.rb +0 -4
  118. data/app/controllers/spree/api/v3/store/customer/credit_cards_controller.rb +0 -4
  119. data/app/controllers/spree/api/v3/store/customer/data_requests_controller.rb +0 -5
  120. data/app/controllers/spree/api/v3/store/customer/digital_links_controller.rb +0 -4
  121. data/app/controllers/spree/api/v3/store/customer/gift_cards_controller.rb +0 -4
  122. data/app/controllers/spree/api/v3/store/customer/orders_controller.rb +0 -4
  123. data/app/controllers/spree/api/v3/store/customer/password_resets_controller.rb +8 -6
  124. data/app/controllers/spree/api/v3/store/customer/payment_setup_sessions_controller.rb +0 -4
  125. data/app/controllers/spree/api/v3/store/customer/store_credits_controller.rb +0 -5
  126. data/app/controllers/spree/api/v3/store/data_request_downloads_controller.rb +1 -1
  127. data/app/controllers/spree/api/v3/store/delivery_methods_controller.rb +1 -1
  128. data/app/controllers/spree/api/v3/store/newsletter_subscribers_controller.rb +5 -14
  129. data/app/controllers/spree/api/v3/store/orders/claims_controller.rb +1 -5
  130. data/app/controllers/spree/api/v3/store/orders/returns_controller.rb +1 -5
  131. data/app/controllers/spree/api/v3/store/wishlist_items_controller.rb +0 -4
  132. data/app/serializers/spree/api/v3/admin/address_serializer.rb +5 -7
  133. data/app/serializers/spree/api/v3/admin/api_key_serializer.rb +2 -6
  134. data/app/serializers/spree/api/v3/admin/catalog_assignment_serializer.rb +1 -3
  135. data/app/serializers/spree/api/v3/admin/catalog_order_minimum_serializer.rb +1 -7
  136. data/app/serializers/spree/api/v3/admin/catalog_product_term_serializer.rb +1 -3
  137. data/app/serializers/spree/api/v3/admin/catalog_quantity_rule_serializer.rb +1 -3
  138. data/app/serializers/spree/api/v3/admin/channel_serializer.rb +5 -6
  139. data/app/serializers/spree/api/v3/admin/claim_reason_serializer.rb +1 -3
  140. data/app/serializers/spree/api/v3/admin/commission_rule_serializer.rb +1 -3
  141. data/app/serializers/spree/api/v3/admin/coupon_code_serializer.rb +1 -7
  142. data/app/serializers/spree/api/v3/admin/credit_card_serializer.rb +1 -7
  143. data/app/serializers/spree/api/v3/admin/custom_field_definition_serializer.rb +6 -2
  144. data/app/serializers/spree/api/v3/admin/customer_serializer.rb +2 -10
  145. data/app/serializers/spree/api/v3/admin/data_request_serializer.rb +2 -6
  146. data/app/serializers/spree/api/v3/admin/delivery_method_serializer.rb +8 -22
  147. data/app/serializers/spree/api/v3/admin/delivery_origin_group_serializer.rb +1 -3
  148. data/app/serializers/spree/api/v3/admin/delivery_serializer.rb +1 -3
  149. data/app/serializers/spree/api/v3/admin/delivery_zone_serializer.rb +1 -7
  150. data/app/serializers/spree/api/v3/admin/digital_asset_serializer.rb +4 -2
  151. data/app/serializers/spree/api/v3/admin/email_template_draft_serializer.rb +19 -0
  152. data/app/serializers/spree/api/v3/admin/email_template_preview_serializer.rb +38 -0
  153. data/app/serializers/spree/api/v3/admin/email_template_revision_serializer.rb +18 -0
  154. data/app/serializers/spree/api/v3/admin/email_template_sample_record_serializer.rb +13 -0
  155. data/app/serializers/spree/api/v3/admin/email_template_serializer.rb +61 -0
  156. data/app/serializers/spree/api/v3/admin/exchange_serializer.rb +1 -3
  157. data/app/serializers/spree/api/v3/admin/export_serializer.rb +1 -7
  158. data/app/serializers/spree/api/v3/admin/fulfillment_item_serializer.rb +1 -7
  159. data/app/serializers/spree/api/v3/admin/fulfillment_serializer.rb +1 -7
  160. data/app/serializers/spree/api/v3/admin/gift_card_serializer.rb +1 -7
  161. data/app/serializers/spree/api/v3/admin/line_item_serializer.rb +2 -6
  162. data/app/serializers/spree/api/v3/admin/market_serializer.rb +4 -2
  163. data/app/serializers/spree/api/v3/admin/media_serializer.rb +1 -3
  164. data/app/serializers/spree/api/v3/admin/order_cancellation_reason_serializer.rb +1 -3
  165. data/app/serializers/spree/api/v3/admin/order_group_serializer.rb +3 -9
  166. data/app/serializers/spree/api/v3/admin/order_routing_rule_serializer.rb +1 -3
  167. data/app/serializers/spree/api/v3/admin/order_serializer.rb +5 -15
  168. data/app/serializers/spree/api/v3/admin/package_type_serializer.rb +1 -3
  169. data/app/serializers/spree/api/v3/admin/payment_method_serializer.rb +7 -1
  170. data/app/serializers/spree/api/v3/admin/payment_serializer.rb +2 -7
  171. data/app/serializers/spree/api/v3/admin/permission_serializer.rb +4 -4
  172. data/app/serializers/spree/api/v3/admin/price_rule_serializer.rb +1 -3
  173. data/app/serializers/spree/api/v3/admin/product_serializer.rb +2 -10
  174. data/app/serializers/spree/api/v3/admin/product_submission_serializer.rb +2 -10
  175. data/app/serializers/spree/api/v3/admin/product_type_serializer.rb +1 -3
  176. data/app/serializers/spree/api/v3/admin/promotion_action_serializer.rb +1 -3
  177. data/app/serializers/spree/api/v3/admin/promotion_rule_serializer.rb +1 -3
  178. data/app/serializers/spree/api/v3/admin/purchase_order_item_serializer.rb +2 -15
  179. data/app/serializers/spree/api/v3/admin/purchase_order_serializer.rb +2 -15
  180. data/app/serializers/spree/api/v3/admin/refund_reason_serializer.rb +1 -3
  181. data/app/serializers/spree/api/v3/admin/refund_serializer.rb +4 -1
  182. data/app/serializers/spree/api/v3/admin/return_line_item_serializer.rb +1 -0
  183. data/app/serializers/spree/api/v3/admin/return_reason_serializer.rb +1 -3
  184. data/app/serializers/spree/api/v3/admin/return_serializer.rb +3 -11
  185. data/app/serializers/spree/api/v3/admin/saved_report_serializer.rb +1 -3
  186. data/app/serializers/spree/api/v3/admin/seller_payout_serializer.rb +4 -2
  187. data/app/serializers/spree/api/v3/admin/seller_requirement_status_serializer.rb +2 -6
  188. data/app/serializers/spree/api/v3/admin/seller_requirement_submission_serializer.rb +1 -7
  189. data/app/serializers/spree/api/v3/admin/seller_serializer.rb +5 -15
  190. data/app/serializers/spree/api/v3/admin/seller_transfer_serializer.rb +4 -2
  191. data/app/serializers/spree/api/v3/admin/shipping_label_serializer.rb +6 -19
  192. data/app/serializers/spree/api/v3/admin/stock_level_serializer.rb +1 -3
  193. data/app/serializers/spree/api/v3/admin/stock_location_serializer.rb +1 -3
  194. data/app/serializers/spree/api/v3/admin/stock_movement_serializer.rb +1 -3
  195. data/app/serializers/spree/api/v3/admin/stock_receipt_item_serializer.rb +1 -7
  196. data/app/serializers/spree/api/v3/admin/stock_receipt_serializer.rb +1 -3
  197. data/app/serializers/spree/api/v3/admin/stock_reservation_serializer.rb +1 -3
  198. data/app/serializers/spree/api/v3/admin/stock_transfer_item_serializer.rb +1 -3
  199. data/app/serializers/spree/api/v3/admin/store_credit_event_serializer.rb +1 -3
  200. data/app/serializers/spree/api/v3/admin/store_credit_serializer.rb +4 -18
  201. data/app/serializers/spree/api/v3/admin/store_serializer.rb +24 -6
  202. data/app/serializers/spree/api/v3/admin/supplier_serializer.rb +1 -3
  203. data/app/serializers/spree/api/v3/admin/tax_exemption_certificate_serializer.rb +3 -9
  204. data/app/serializers/spree/api/v3/admin/tax_identifier_serializer.rb +1 -3
  205. data/app/serializers/spree/api/v3/admin/tax_line_serializer.rb +5 -1
  206. data/app/serializers/spree/api/v3/admin/tax_rate_serializer.rb +1 -7
  207. data/app/serializers/spree/api/v3/admin/variant_serializer.rb +6 -7
  208. data/app/serializers/spree/api/v3/admin/webhook_delivery_serializer.rb +1 -3
  209. data/app/serializers/spree/api/v3/admin/webhook_event_serializer.rb +23 -0
  210. data/app/serializers/spree/api/v3/applied_promotion_serializer.rb +2 -4
  211. data/app/serializers/spree/api/v3/base_serializer.rb +20 -0
  212. data/app/serializers/spree/api/v3/cart_serializer.rb +17 -45
  213. data/app/serializers/spree/api/v3/category_serializer.rb +5 -15
  214. data/app/serializers/spree/api/v3/claim_line_item_serializer.rb +11 -26
  215. data/app/serializers/spree/api/v3/claim_serializer.rb +2 -15
  216. data/app/serializers/spree/api/v3/collection_serializer.rb +1 -3
  217. data/app/serializers/spree/api/v3/company_serializer.rb +1 -3
  218. data/app/serializers/spree/api/v3/custom_field_serializer.rb +1 -2
  219. data/app/serializers/spree/api/v3/delivery_rate_serializer.rb +3 -23
  220. data/app/serializers/spree/api/v3/digital_asset_serializer.rb +1 -3
  221. data/app/serializers/spree/api/v3/digital_link_serializer.rb +3 -9
  222. data/app/serializers/spree/api/v3/discount_serializer.rb +1 -12
  223. data/app/serializers/spree/api/v3/exchange_line_item_serializer.rb +9 -27
  224. data/app/serializers/spree/api/v3/exchange_serializer.rb +2 -15
  225. data/app/serializers/spree/api/v3/export_serializer.rb +1 -3
  226. data/app/serializers/spree/api/v3/fee_serializer.rb +2 -10
  227. data/app/serializers/spree/api/v3/fulfillment_serializer.rb +4 -11
  228. data/app/serializers/spree/api/v3/gift_card_batch_serializer.rb +1 -3
  229. data/app/serializers/spree/api/v3/gift_card_serializer.rb +5 -17
  230. data/app/serializers/spree/api/v3/import_row_serializer.rb +2 -6
  231. data/app/serializers/spree/api/v3/import_serializer.rb +3 -14
  232. data/app/serializers/spree/api/v3/invitation_serializer.rb +2 -19
  233. data/app/serializers/spree/api/v3/line_item_serializer.rb +6 -20
  234. data/app/serializers/spree/api/v3/media_event_serializer.rb +1 -3
  235. data/app/serializers/spree/api/v3/media_serializer.rb +1 -3
  236. data/app/serializers/spree/api/v3/newsletter_subscriber_request_event_serializer.rb +35 -0
  237. data/app/serializers/spree/api/v3/newsletter_subscriber_serializer.rb +2 -6
  238. data/app/serializers/spree/api/v3/option_value_serializer.rb +1 -3
  239. data/app/serializers/spree/api/v3/order_group_serializer.rb +2 -23
  240. data/app/serializers/spree/api/v3/order_serializer.rb +12 -38
  241. data/app/serializers/spree/api/v3/password_reset_requested_event_serializer.rb +29 -0
  242. data/app/serializers/spree/api/v3/payment_method_serializer.rb +2 -6
  243. data/app/serializers/spree/api/v3/payment_serializer.rb +5 -10
  244. data/app/serializers/spree/api/v3/payment_session_serializer.rb +3 -9
  245. data/app/serializers/spree/api/v3/payment_setup_session_serializer.rb +3 -11
  246. data/app/serializers/spree/api/v3/policy_serializer.rb +1 -3
  247. data/app/serializers/spree/api/v3/price_history_serializer.rb +1 -3
  248. data/app/serializers/spree/api/v3/price_serializer.rb +1 -3
  249. data/app/serializers/spree/api/v3/product_publication_serializer.rb +1 -7
  250. data/app/serializers/spree/api/v3/product_serializer.rb +7 -21
  251. data/app/serializers/spree/api/v3/product_submission_serializer.rb +26 -0
  252. data/app/serializers/spree/api/v3/purchase_order_event_serializer.rb +23 -4
  253. data/app/serializers/spree/api/v3/refund_serializer.rb +3 -11
  254. data/app/serializers/spree/api/v3/return_line_item_serializer.rb +12 -19
  255. data/app/serializers/spree/api/v3/return_serializer.rb +6 -15
  256. data/app/serializers/spree/api/v3/saved_report_event_serializer.rb +23 -0
  257. data/app/serializers/spree/api/v3/seller/delivery_method_serializer.rb +1 -7
  258. data/app/serializers/spree/api/v3/seller/delivery_rate_serializer.rb +1 -7
  259. data/app/serializers/spree/api/v3/seller/delivery_serializer.rb +1 -3
  260. data/app/serializers/spree/api/v3/seller/delivery_zone_serializer.rb +1 -3
  261. data/app/serializers/spree/api/v3/seller/exchange_serializer.rb +1 -3
  262. data/app/serializers/spree/api/v3/seller/fulfillment_item_serializer.rb +1 -7
  263. data/app/serializers/spree/api/v3/seller/fulfillment_serializer.rb +2 -6
  264. data/app/serializers/spree/api/v3/seller/invitation_serializer.rb +1 -3
  265. data/app/serializers/spree/api/v3/seller/order_line_item_serializer.rb +7 -13
  266. data/app/serializers/spree/api/v3/seller/order_serializer.rb +4 -25
  267. data/app/serializers/spree/api/v3/seller/payout_serializer.rb +4 -2
  268. data/app/serializers/spree/api/v3/seller/product_serializer.rb +1 -7
  269. data/app/serializers/spree/api/v3/seller/product_submission_serializer.rb +1 -21
  270. data/app/serializers/spree/api/v3/seller/profile_serializer.rb +2 -6
  271. data/app/serializers/spree/api/v3/seller/requirement_status_serializer.rb +3 -9
  272. data/app/serializers/spree/api/v3/seller/return_serializer.rb +3 -15
  273. data/app/serializers/spree/api/v3/seller/transfer_serializer.rb +4 -2
  274. data/app/serializers/spree/api/v3/seller_serializer.rb +1 -3
  275. data/app/serializers/spree/api/v3/shipping_label_event_serializer.rb +22 -4
  276. data/app/serializers/spree/api/v3/stock_level_serializer.rb +1 -7
  277. data/app/serializers/spree/api/v3/stock_movement_serializer.rb +1 -3
  278. data/app/serializers/spree/api/v3/stock_receipt_event_serializer.rb +20 -4
  279. data/app/serializers/spree/api/v3/stock_transfer_serializer.rb +1 -7
  280. data/app/serializers/spree/api/v3/store_credit_event_serializer.rb +2 -11
  281. data/app/serializers/spree/api/v3/store_credit_serializer.rb +2 -24
  282. data/app/serializers/spree/api/v3/supplier_event_serializer.rb +6 -4
  283. data/app/serializers/spree/api/v3/tax_line_serializer.rb +10 -20
  284. data/app/serializers/spree/api/v3/variant_serializer.rb +7 -21
  285. data/app/serializers/spree/api/v3/wishlist_item_serializer.rb +1 -11
  286. data/app/serializers/spree/api/v3/wishlist_serializer.rb +2 -6
  287. data/app/subscribers/spree/webhook_event_subscriber.rb +3 -10
  288. data/config/initializers/pagy.rb +1 -1
  289. data/config/initializers/typelizer.rb +6 -8
  290. data/config/locales/ar.yml +15 -0
  291. data/config/locales/be.yml +15 -0
  292. data/config/locales/bg.yml +15 -0
  293. data/config/locales/ca.yml +15 -0
  294. data/config/locales/cs.yml +15 -0
  295. data/config/locales/da.yml +15 -0
  296. data/config/locales/de-CH.yml +11 -0
  297. data/config/locales/de.yml +15 -0
  298. data/config/locales/el.yml +15 -0
  299. data/config/locales/en.yml +5 -40
  300. data/config/locales/es-CL.yml +10 -0
  301. data/config/locales/es-EC.yml +11 -0
  302. data/config/locales/es-MX.yml +12 -0
  303. data/config/locales/es.yml +15 -0
  304. data/config/locales/et.yml +15 -0
  305. data/config/locales/fa.yml +15 -0
  306. data/config/locales/fi.yml +15 -0
  307. data/config/locales/fr.yml +15 -0
  308. data/config/locales/hu.yml +15 -0
  309. data/config/locales/id.yml +15 -0
  310. data/config/locales/it.yml +15 -0
  311. data/config/locales/ja.yml +15 -0
  312. data/config/locales/km.yml +15 -0
  313. data/config/locales/ko.yml +15 -0
  314. data/config/locales/ku.yml +15 -0
  315. data/config/locales/lt.yml +15 -0
  316. data/config/locales/lv.yml +15 -0
  317. data/config/locales/nb.yml +15 -0
  318. data/config/locales/ne.yml +15 -0
  319. data/config/locales/nl.yml +15 -0
  320. data/config/locales/pl.yml +15 -0
  321. data/config/locales/pt-BR.yml +13 -0
  322. data/config/locales/pt.yml +15 -0
  323. data/config/locales/ro.yml +15 -0
  324. data/config/locales/ru.yml +15 -0
  325. data/config/locales/sk.yml +15 -0
  326. data/config/locales/sl-SI.yml +15 -0
  327. data/config/locales/sv.yml +15 -0
  328. data/config/locales/th.yml +15 -0
  329. data/config/locales/tr.yml +15 -0
  330. data/config/locales/uk.yml +15 -0
  331. data/config/locales/vi.yml +15 -0
  332. data/config/locales/zh-CN.yml +15 -0
  333. data/config/locales/zh-TW.yml +15 -0
  334. data/config/routes.rb +49 -99
  335. data/lib/spree/api/dependencies.rb +53 -274
  336. data/lib/spree/api/openapi/schema_helper.rb +1 -1
  337. data/lib/spree/api/typelizer_generation.rb +35 -0
  338. data/lib/spree/api/webhook_event_types.rb +140 -0
  339. data/lib/spree/api.rb +0 -2
  340. metadata +71 -36
  341. data/config/i18n-tasks.yml +0 -40
  342. data/config/initializers/alba.rb +0 -5
@@ -24,9 +24,7 @@ module Spree
24
24
  rule.class.api_type
25
25
  end
26
26
 
27
- attribute :commission_rate_id do |rule|
28
- rule.commission_rate&.prefixed_id
29
- end
27
+ prefixed_id_attributes :commission_rate
30
28
 
31
29
  attribute :preferences, &:serialized_preferences
32
30
  attribute :preference_schema, &:serialized_preference_schema
@@ -16,13 +16,7 @@ module Spree
16
16
  attributes :code, :state,
17
17
  created_at: :iso8601, updated_at: :iso8601
18
18
 
19
- attribute :promotion_id do |coupon|
20
- coupon.promotion&.prefixed_id
21
- end
22
-
23
- attribute :order_id do |coupon|
24
- coupon.order&.prefixed_id
25
- end
19
+ prefixed_id_attributes :promotion, :order
26
20
  end
27
21
  end
28
22
  end
@@ -7,13 +7,7 @@ module Spree
7
7
  payment_method_id: [:string, nullable: true],
8
8
  metadata: 'Record<string, unknown>'
9
9
 
10
- attribute :customer_id do |credit_card|
11
- credit_card.customer&.prefixed_id
12
- end
13
-
14
- attribute :payment_method_id do |credit_card|
15
- credit_card.payment_method&.prefixed_id
16
- end
10
+ prefixed_id_attributes :customer, :payment_method
17
11
 
18
12
  attributes :metadata,
19
13
  created_at: :iso8601, updated_at: :iso8601
@@ -9,15 +9,19 @@ module Spree
9
9
  key: :string,
10
10
  label: :string,
11
11
  field_type: Spree::CustomField::FIELD_TYPE_TOKENS,
12
- resource_type: [:string, comment: 'Class name of the resource the field attaches to, for example Spree::Product, Spree::Order or Spree::Customer. Extensions may register more.'],
12
+ resource_type: [:string, comment: 'Shorthand of the resource the field attaches to, for example product, variant, order, customer or category. Discover the full list from the resource_types endpoint; extensions may register more.'],
13
13
  storefront_visible: :boolean,
14
14
  searchable: :boolean,
15
15
  sortable: :boolean,
16
16
  filter_key: :string
17
17
 
18
- attributes :namespace, :key, :label, :field_type, :resource_type, :storefront_visible,
18
+ attributes :namespace, :key, :label, :field_type, :storefront_visible,
19
19
  :searchable, :sortable, :filter_key,
20
20
  created_at: :iso8601, updated_at: :iso8601
21
+
22
+ attribute :resource_type do |definition|
23
+ Spree::Base.polymorphic_api_type(definition.resource_type)
24
+ end
21
25
  end
22
26
  end
23
27
  end
@@ -28,9 +28,7 @@ module Spree
28
28
  user.anonymized_at&.iso8601
29
29
  end
30
30
 
31
- attribute :anonymized do |user|
32
- user.anonymized?
33
- end
31
+ attribute :anonymized, &:anonymized?
34
32
 
35
33
  attribute :tags do |user|
36
34
  user.tags.map(&:name) # not pluck as we preload tags
@@ -44,13 +42,7 @@ module Spree
44
42
  user.respond_to?(:internal_note) ? user.internal_note.presence : nil
45
43
  end
46
44
 
47
- attribute :default_billing_address_id do |user|
48
- user.bill_address&.prefixed_id
49
- end
50
-
51
- attribute :default_shipping_address_id do |user|
52
- user.ship_address&.prefixed_id
53
- end
45
+ prefixed_id_attributes default_billing_address_id: :bill_address, default_shipping_address_id: :ship_address
54
46
 
55
47
  # Order aggregates: prefer attributes precomputed on the scope (see
56
48
  # CustomersController#scope) to avoid N+1 on list endpoints. Fall
@@ -19,14 +19,10 @@ module Spree
19
19
 
20
20
  attributes :email, :error_message, created_at: :iso8601, updated_at: :iso8601
21
21
 
22
- attribute :customer_id do |data_request|
23
- data_request.customer&.prefixed_id
24
- end
22
+ prefixed_id_attributes :customer
25
23
 
26
24
  # Null when the subject asked for it themselves.
27
- attribute :requested_by_id do |data_request|
28
- data_request.requested_by&.prefixed_id
29
- end
25
+ prefixed_id_attributes :requested_by
30
26
 
31
27
  one :customer, resource: proc { Spree.api.admin_customer_serializer }, if: proc { expand?('customer') }
32
28
  end
@@ -4,8 +4,9 @@ module Spree
4
4
  module Admin
5
5
  class DeliveryMethodSerializer < V3::DeliveryMethodSerializer
6
6
  typelize admin_name: [:string, nullable: true],
7
- fulfillment_provider: :string, pickup_point_provider: [:string, nullable: true],
8
- rate_provider: [:string, nullable: true],
7
+ fulfillment_provider: [:string, comment: 'Fulfillment provider. Built-in: manual, digital, pickup, pickup_point. Provider gems register more (e.g. easy_post).'],
8
+ pickup_point_provider: [:string, nullable: true, comment: 'Pickup point network. None built in; provider gems register them.'],
9
+ rate_provider: [:string, nullable: true, comment: 'Rate provider; null prices through the calculator. Built-in: internal, freight. Provider gems register more (e.g. easy_post).'],
9
10
  storefront_visible: :boolean, tracking_url: [:string, nullable: true],
10
11
  tax_category_id: [:string, nullable: true],
11
12
  delivery_profile_id: :string,
@@ -20,17 +21,14 @@ module Spree
20
21
  seller_id: [:string, nullable: true],
21
22
  seller_name: [:string, nullable: true]
22
23
 
23
- attributes :admin_name, :fulfillment_provider, :pickup_point_provider,
24
- :rate_provider, :storefront_visible, :tracking_url,
24
+ attributes :admin_name, :storefront_visible, :tracking_url,
25
25
  :markup_flat, :markup_percent, :available_to_sellers,
26
26
  created_at: :iso8601, updated_at: :iso8601, deleted_at: :iso8601
27
27
 
28
28
  # Which seller runs this method, so the operator's list can say
29
29
  # whose it is. Null is the marketplace's own
30
30
  # (docs/plans/6.0-multi-vendor-marketplace.md, Decision 13).
31
- attribute :seller_id do |record|
32
- record.seller&.prefixed_id
33
- end
31
+ prefixed_id_attributes :seller
34
32
 
35
33
  attribute :seller_name do |record|
36
34
  record.seller&.name
@@ -42,26 +40,14 @@ module Spree
42
40
  # eligibility without a request per method.
43
41
  many :delivery_method_rules, key: :rules, resource: proc { Spree.api.admin_delivery_method_rule_serializer }
44
42
 
45
- attribute :tax_category_id do |record|
46
- record.tax_category&.prefixed_id
47
- end
48
-
49
- attribute :delivery_profile_id do |record|
50
- record.delivery_profile&.prefixed_id
51
- end
52
-
53
- attribute :delivery_origin_group_id do |record|
54
- record.delivery_origin_group&.prefixed_id
55
- end
56
-
57
- attribute :delivery_zone_id do |record|
58
- record.delivery_zone&.prefixed_id
59
- end
43
+ prefixed_id_attributes :tax_category, :delivery_profile, :delivery_origin_group, :delivery_zone
60
44
 
61
45
  attribute :stock_location_ids do |record|
62
46
  record.pickup_locations.map(&:prefixed_id)
63
47
  end
64
48
 
49
+ api_type_attributes :fulfillment_provider, :pickup_point_provider, :rate_provider
50
+
65
51
  attribute :calculator_type do |record|
66
52
  record.calculator&.class&.api_type
67
53
  end
@@ -11,9 +11,7 @@ module Spree
11
11
  attributes :name, :position,
12
12
  created_at: :iso8601, updated_at: :iso8601
13
13
 
14
- attribute :delivery_profile_id do |record|
15
- record.delivery_profile&.prefixed_id
16
- end
14
+ prefixed_id_attributes :delivery_profile
17
15
 
18
16
  # Empty means every store location.
19
17
  attribute :stock_location_ids do |record|
@@ -10,9 +10,7 @@ module Spree
10
10
  # Operational detail, so admin-only.
11
11
  attributes :details, created_at: :iso8601, updated_at: :iso8601
12
12
 
13
- attribute :shipping_label_id do |delivery|
14
- delivery.shipping_label&.prefixed_id
15
- end
13
+ prefixed_id_attributes :shipping_label
16
14
  end
17
15
  end
18
16
  end
@@ -9,13 +9,7 @@ module Spree
9
9
 
10
10
  attributes created_at: :iso8601, updated_at: :iso8601
11
11
 
12
- attribute :delivery_profile_id do |record|
13
- record.delivery_profile&.prefixed_id
14
- end
15
-
16
- attribute :delivery_origin_group_id do |record|
17
- record.delivery_origin_group&.prefixed_id
18
- end
12
+ prefixed_id_attributes :delivery_profile, :delivery_origin_group
19
13
 
20
14
  attribute :delivery_method_ids do |record|
21
15
  record.delivery_methods.map(&:prefixed_id)
@@ -10,14 +10,16 @@ module Spree
10
10
  authorized_days: [:number, nullable: true],
11
11
  effective_authorized_clicks: :number,
12
12
  effective_authorized_days: :number,
13
- provider_type: [:string, nullable: true],
13
+ provider_type: [:string, nullable: true, comment: 'Digital asset provider; null is an uploaded file. Built-in: file. Extensions may register more.'],
14
14
  provider_name: [:string, comment: 'Digital asset provider name. Built-in: File. Extensions may register more.'],
15
15
  provider_settings: 'Record<string, unknown>',
16
16
  download_url: [:string, nullable: true]
17
17
 
18
- attributes :authorized_clicks, :authorized_days, :byte_size, :provider_type, :provider_settings
18
+ attributes :authorized_clicks, :authorized_days, :byte_size, :provider_settings
19
19
  attributes created_at: :iso8601, updated_at: :iso8601
20
20
 
21
+ api_type_attributes :provider_type
22
+
21
23
  # Human-readable source for the admin listing. Blank provider_type is
22
24
  # the uploaded-file default, so this reads "File" there.
23
25
  attribute :provider_name do |digital_asset|
@@ -0,0 +1,19 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ module Admin
5
+ class EmailTemplateDraftSerializer < V3::BaseSerializer
6
+ typelize subject: [:string, nullable: true],
7
+ body: :string,
8
+ lock_version: :number,
9
+ updated_by_id: [:string, nullable: true],
10
+ updated_by_type: [:string, nullable: true, enum: Spree::Actor::BUILT_IN_KINDS, enum_type_name: 'ActorKind']
11
+
12
+ attributes :subject, :body, :lock_version, created_at: :iso8601, updated_at: :iso8601
13
+
14
+ actor_attributes :updated_by
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,38 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ module Admin
5
+ # A rendered preview of an email template, with the variables it was
6
+ # rendered with, as example values for the editor.
7
+ class EmailTemplatePreviewSerializer < V3::BaseSerializer
8
+ typelize id: [:string, nullable: true],
9
+ subject: :string,
10
+ html: :string,
11
+ text: :string,
12
+ email_key: :string,
13
+ variables: 'Record<string, unknown>'
14
+
15
+ attribute :subject do |preview|
16
+ preview.rendered.subject
17
+ end
18
+
19
+ attribute :html do |preview|
20
+ preview.rendered.html
21
+ end
22
+
23
+ attribute :text do |preview|
24
+ preview.rendered.text
25
+ end
26
+
27
+ # The email the preview renders: the template itself, or for the
28
+ # layout and partials, the email shown around them.
29
+ attribute :email_key do |preview|
30
+ preview.email.key.tr('/', '.')
31
+ end
32
+
33
+ attribute :variables, &:variables
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,18 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ module Admin
5
+ class EmailTemplateRevisionSerializer < V3::BaseSerializer
6
+ typelize subject: [:string, nullable: true],
7
+ body: :string,
8
+ published_by_id: [:string, nullable: true],
9
+ published_by_type: [:string, nullable: true, enum: Spree::Actor::BUILT_IN_KINDS, enum_type_name: 'ActorKind']
10
+
11
+ attributes :subject, :body, created_at: :iso8601
12
+
13
+ actor_attributes :published_by
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,13 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ module Admin
5
+ class EmailTemplateSampleRecordSerializer < V3::BaseSerializer
6
+ typelize label: :string, created_at: :string
7
+
8
+ attributes :label, created_at: :iso8601
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,61 @@
1
+ module Spree
2
+ module Api
3
+ module V3
4
+ module Admin
5
+ # An editable email template for one language: what customers receive
6
+ # now (the store's published version, else Spree's default), Spree's
7
+ # default, and the draft in progress.
8
+ class EmailTemplateSerializer < V3::BaseSerializer
9
+ typelize key: :string,
10
+ kind: [:string, enum: Spree::Emails::EditableTemplates::KINDS.map(&:to_s)],
11
+ language: :string,
12
+ customized: :boolean,
13
+ customized_languages: [:string, multi: true],
14
+ subject: [:string, nullable: true],
15
+ body: :string,
16
+ published_at: [:string, nullable: true],
17
+ published_language: [:string, nullable: true],
18
+ default_subject: [:string, nullable: true],
19
+ default_body: :string,
20
+ default_changed: :boolean,
21
+ base_subject: [:string, nullable: true],
22
+ base_body: [:string, nullable: true],
23
+ draft: ['EmailTemplateDraft', nullable: true]
24
+
25
+ attributes :key, :subject, :body
26
+
27
+ # A language code, or `any` for the version every language uses.
28
+ attribute :language, &:locale
29
+
30
+ attribute :customized_languages, &:customized_locales
31
+
32
+ attribute :kind do |entry|
33
+ entry.kind.to_s
34
+ end
35
+
36
+ attribute :customized, &:customized?
37
+
38
+ attribute :published_at do |entry|
39
+ entry.published&.published_at&.iso8601
40
+ end
41
+
42
+ attributes :default_subject, :default_body
43
+
44
+ # `any` when this language has no version of its own and customers
45
+ # receive the one for every language.
46
+ attribute :published_language, &:published_locale
47
+
48
+ attribute :default_changed do |entry|
49
+ entry.outdated_version.present?
50
+ end
51
+
52
+ # The default the store's version started from, when Spree's default
53
+ # has changed since: compare it with `default_body` to see what changed.
54
+ attributes :base_subject, :base_body
55
+
56
+ one :draft, resource: proc { Spree.api.admin_email_template_draft_serializer }
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -13,9 +13,7 @@ module Spree
13
13
 
14
14
  attributes :memo, :metadata, created_at: :iso8601, updated_at: :iso8601
15
15
 
16
- attribute :stock_location_id do |exchange|
17
- exchange.stock_location&.prefixed_id
18
- end
16
+ prefixed_id_attributes :stock_location
19
17
 
20
18
  actor_attributes :created_by
21
19
 
@@ -23,13 +23,7 @@ module Spree
23
23
  # it — whose it is. A null `seller_id` means the operator's own.
24
24
  # The name rides along so the list can show who without a second
25
25
  # request per row.
26
- attribute :store_id do |export|
27
- export.store&.prefixed_id
28
- end
29
-
30
- attribute :seller_id do |export|
31
- export.seller&.prefixed_id
32
- end
26
+ prefixed_id_attributes :store, :seller
33
27
 
34
28
  attribute :seller_name do |export|
35
29
  export.seller&.name
@@ -17,13 +17,7 @@ module Spree
17
17
 
18
18
  attributes :quantity, :status
19
19
 
20
- attribute :variant_id do |item|
21
- item.variant&.prefixed_id
22
- end
23
-
24
- attribute :line_item_id do |item|
25
- item.line_item&.prefixed_id
26
- end
20
+ prefixed_id_attributes :variant, :line_item
27
21
 
28
22
  attribute :name do |item|
29
23
  item.variant&.product&.name
@@ -23,13 +23,7 @@ module Spree
23
23
  attributes :metadata, :adjustment_total, :pre_tax_amount,
24
24
  created_at: :iso8601, updated_at: :iso8601
25
25
 
26
- attribute :order_id do |fulfillment|
27
- fulfillment.order&.prefixed_id
28
- end
29
-
30
- attribute :stock_location_id do |fulfillment|
31
- fulfillment.stock_location&.prefixed_id
32
- end
26
+ prefixed_id_attributes :order, :stock_location
33
27
 
34
28
  # Customs forms and other paperwork the provider produced beside the
35
29
  # label; the labels themselves are listed under +labels+.
@@ -24,13 +24,7 @@ module Spree
24
24
  params[:gift_card_codes] ? gift_card.display_code : gift_card.masked_code
25
25
  end
26
26
 
27
- attribute :customer_id do |gift_card|
28
- gift_card.customer&.prefixed_id
29
- end
30
-
31
- attribute :created_by_id do |gift_card|
32
- gift_card.created_by&.prefixed_id
33
- end
27
+ prefixed_id_attributes :customer, :created_by
34
28
 
35
29
  # Customer the card was issued to. Gated behind `expand?` to keep
36
30
  # the list payload thin — the SPA's list view passes
@@ -44,9 +44,7 @@ module Spree
44
44
  # Empty on a shop-price or hand-negotiated line. Names ride along
45
45
  # beside the ids so a page of lines does not cost a request each to
46
46
  # label, as `company_name` already does.
47
- attribute :price_list_id do |line_item|
48
- line_item.price_list&.prefixed_id
49
- end
47
+ prefixed_id_attributes :price_list
50
48
 
51
49
  attribute :price_list_name do |line_item|
52
50
  line_item.price_list&.name
@@ -64,9 +62,7 @@ module Spree
64
62
  line_item.cost_price&.to_s
65
63
  end
66
64
 
67
- attribute :tax_category_id do |line_item|
68
- line_item.tax_category&.prefixed_id
69
- end
65
+ prefixed_id_attributes :tax_category
70
66
 
71
67
  # Override inherited associations to use admin serializers
72
68
  many :option_values, resource: proc { Spree.api.admin_option_value_serializer }
@@ -3,11 +3,13 @@ module Spree
3
3
  module V3
4
4
  module Admin
5
5
  class MarketSerializer < V3::MarketSerializer
6
- typelize tax_provider: [:string, nullable: true]
6
+ typelize tax_provider: [:string, nullable: true, comment: 'Tax provider; null uses the store default. Built-in: internal. Provider gems register more.']
7
+
8
+ attributes created_at: :iso8601, updated_at: :iso8601
7
9
 
8
10
  # Which tax engine computes for this market. Nil means the store-wide
9
11
  # default; the selectable values come from /admin/tax_providers.
10
- attributes :tax_provider, created_at: :iso8601, updated_at: :iso8601
12
+ api_type_attributes :tax_provider
11
13
 
12
14
  many :countries,
13
15
  resource: proc { Spree.api.admin_country_serializer },
@@ -57,9 +57,7 @@ module Spree
57
57
  asset.attachment_blob&.signed_id
58
58
  end
59
59
 
60
- attribute :viewable_id do |asset|
61
- asset.viewable&.prefixed_id
62
- end
60
+ prefixed_id_attributes :viewable
63
61
 
64
62
  # Forces Content-Disposition: attachment so admins downloading from
65
63
  # cloud storage (S3) get a save-as instead of an inline view. Mirrors
@@ -19,9 +19,7 @@ module Spree
19
19
 
20
20
  # Lets the dashboard hide destructive controls instead of offering a
21
21
  # delete that the model will refuse.
22
- attribute :can_be_deleted do |reason|
23
- reason.can_be_deleted?
24
- end
22
+ attribute :can_be_deleted, &:can_be_deleted?
25
23
  end
26
24
  end
27
25
  end
@@ -17,9 +17,7 @@ module Spree
17
17
  store_owner_notification_delivered: :boolean,
18
18
  created_at: :string, updated_at: :string
19
19
 
20
- attribute :customer_id do |group|
21
- group.customer&.prefixed_id
22
- end
20
+ prefixed_id_attributes :customer
23
21
 
24
22
  attribute :cart_id do |group|
25
23
  Spree::Cart.prefixed_id_for(group.cart_id)
@@ -28,13 +26,9 @@ module Spree
28
26
  # How many sellers this checkout reached — the operator's headline
29
27
  # question about a group, and cheaper than counting the orders client
30
28
  # side once a group is large.
31
- attribute :seller_count do |group|
32
- group.seller_count
33
- end
29
+ attributes :seller_count
34
30
 
35
- attribute :includes_first_party do |group|
36
- group.includes_first_party?
37
- end
31
+ attribute :includes_first_party, &:includes_first_party?
38
32
 
39
33
  # A split checkout is confirmed once, from here — every child order
40
34
  # places silently, so their own flags are false and only the group
@@ -22,9 +22,7 @@ module Spree
22
22
  rule.class.api_type
23
23
  end
24
24
 
25
- attribute :channel_id do |rule|
26
- rule.channel&.prefixed_id
27
- end
25
+ prefixed_id_attributes :channel
28
26
 
29
27
  attribute :preferences, &:serialized_preferences
30
28
  attribute :preference_schema, &:serialized_preference_schema
@@ -74,9 +74,7 @@ module Spree
74
74
  canceled_at: :iso8601, approved_at: :iso8601,
75
75
  created_at: :iso8601, updated_at: :iso8601
76
76
 
77
- attribute :preferred_stock_location_id do |order|
78
- order.preferred_stock_location&.prefixed_id
79
- end
77
+ prefixed_id_attributes :preferred_stock_location
80
78
 
81
79
  # Our own endpoint rather than a pre-signed storage URL: the
82
80
  # controller streams the bytes, so admin auth runs on every download
@@ -90,9 +88,7 @@ module Spree
90
88
  # Which company node the order is for, so the dashboard can show and
91
89
  # change it. Read back from the column rather than #resolved_company:
92
90
  # a placed order must report what it was stamped with.
93
- attribute :company_id do |order|
94
- order.company&.prefixed_id
95
- end
91
+ prefixed_id_attributes :company
96
92
 
97
93
  attribute :company_name do |order|
98
94
  order.company&.name
@@ -100,9 +96,7 @@ module Spree
100
96
 
101
97
  # Whose sale this is — nil on the operator's own goods. The full
102
98
  # profile is `?expand=seller`.
103
- attribute :seller_id do |order|
104
- order.seller&.prefixed_id
105
- end
99
+ prefixed_id_attributes :seller
106
100
 
107
101
  one :seller,
108
102
  resource: proc { Spree.api.admin_seller_serializer },
@@ -136,9 +130,7 @@ module Spree
136
130
  # secret key names the key.
137
131
  actor_attributes :approver, :canceler, :created_by
138
132
 
139
- attribute :cancel_reason_id do |order|
140
- order.cancel_reason&.prefixed_id
141
- end
133
+ prefixed_id_attributes :cancel_reason
142
134
 
143
135
  # The reason's name alongside its id, so an order list can show why
144
136
  # each canceled order was called off without expanding a record per
@@ -147,9 +139,7 @@ module Spree
147
139
  order.cancel_reason&.name
148
140
  end
149
141
 
150
- attribute :customer_id do |order|
151
- order.customer&.prefixed_id
152
- end
142
+ prefixed_id_attributes :customer
153
143
 
154
144
  # Override inherited associations to use admin serializers
155
145
  # Renamed from the store's `discounts` key: on the admin surface that
@@ -39,9 +39,7 @@ module Spree
39
39
  # Whose packaging this is: a seller's own, or (null) the
40
40
  # marketplace's shared vocabulary
41
41
  # (docs/plans/6.0-seller-package-types.md).
42
- attribute :seller_id do |package_type|
43
- package_type.seller&.prefixed_id
44
- end
42
+ prefixed_id_attributes :seller
45
43
 
46
44
  attribute :seller_name do |package_type|
47
45
  package_type.seller&.name