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
@@ -3,288 +3,68 @@ require 'spree/core/dependencies_helper'
3
3
  module Spree
4
4
  module Api
5
5
  class ApiDependencies
6
+ # Serializers named after their key: `product_serializer` is
7
+ # Spree::Api::V3::ProductSerializer, `admin_product_serializer` its Admin
8
+ # twin and `seller_product_serializer` its Seller one.
9
+ STORE_SERIALIZERS =
10
+ %i[credit_card price price_history product product_type variant media option_type option_value cart order
11
+ order_group line_item payment payment_session payment_setup_session payment_source store_credit
12
+ fulfillment delivery address customer data_request customer_group country channel product_publication
13
+ market state wishlist wishlist_item payment_method delivery_method delivery_rate freight_summary
14
+ stock_location category collection applied_promotion discount tax_line delivery_zone delivery_zone_member
15
+ fee digital_link gift_card currency locale policy custom_field tax_category tax_identifier
16
+ product_filters product_filter_price_range product_filter_availability product_filter_availability_option
17
+ product_filter_option product_filter_option_value product_filter_category product_filter_category_option
18
+ product_filter_sort_option media_event return return_line_item exchange exchange_line_item claim
19
+ claim_line_item return_reason claim_reason digital_asset export gift_card_batch import import_row
20
+ invitation newsletter_subscriber promotion refund stock_level stock_movement stock_reservation
21
+ stock_transfer company company_membership company_invitation seller file_upload file_upload_target].freeze
22
+
23
+ ADMIN_SERIALIZERS =
24
+ %i[country state locale applied_promotion discount tax_line cart delivery_zone delivery_profile
25
+ delivery_origin_group integration delivery_method_rule delivery_zone_member fee consent_record customer
26
+ data_request newsletter_subscriber order order_group product product_type
27
+ product_type_custom_field_definition variant price price_history custom_field custom_field_definition
28
+ category collection collection_rule line_item option_type option_value media stock_level stock_movement
29
+ stock_transfer stock_transfer_item supplier purchase_order purchase_order_item stock_receipt
30
+ stock_receipt_item fulfillment fulfillment_item delivery shipping_label gift_card gift_card_batch payment
31
+ refund return_reason claim_reason refund_reason order_cancellation_reason return return_line_item
32
+ exchange exchange_line_item claim claim_line_item package_type policy tax_category tax_rate
33
+ tax_identifier company company_membership company_invitation catalog catalog_price catalog_price_tier
34
+ catalog_product price_list_product catalog_assignment catalog_quantity_rule catalog_product_term
35
+ catalog_order_minimum tax_exemption_certificate admin_user actor seller_team_member product_submission
36
+ seller seller_requirement seller_requirement_submission seller_requirement_status commission_rate
37
+ commission_rule commission_line seller_transfer seller_payout seller_balance payment_split address
38
+ channel order_routing_rule product_publication market delivery_method delivery_method_service
39
+ stock_location stock_reservation delivery_rate freight_summary freight_summary_line payment_method
40
+ credit_card store_credit store_credit_event customer_group payment_source digital_asset digital_link
41
+ store setup_task update_status api_key allowed_origin webhook_endpoint webhook_event webhook_delivery invitation
42
+ invitation_acceptance_link role permission export saved_report import import_row import_mapping promotion
43
+ promotion_action promotion_rule coupon_code price_adjustment_tier price_list price_rule
44
+ resource_translations email_template email_template_draft email_template_revision email_template_preview
45
+ email_template_sample_record file_upload file_upload_target].freeze
46
+
47
+ SELLER_SERIALIZERS =
48
+ %i[address country state profile policy team_member account invitation invitation_acceptance_link product product_type
49
+ delivery_profile delivery_method delivery_method_rule delivery_zone variant media stock_level order
50
+ order_line_item fulfillment fulfillment_item delivery delivery_rate shipping_label return
51
+ return_line_item exchange exchange_line_item claim claim_line_item reason package_type stock_location
52
+ requirement_custom_field tax_identifier requirement_status import import_row import_mapping
53
+ requirement_submission export transfer payout balance payment_split price price_history file_upload
54
+ file_upload_target].freeze
55
+
6
56
  INJECTION_POINTS_WITH_DEFAULTS = {
7
- # v3 serializers (API v3)
8
- credit_card_serializer: 'Spree::Api::V3::CreditCardSerializer',
9
- price_serializer: 'Spree::Api::V3::PriceSerializer',
10
- price_history_serializer: 'Spree::Api::V3::PriceHistorySerializer',
11
- product_serializer: 'Spree::Api::V3::ProductSerializer',
12
- product_type_serializer: 'Spree::Api::V3::ProductTypeSerializer',
13
- variant_serializer: 'Spree::Api::V3::VariantSerializer',
14
- media_serializer: 'Spree::Api::V3::MediaSerializer',
15
- option_type_serializer: 'Spree::Api::V3::OptionTypeSerializer',
16
- option_value_serializer: 'Spree::Api::V3::OptionValueSerializer',
17
- cart_serializer: 'Spree::Api::V3::CartSerializer',
18
- order_serializer: 'Spree::Api::V3::OrderSerializer',
19
- order_group_serializer: 'Spree::Api::V3::OrderGroupSerializer',
20
- line_item_serializer: 'Spree::Api::V3::LineItemSerializer',
21
- payment_serializer: 'Spree::Api::V3::PaymentSerializer',
22
- payment_session_serializer: 'Spree::Api::V3::PaymentSessionSerializer',
23
- payment_setup_session_serializer: 'Spree::Api::V3::PaymentSetupSessionSerializer',
24
- payment_source_serializer: 'Spree::Api::V3::PaymentSourceSerializer',
25
- store_credit_serializer: 'Spree::Api::V3::StoreCreditSerializer',
57
+ **STORE_SERIALIZERS.to_h { |name| [:"#{name}_serializer", "Spree::Api::V3::#{name.to_s.camelize}Serializer"] },
58
+ **ADMIN_SERIALIZERS.to_h { |name| [:"admin_#{name}_serializer", "Spree::Api::V3::Admin::#{name.to_s.camelize}Serializer"] },
59
+ **SELLER_SERIALIZERS.to_h { |name| [:"seller_#{name}_serializer", "Spree::Api::V3::Seller::#{name.to_s.camelize}Serializer"] },
26
60
  shipment_serializer: 'Spree::Api::V3::FulfillmentSerializer',
27
- fulfillment_serializer: 'Spree::Api::V3::FulfillmentSerializer',
28
- delivery_serializer: 'Spree::Api::V3::DeliverySerializer',
29
- address_serializer: 'Spree::Api::V3::AddressSerializer',
30
- customer_serializer: 'Spree::Api::V3::CustomerSerializer',
31
- data_request_serializer: 'Spree::Api::V3::DataRequestSerializer',
32
- customer_group_serializer: 'Spree::Api::V3::CustomerGroupSerializer',
33
- country_serializer: 'Spree::Api::V3::CountrySerializer',
34
- channel_serializer: 'Spree::Api::V3::ChannelSerializer',
35
- product_publication_serializer: 'Spree::Api::V3::ProductPublicationSerializer',
36
- market_serializer: 'Spree::Api::V3::MarketSerializer',
37
- state_serializer: 'Spree::Api::V3::StateSerializer',
38
- wishlist_serializer: 'Spree::Api::V3::WishlistSerializer',
39
- wishlist_item_serializer: 'Spree::Api::V3::WishlistItemSerializer',
40
61
  wished_item_serializer: 'Spree::Api::V3::WishlistItemSerializer',
41
- payment_method_serializer: 'Spree::Api::V3::PaymentMethodSerializer',
42
62
  shipping_method_serializer: 'Spree::Api::V3::DeliveryMethodSerializer',
43
63
  shipping_rate_serializer: 'Spree::Api::V3::DeliveryRateSerializer',
44
- delivery_method_serializer: 'Spree::Api::V3::DeliveryMethodSerializer',
45
- delivery_rate_serializer: 'Spree::Api::V3::DeliveryRateSerializer',
46
- freight_summary_serializer: 'Spree::Api::V3::FreightSummarySerializer',
47
- stock_location_serializer: 'Spree::Api::V3::StockLocationSerializer',
48
- category_serializer: 'Spree::Api::V3::CategorySerializer',
49
- collection_serializer: 'Spree::Api::V3::CollectionSerializer',
50
- applied_promotion_serializer: 'Spree::Api::V3::AppliedPromotionSerializer',
51
- discount_serializer: 'Spree::Api::V3::DiscountSerializer',
52
- tax_line_serializer: 'Spree::Api::V3::TaxLineSerializer',
53
- delivery_zone_serializer: 'Spree::Api::V3::DeliveryZoneSerializer',
54
- delivery_zone_member_serializer: 'Spree::Api::V3::DeliveryZoneMemberSerializer',
55
- fee_serializer: 'Spree::Api::V3::FeeSerializer',
56
- digital_link_serializer: 'Spree::Api::V3::DigitalLinkSerializer',
57
- gift_card_serializer: 'Spree::Api::V3::GiftCardSerializer',
58
- currency_serializer: 'Spree::Api::V3::CurrencySerializer',
59
- locale_serializer: 'Spree::Api::V3::LocaleSerializer',
60
- policy_serializer: 'Spree::Api::V3::PolicySerializer',
61
- custom_field_serializer: 'Spree::Api::V3::CustomFieldSerializer',
62
- tax_category_serializer: 'Spree::Api::V3::TaxCategorySerializer',
63
- tax_identifier_serializer: 'Spree::Api::V3::TaxIdentifierSerializer',
64
- product_filters_serializer: 'Spree::Api::V3::ProductFiltersSerializer',
65
- product_filter_price_range_serializer: 'Spree::Api::V3::ProductFilterPriceRangeSerializer',
66
- product_filter_availability_serializer: 'Spree::Api::V3::ProductFilterAvailabilitySerializer',
67
- product_filter_availability_option_serializer: 'Spree::Api::V3::ProductFilterAvailabilityOptionSerializer',
68
- product_filter_option_serializer: 'Spree::Api::V3::ProductFilterOptionSerializer',
69
- product_filter_option_value_serializer: 'Spree::Api::V3::ProductFilterOptionValueSerializer',
70
- product_filter_category_serializer: 'Spree::Api::V3::ProductFilterCategorySerializer',
71
- product_filter_category_option_serializer: 'Spree::Api::V3::ProductFilterCategoryOptionSerializer',
72
- product_filter_sort_option_serializer: 'Spree::Api::V3::ProductFilterSortOptionSerializer',
73
-
74
- # v3 event serializers (for models without Store API endpoints yet)
75
- media_event_serializer: 'Spree::Api::V3::MediaEventSerializer',
76
- return_serializer: 'Spree::Api::V3::ReturnSerializer',
77
- return_line_item_serializer: 'Spree::Api::V3::ReturnLineItemSerializer',
78
- exchange_serializer: 'Spree::Api::V3::ExchangeSerializer',
79
- exchange_line_item_serializer: 'Spree::Api::V3::ExchangeLineItemSerializer',
80
- claim_serializer: 'Spree::Api::V3::ClaimSerializer',
81
- claim_line_item_serializer: 'Spree::Api::V3::ClaimLineItemSerializer',
82
- return_reason_serializer: 'Spree::Api::V3::ReturnReasonSerializer',
83
- claim_reason_serializer: 'Spree::Api::V3::ClaimReasonSerializer',
84
- digital_asset_serializer: 'Spree::Api::V3::DigitalAssetSerializer',
85
- export_serializer: 'Spree::Api::V3::ExportSerializer',
86
- gift_card_batch_serializer: 'Spree::Api::V3::GiftCardBatchSerializer',
87
- import_serializer: 'Spree::Api::V3::ImportSerializer',
88
- import_row_serializer: 'Spree::Api::V3::ImportRowSerializer',
89
- invitation_serializer: 'Spree::Api::V3::InvitationSerializer',
90
- newsletter_subscriber_serializer: 'Spree::Api::V3::NewsletterSubscriberSerializer',
91
- promotion_serializer: 'Spree::Api::V3::PromotionSerializer',
92
- refund_serializer: 'Spree::Api::V3::RefundSerializer',
93
- stock_level_serializer: 'Spree::Api::V3::StockLevelSerializer',
94
- stock_movement_serializer: 'Spree::Api::V3::StockMovementSerializer',
95
- stock_reservation_serializer: 'Spree::Api::V3::StockReservationSerializer',
96
- stock_transfer_serializer: 'Spree::Api::V3::StockTransferSerializer',
97
-
98
- # v3 admin serializers (API v3 Admin)
99
- admin_country_serializer: 'Spree::Api::V3::Admin::CountrySerializer',
100
- admin_state_serializer: 'Spree::Api::V3::Admin::StateSerializer',
101
- admin_applied_promotion_serializer: 'Spree::Api::V3::Admin::AppliedPromotionSerializer',
102
- admin_discount_serializer: 'Spree::Api::V3::Admin::DiscountSerializer',
103
- admin_tax_line_serializer: 'Spree::Api::V3::Admin::TaxLineSerializer',
104
- admin_cart_serializer: 'Spree::Api::V3::Admin::CartSerializer',
105
- admin_delivery_zone_serializer: 'Spree::Api::V3::Admin::DeliveryZoneSerializer',
106
- admin_delivery_profile_serializer: 'Spree::Api::V3::Admin::DeliveryProfileSerializer',
107
- admin_delivery_origin_group_serializer: 'Spree::Api::V3::Admin::DeliveryOriginGroupSerializer',
108
- admin_integration_serializer: 'Spree::Api::V3::Admin::IntegrationSerializer',
109
- admin_delivery_method_rule_serializer: 'Spree::Api::V3::Admin::DeliveryMethodRuleSerializer',
110
- admin_delivery_zone_member_serializer: 'Spree::Api::V3::Admin::DeliveryZoneMemberSerializer',
111
- admin_fee_serializer: 'Spree::Api::V3::Admin::FeeSerializer',
112
- admin_consent_record_serializer: 'Spree::Api::V3::Admin::ConsentRecordSerializer',
113
- admin_customer_serializer: 'Spree::Api::V3::Admin::CustomerSerializer',
114
- admin_data_request_serializer: 'Spree::Api::V3::Admin::DataRequestSerializer',
115
- admin_newsletter_subscriber_serializer: 'Spree::Api::V3::Admin::NewsletterSubscriberSerializer',
116
- admin_order_serializer: 'Spree::Api::V3::Admin::OrderSerializer',
117
- admin_order_group_serializer: 'Spree::Api::V3::Admin::OrderGroupSerializer',
118
- admin_product_serializer: 'Spree::Api::V3::Admin::ProductSerializer',
119
- admin_product_type_serializer: 'Spree::Api::V3::Admin::ProductTypeSerializer',
120
- admin_product_type_custom_field_definition_serializer: 'Spree::Api::V3::Admin::ProductTypeCustomFieldDefinitionSerializer',
121
- admin_variant_serializer: 'Spree::Api::V3::Admin::VariantSerializer',
122
- admin_price_serializer: 'Spree::Api::V3::Admin::PriceSerializer',
123
- admin_price_history_serializer: 'Spree::Api::V3::Admin::PriceHistorySerializer',
124
- admin_custom_field_serializer: 'Spree::Api::V3::Admin::CustomFieldSerializer',
125
- admin_custom_field_definition_serializer: 'Spree::Api::V3::Admin::CustomFieldDefinitionSerializer',
126
- admin_category_serializer: 'Spree::Api::V3::Admin::CategorySerializer',
127
- admin_collection_serializer: 'Spree::Api::V3::Admin::CollectionSerializer',
128
- admin_collection_rule_serializer: 'Spree::Api::V3::Admin::CollectionRuleSerializer',
129
- admin_line_item_serializer: 'Spree::Api::V3::Admin::LineItemSerializer',
130
- admin_option_type_serializer: 'Spree::Api::V3::Admin::OptionTypeSerializer',
131
- admin_option_value_serializer: 'Spree::Api::V3::Admin::OptionValueSerializer',
132
- admin_media_serializer: 'Spree::Api::V3::Admin::MediaSerializer',
133
- admin_stock_level_serializer: 'Spree::Api::V3::Admin::StockLevelSerializer',
134
- admin_stock_movement_serializer: 'Spree::Api::V3::Admin::StockMovementSerializer',
135
- admin_stock_transfer_serializer: 'Spree::Api::V3::Admin::StockTransferSerializer',
136
- admin_stock_transfer_item_serializer: 'Spree::Api::V3::Admin::StockTransferItemSerializer',
137
- admin_supplier_serializer: 'Spree::Api::V3::Admin::SupplierSerializer',
138
- admin_purchase_order_serializer: 'Spree::Api::V3::Admin::PurchaseOrderSerializer',
139
- admin_purchase_order_item_serializer: 'Spree::Api::V3::Admin::PurchaseOrderItemSerializer',
140
- admin_stock_receipt_serializer: 'Spree::Api::V3::Admin::StockReceiptSerializer',
141
- admin_stock_receipt_item_serializer: 'Spree::Api::V3::Admin::StockReceiptItemSerializer',
142
64
  admin_shipment_serializer: 'Spree::Api::V3::Admin::FulfillmentSerializer',
143
- admin_fulfillment_serializer: 'Spree::Api::V3::Admin::FulfillmentSerializer',
144
- admin_fulfillment_item_serializer: 'Spree::Api::V3::Admin::FulfillmentItemSerializer',
145
- admin_delivery_serializer: 'Spree::Api::V3::Admin::DeliverySerializer',
146
- admin_shipping_label_serializer: 'Spree::Api::V3::Admin::ShippingLabelSerializer',
147
- admin_gift_card_serializer: 'Spree::Api::V3::Admin::GiftCardSerializer',
148
- admin_gift_card_batch_serializer: 'Spree::Api::V3::Admin::GiftCardBatchSerializer',
149
- admin_payment_serializer: 'Spree::Api::V3::Admin::PaymentSerializer',
150
- admin_refund_serializer: 'Spree::Api::V3::Admin::RefundSerializer',
151
- admin_return_reason_serializer: 'Spree::Api::V3::Admin::ReturnReasonSerializer',
152
- admin_claim_reason_serializer: 'Spree::Api::V3::Admin::ClaimReasonSerializer',
153
- admin_refund_reason_serializer: 'Spree::Api::V3::Admin::RefundReasonSerializer',
154
- admin_order_cancellation_reason_serializer: 'Spree::Api::V3::Admin::OrderCancellationReasonSerializer',
155
- admin_return_serializer: 'Spree::Api::V3::Admin::ReturnSerializer',
156
- admin_return_line_item_serializer: 'Spree::Api::V3::Admin::ReturnLineItemSerializer',
157
- admin_exchange_serializer: 'Spree::Api::V3::Admin::ExchangeSerializer',
158
- admin_exchange_line_item_serializer: 'Spree::Api::V3::Admin::ExchangeLineItemSerializer',
159
- admin_claim_serializer: 'Spree::Api::V3::Admin::ClaimSerializer',
160
- admin_claim_line_item_serializer: 'Spree::Api::V3::Admin::ClaimLineItemSerializer',
161
- admin_package_type_serializer: 'Spree::Api::V3::Admin::PackageTypeSerializer',
162
- admin_policy_serializer: 'Spree::Api::V3::Admin::PolicySerializer',
163
- admin_tax_category_serializer: 'Spree::Api::V3::Admin::TaxCategorySerializer',
164
- admin_tax_rate_serializer: 'Spree::Api::V3::Admin::TaxRateSerializer',
165
- admin_tax_identifier_serializer: 'Spree::Api::V3::Admin::TaxIdentifierSerializer',
166
-
167
- company_serializer: 'Spree::Api::V3::CompanySerializer',
168
- company_membership_serializer: 'Spree::Api::V3::CompanyMembershipSerializer',
169
- company_invitation_serializer: 'Spree::Api::V3::CompanyInvitationSerializer',
170
- admin_company_serializer: 'Spree::Api::V3::Admin::CompanySerializer',
171
- admin_company_membership_serializer: 'Spree::Api::V3::Admin::CompanyMembershipSerializer',
172
- admin_company_invitation_serializer: 'Spree::Api::V3::Admin::CompanyInvitationSerializer',
173
- admin_catalog_serializer: 'Spree::Api::V3::Admin::CatalogSerializer',
174
- admin_catalog_price_serializer: 'Spree::Api::V3::Admin::CatalogPriceSerializer',
175
- admin_catalog_price_tier_serializer: 'Spree::Api::V3::Admin::CatalogPriceTierSerializer',
176
- admin_catalog_product_serializer: 'Spree::Api::V3::Admin::CatalogProductSerializer',
177
- admin_price_list_product_serializer: 'Spree::Api::V3::Admin::PriceListProductSerializer',
178
- admin_catalog_assignment_serializer: 'Spree::Api::V3::Admin::CatalogAssignmentSerializer',
179
- admin_catalog_quantity_rule_serializer: 'Spree::Api::V3::Admin::CatalogQuantityRuleSerializer',
180
- admin_catalog_product_term_serializer: 'Spree::Api::V3::Admin::CatalogProductTermSerializer',
181
- admin_catalog_order_minimum_serializer: 'Spree::Api::V3::Admin::CatalogOrderMinimumSerializer',
182
- admin_tax_exemption_certificate_serializer: 'Spree::Api::V3::Admin::TaxExemptionCertificateSerializer',
183
- admin_admin_user_serializer: 'Spree::Api::V3::Admin::AdminUserSerializer',
184
- admin_actor_serializer: 'Spree::Api::V3::Admin::ActorSerializer',
185
- admin_seller_team_member_serializer: 'Spree::Api::V3::Admin::SellerTeamMemberSerializer',
186
- seller_serializer: 'Spree::Api::V3::SellerSerializer',
187
- seller_profile_serializer: 'Spree::Api::V3::Seller::ProfileSerializer',
188
- seller_policy_serializer: 'Spree::Api::V3::Seller::PolicySerializer',
189
- seller_team_member_serializer: 'Spree::Api::V3::Seller::TeamMemberSerializer',
190
- seller_account_serializer: 'Spree::Api::V3::Seller::AccountSerializer',
191
- seller_invitation_serializer: 'Spree::Api::V3::Seller::InvitationSerializer',
192
- seller_invitation_acceptance_link_serializer: 'Spree::Api::V3::Seller::InvitationAcceptanceLinkSerializer',
193
- seller_product_serializer: 'Spree::Api::V3::Seller::ProductSerializer',
194
- seller_product_type_serializer: 'Spree::Api::V3::Seller::ProductTypeSerializer',
195
- seller_delivery_profile_serializer: 'Spree::Api::V3::Seller::DeliveryProfileSerializer',
196
- seller_delivery_method_serializer: 'Spree::Api::V3::Seller::DeliveryMethodSerializer',
197
- seller_delivery_method_rule_serializer: 'Spree::Api::V3::Seller::DeliveryMethodRuleSerializer',
198
- seller_delivery_zone_serializer: 'Spree::Api::V3::Seller::DeliveryZoneSerializer',
199
- seller_variant_serializer: 'Spree::Api::V3::Seller::VariantSerializer',
200
- seller_media_serializer: 'Spree::Api::V3::Seller::MediaSerializer',
201
- seller_stock_level_serializer: 'Spree::Api::V3::Seller::StockLevelSerializer',
202
- seller_order_serializer: 'Spree::Api::V3::Seller::OrderSerializer',
203
- seller_order_line_item_serializer: 'Spree::Api::V3::Seller::OrderLineItemSerializer',
204
- seller_fulfillment_serializer: 'Spree::Api::V3::Seller::FulfillmentSerializer',
205
- seller_fulfillment_item_serializer: 'Spree::Api::V3::Seller::FulfillmentItemSerializer',
206
- seller_delivery_serializer: 'Spree::Api::V3::Seller::DeliverySerializer',
207
- seller_delivery_rate_serializer: 'Spree::Api::V3::Seller::DeliveryRateSerializer',
208
- seller_shipping_label_serializer: 'Spree::Api::V3::Seller::ShippingLabelSerializer',
209
- seller_return_serializer: 'Spree::Api::V3::Seller::ReturnSerializer',
210
- seller_return_line_item_serializer: 'Spree::Api::V3::Seller::ReturnLineItemSerializer',
211
- seller_exchange_serializer: 'Spree::Api::V3::Seller::ExchangeSerializer',
212
- seller_exchange_line_item_serializer: 'Spree::Api::V3::Seller::ExchangeLineItemSerializer',
213
- seller_claim_serializer: 'Spree::Api::V3::Seller::ClaimSerializer',
214
- seller_claim_line_item_serializer: 'Spree::Api::V3::Seller::ClaimLineItemSerializer',
215
- seller_reason_serializer: 'Spree::Api::V3::Seller::ReasonSerializer',
216
- seller_package_type_serializer: 'Spree::Api::V3::Seller::PackageTypeSerializer',
217
- seller_stock_location_serializer: 'Spree::Api::V3::Seller::StockLocationSerializer',
218
- seller_requirement_custom_field_serializer: 'Spree::Api::V3::Seller::RequirementCustomFieldSerializer',
219
- seller_tax_identifier_serializer: 'Spree::Api::V3::Seller::TaxIdentifierSerializer',
220
- seller_requirement_status_serializer: 'Spree::Api::V3::Seller::RequirementStatusSerializer',
221
- seller_import_serializer: 'Spree::Api::V3::Seller::ImportSerializer',
222
- seller_import_row_serializer: 'Spree::Api::V3::Seller::ImportRowSerializer',
223
- seller_import_mapping_serializer: 'Spree::Api::V3::Seller::ImportMappingSerializer',
224
65
  product_submission_serializer: 'Spree::Api::V3::Seller::ProductSubmissionSerializer',
225
- admin_product_submission_serializer: 'Spree::Api::V3::Admin::ProductSubmissionSerializer',
226
- seller_requirement_submission_serializer: 'Spree::Api::V3::Seller::RequirementSubmissionSerializer',
227
- seller_export_serializer: 'Spree::Api::V3::Seller::ExportSerializer',
228
- admin_seller_serializer: 'Spree::Api::V3::Admin::SellerSerializer',
229
- admin_seller_requirement_serializer: 'Spree::Api::V3::Admin::SellerRequirementSerializer',
230
- admin_seller_requirement_submission_serializer: 'Spree::Api::V3::Admin::SellerRequirementSubmissionSerializer',
231
- admin_seller_requirement_status_serializer: 'Spree::Api::V3::Admin::SellerRequirementStatusSerializer',
232
- admin_commission_rate_serializer: 'Spree::Api::V3::Admin::CommissionRateSerializer',
233
- admin_commission_rule_serializer: 'Spree::Api::V3::Admin::CommissionRuleSerializer',
234
- admin_commission_line_serializer: 'Spree::Api::V3::Admin::CommissionLineSerializer',
235
- admin_seller_transfer_serializer: 'Spree::Api::V3::Admin::SellerTransferSerializer',
236
- admin_seller_payout_serializer: 'Spree::Api::V3::Admin::SellerPayoutSerializer',
237
- admin_seller_balance_serializer: 'Spree::Api::V3::Admin::SellerBalanceSerializer',
238
- admin_payment_split_serializer: 'Spree::Api::V3::Admin::PaymentSplitSerializer',
239
- seller_transfer_serializer: 'Spree::Api::V3::Seller::TransferSerializer',
240
- seller_payout_serializer: 'Spree::Api::V3::Seller::PayoutSerializer',
241
- seller_balance_serializer: 'Spree::Api::V3::Seller::BalanceSerializer',
242
- seller_payment_split_serializer: 'Spree::Api::V3::Seller::PaymentSplitSerializer',
243
- admin_address_serializer: 'Spree::Api::V3::Admin::AddressSerializer',
244
- admin_channel_serializer: 'Spree::Api::V3::Admin::ChannelSerializer',
245
- admin_order_routing_rule_serializer: 'Spree::Api::V3::Admin::OrderRoutingRuleSerializer',
246
- admin_product_publication_serializer: 'Spree::Api::V3::Admin::ProductPublicationSerializer',
247
- admin_market_serializer: 'Spree::Api::V3::Admin::MarketSerializer',
248
66
  admin_shipping_method_serializer: 'Spree::Api::V3::Admin::DeliveryMethodSerializer',
249
- admin_delivery_method_serializer: 'Spree::Api::V3::Admin::DeliveryMethodSerializer',
250
- admin_delivery_method_service_serializer: 'Spree::Api::V3::Admin::DeliveryMethodServiceSerializer',
251
- admin_stock_location_serializer: 'Spree::Api::V3::Admin::StockLocationSerializer',
252
- admin_stock_reservation_serializer: 'Spree::Api::V3::Admin::StockReservationSerializer',
253
- admin_shipping_rate_serializer: 'Spree::Api::V3::Admin::DeliveryRateSerializer',
254
- admin_delivery_rate_serializer: 'Spree::Api::V3::Admin::DeliveryRateSerializer',
255
- admin_freight_summary_serializer: 'Spree::Api::V3::Admin::FreightSummarySerializer',
256
- admin_freight_summary_line_serializer: 'Spree::Api::V3::Admin::FreightSummaryLineSerializer',
257
- admin_payment_method_serializer: 'Spree::Api::V3::Admin::PaymentMethodSerializer',
258
- admin_credit_card_serializer: 'Spree::Api::V3::Admin::CreditCardSerializer',
259
- admin_store_credit_serializer: 'Spree::Api::V3::Admin::StoreCreditSerializer',
260
- admin_store_credit_event_serializer: 'Spree::Api::V3::Admin::StoreCreditEventSerializer',
261
- admin_customer_group_serializer: 'Spree::Api::V3::Admin::CustomerGroupSerializer',
262
- admin_payment_source_serializer: 'Spree::Api::V3::Admin::PaymentSourceSerializer',
263
- admin_digital_asset_serializer: 'Spree::Api::V3::Admin::DigitalAssetSerializer',
264
- admin_digital_link_serializer: 'Spree::Api::V3::Admin::DigitalLinkSerializer',
265
- admin_store_serializer: 'Spree::Api::V3::Admin::StoreSerializer',
266
- admin_setup_task_serializer: 'Spree::Api::V3::Admin::SetupTaskSerializer',
267
- admin_api_key_serializer: 'Spree::Api::V3::Admin::ApiKeySerializer',
268
- admin_allowed_origin_serializer: 'Spree::Api::V3::Admin::AllowedOriginSerializer',
269
- admin_webhook_endpoint_serializer: 'Spree::Api::V3::Admin::WebhookEndpointSerializer',
270
- admin_webhook_delivery_serializer: 'Spree::Api::V3::Admin::WebhookDeliverySerializer',
271
- admin_invitation_serializer: 'Spree::Api::V3::Admin::InvitationSerializer',
272
- admin_invitation_acceptance_link_serializer: 'Spree::Api::V3::Admin::InvitationAcceptanceLinkSerializer',
273
- admin_role_serializer: 'Spree::Api::V3::Admin::RoleSerializer',
274
- admin_permission_serializer: 'Spree::Api::V3::Admin::PermissionSerializer',
275
- admin_export_serializer: 'Spree::Api::V3::Admin::ExportSerializer',
276
- admin_saved_report_serializer: 'Spree::Api::V3::Admin::SavedReportSerializer',
277
- admin_import_serializer: 'Spree::Api::V3::Admin::ImportSerializer',
278
- admin_import_row_serializer: 'Spree::Api::V3::Admin::ImportRowSerializer',
279
- admin_import_mapping_serializer: 'Spree::Api::V3::Admin::ImportMappingSerializer',
280
- admin_promotion_serializer: 'Spree::Api::V3::Admin::PromotionSerializer',
281
- admin_promotion_action_serializer: 'Spree::Api::V3::Admin::PromotionActionSerializer',
282
- admin_promotion_rule_serializer: 'Spree::Api::V3::Admin::PromotionRuleSerializer',
283
- admin_coupon_code_serializer: 'Spree::Api::V3::Admin::CouponCodeSerializer',
284
- admin_price_adjustment_tier_serializer: 'Spree::Api::V3::Admin::PriceAdjustmentTierSerializer',
285
- admin_price_list_serializer: 'Spree::Api::V3::Admin::PriceListSerializer',
286
- admin_price_rule_serializer: 'Spree::Api::V3::Admin::PriceRuleSerializer',
287
- admin_resource_translations_serializer: 'Spree::Api::V3::Admin::ResourceTranslationsSerializer',
67
+ admin_shipping_rate_serializer: 'Spree::Api::V3::Admin::DeliveryRateSerializer'
288
68
  }
289
69
 
290
70
  include Spree::DependenciesHelper
@@ -2,13 +2,24 @@ module Spree
2
2
  module Api
3
3
  module Middleware
4
4
  class RequestSizeLimit
5
+ # `POST /files` takes a file's bytes in the request itself, so it is
6
+ # held to the multipart upload limit instead, plus room for the other
7
+ # form fields.
8
+ FILE_UPLOAD_PATH = %r{\A/api/v3/(admin|seller)/files/?\z}
9
+ MULTIPART_ENVELOPE = 64.kilobytes
10
+
5
11
  def initialize(app, limit: nil)
6
12
  @app = app
7
13
  @limit = limit
8
14
  end
9
15
 
10
16
  def call(env)
11
- if api_request?(env) && content_length_exceeded?(env)
17
+ if file_upload?(env) && chunked?(env)
18
+ # A chunked body has no length to check here, and these bytes pass
19
+ # through the application.
20
+ body = { error: { code: 'request_too_large', message: 'Send the file with a Content-Length header' } }
21
+ [411, { 'Content-Type' => 'application/json' }, [body.to_json]]
22
+ elsif api_request?(env) && content_length_exceeded?(env)
12
23
  body = { error: { code: 'request_too_large', message: 'Request body too large' } }
13
24
  [413, { 'Content-Type' => 'application/json' }, [body.to_json]]
14
25
  else
@@ -24,12 +35,22 @@ module Spree
24
35
 
25
36
  def content_length_exceeded?(env)
26
37
  content_length = env['CONTENT_LENGTH'].to_i
27
- content_length > max_body_size
38
+ content_length > max_body_size(env)
28
39
  end
29
40
 
30
- def max_body_size
41
+ def max_body_size(env)
42
+ return Spree::Config[:max_multipart_upload_size] + MULTIPART_ENVELOPE if file_upload?(env)
43
+
31
44
  @limit || Spree::Api::Config[:max_request_body_size]
32
45
  end
46
+
47
+ def chunked?(env)
48
+ env['CONTENT_LENGTH'].nil? && env['HTTP_TRANSFER_ENCODING'].to_s.include?('chunked')
49
+ end
50
+
51
+ def file_upload?(env)
52
+ env['REQUEST_METHOD'] == 'POST' && FILE_UPLOAD_PATH.match?(env['PATH_INFO'])
53
+ end
33
54
  end
34
55
  end
35
56
  end
@@ -0,0 +1,136 @@
1
+ module Spree
2
+ module Api
3
+ module OpenAPI
4
+ # Turns one list endpoint's filter table into what a reader of the API
5
+ # reference sees: `q[search]` and the other scopes as named query
6
+ # parameters, and the attribute filters as a table rendered above the
7
+ # endpoint (Mintlify's `x-mint.content`).
8
+ class FilterDocumentation
9
+ KIND_LABELS = {
10
+ 'text' => 'Text', 'decimal' => 'Amount', 'integer' => 'Number', 'date' => 'Date',
11
+ 'datetime' => 'Date and time', 'id' => 'Prefixed ID', 'type' => 'Type', 'boolean' => 'True or false'
12
+ }.freeze
13
+
14
+ SCOPE_SCHEMAS = {
15
+ 'boolean' => { type: :boolean }, 'integer' => { type: :integer }, 'decimal' => { type: :number }
16
+ }.freeze
17
+
18
+ # Raised when an endpoint offers `q[search]` and nothing says what it matches.
19
+ class MissingSearchDescription < StandardError; end
20
+
21
+ # @param endpoint [Spree::Api::V3::FilterTable::Endpoint]
22
+ # @param querying_path [String] the docs page explaining predicates
23
+ # @param search [String, nil] what `q[search]` matches, for a model
24
+ # whose search is not declared with `search_by`
25
+ # @param scopes [Hash{String => String}] descriptions for other scopes
26
+ def initialize(endpoint, querying_path:, search: nil, scopes: {})
27
+ @endpoint = endpoint
28
+ @table = endpoint.table
29
+ @querying_path = querying_path
30
+ @search = search
31
+ @scopes = scopes.stringify_keys
32
+ end
33
+
34
+ # @return [Array<Hash>] rswag parameter definitions, `q[search]` first
35
+ def parameters
36
+ names = @table.scopes.keys.sort_by { |scope| scope == 'search' ? '' : scope }
37
+ names.map { |scope| scope_parameter(scope, @table.scopes[scope]) }
38
+ end
39
+
40
+ # @return [String] MDX for the endpoint page
41
+ def content
42
+ lines = ['## Filters', '']
43
+ lines << "Filter with `q[<attribute>_<predicate>]=value`, for example `#{example_key}`. Send a list as " \
44
+ "`q[<attribute>_in][]=a&q[<attribute>_in][]=b`. [How filters work](#{@querying_path})."
45
+ lines << ''
46
+ lines.concat(attribute_rows(@table))
47
+
48
+ associations = association_rows
49
+ if associations.any?
50
+ lines << '' << '<Accordion title="Filters through associations">' << ''
51
+ lines << 'Prefix an associated record\'s attribute with the association, as in ' \
52
+ "`q[#{associations.first[0]}id_eq]`. The same predicates apply." << ''
53
+ lines << '| Prefix | Attributes |' << '|---|---|'
54
+ associations.each { |prefix, attributes| lines << "| `#{prefix}` | #{attributes.map { |name| "`#{name}`" }.join(', ')} |" }
55
+ lines << '' << '</Accordion>'
56
+ end
57
+
58
+ if @endpoint.to_h['custom_fields']
59
+ lines << '' << "Also filters and sorts on the store's searchable custom fields, as " \
60
+ '`q[cf_<namespace>_<key>_<predicate>]` and `sort=cf_<namespace>_<key>`.'
61
+ end
62
+
63
+ sortable = @endpoint.sortable - @table.aliased_attributes
64
+ if sortable.any?
65
+ lines << '' << "**Sort by:** #{sortable.map { |field| "`#{field}`" }.join(', ')}. " \
66
+ 'Prefix a field with `-` to sort descending.'
67
+ end
68
+
69
+ lines.join("\n")
70
+ end
71
+
72
+ private
73
+
74
+ def scope_parameter(scope, type)
75
+ list = type.is_a?(Hash) || type.is_a?(Array)
76
+ {
77
+ name: list ? "q[#{scope}][]" : "q[#{scope}]",
78
+ in: :query,
79
+ required: false,
80
+ schema: scope_schema(type),
81
+ description: scope == 'search' ? search_description : @scopes.fetch(scope) { default_scope_description(scope, type) }
82
+ }
83
+ end
84
+
85
+ def scope_schema(type)
86
+ case type
87
+ when Hash then { type: :array, items: scope_schema(type['list']) }
88
+ when Array then { type: :array, items: scope_schema(type.first), minItems: type.size, maxItems: type.size }
89
+ else SCOPE_SCHEMAS.fetch(type, { type: :string })
90
+ end
91
+ end
92
+
93
+ def search_description
94
+ return @search if @search
95
+
96
+ attributes = @table.model.search_attributes
97
+ raise MissingSearchDescription, "#{@table.model.name}.search has no description; pass `search:` to filter_parameters_for" if attributes.empty?
98
+
99
+ "Matches any of #{attributes.map { |path| path.tr('_', ' ') }.to_sentence} (partial, case-insensitive)."
100
+ end
101
+
102
+ def default_scope_description(scope, type)
103
+ type == 'boolean' ? "Set to `true` to apply `#{scope}`." : "Applies `#{scope}` to the given value."
104
+ end
105
+
106
+ def attribute_rows(table)
107
+ rows = ['| Attribute | Kind | Predicates |', '|---|---|---|']
108
+ table.attributes.except(*table.aliased_attributes).each do |attribute, kind|
109
+ label = kind.is_a?(Hash) ? "One of #{kind['enum'].map { |value| "`#{value}`" }.join(', ')}" : KIND_LABELS.fetch(kind)
110
+ predicates = Spree::Api::V3::FilterPredicates::BY_KIND.fetch(kind.is_a?(Hash) ? 'enum' : kind)
111
+ rows << "| `#{attribute}` | #{label} | #{predicates.map { |predicate| "`#{predicate}`" }.join(' ')} |"
112
+ end
113
+ rows
114
+ end
115
+
116
+ def association_rows
117
+ visible = ->(table) { table.attributes.keys - table.aliased_attributes }
118
+ @table.associations.flat_map do |name, associated|
119
+ nested = associated.associations.reject { |_, table| table.model == @table.model }
120
+ [["#{name}_", visible.(associated)]] + nested.map { |hop, table| ["#{name}_#{hop}_", visible.(table)] }
121
+ end
122
+ end
123
+
124
+ def example_key
125
+ texts = @table.attributes.select { |_, value| value == 'text' }
126
+ attribute = (%w[number name code email] & texts.keys).first || texts.keys.first
127
+ kind = 'text' if attribute
128
+ attribute, kind = @table.attributes.first if attribute.nil?
129
+ return 'q[id_eq]=…' if attribute.nil?
130
+
131
+ kind == 'text' ? "q[#{attribute}_cont]=…" : "q[#{attribute}_eq]=…"
132
+ end
133
+ end
134
+ end
135
+ end
136
+ end