spree_api 6.0.0.rc1 → 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.
- checksums.yaml +4 -4
- data/Rakefile +0 -17
- data/app/controllers/concerns/spree/api/v3/admin/product_membership.rb +10 -0
- data/app/controllers/concerns/spree/api/v3/admin/stock_receipt_actions.rb +26 -4
- data/app/controllers/concerns/spree/api/v3/admin/subclassed_resource.rb +14 -28
- data/app/controllers/concerns/spree/api/v3/admin/validation_details.rb +1 -1
- data/app/controllers/concerns/spree/api/v3/cart_resolvable.rb +3 -2
- data/app/controllers/concerns/spree/api/v3/channel_resolution.rb +1 -1
- data/app/controllers/concerns/spree/api/v3/company_address_writes.rb +3 -1
- data/app/controllers/concerns/spree/api/v3/error_handler.rb +48 -2
- data/app/controllers/concerns/spree/api/v3/file_uploads.rb +35 -0
- data/app/controllers/concerns/spree/api/v3/money_params.rb +52 -0
- data/app/controllers/concerns/spree/api/v3/orders/claim_actions.rb +1 -5
- data/app/controllers/concerns/spree/api/v3/orders/delivery_actions.rb +6 -6
- data/app/controllers/concerns/spree/api/v3/orders/exchange_actions.rb +1 -4
- data/app/controllers/concerns/spree/api/v3/orders/fulfillment_actions.rb +1 -5
- data/app/controllers/concerns/spree/api/v3/orders/return_actions.rb +1 -4
- data/app/controllers/concerns/spree/api/v3/orders/shipping_label_actions.rb +5 -21
- data/app/controllers/concerns/spree/api/v3/params_normalizer.rb +5 -0
- data/app/controllers/concerns/spree/api/v3/purchase_serialization.rb +26 -0
- data/app/controllers/concerns/spree/api/v3/request_params.rb +65 -0
- data/app/controllers/concerns/spree/api/v3/strict_money_params.rb +94 -0
- data/app/controllers/spree/api/v3/admin/admin_users_controller.rb +10 -1
- data/app/controllers/spree/api/v3/admin/allowed_origins_controller.rb +8 -1
- data/app/controllers/spree/api/v3/admin/api_keys_controller.rb +15 -7
- data/app/controllers/spree/api/v3/admin/base_controller.rb +1 -0
- data/app/controllers/spree/api/v3/admin/catalogs/order_minimums_controller.rb +3 -1
- data/app/controllers/spree/api/v3/admin/catalogs/quantity_rules_controller.rb +7 -5
- data/app/controllers/spree/api/v3/admin/catalogs_controller.rb +60 -33
- data/app/controllers/spree/api/v3/admin/categories/products_controller.rb +4 -1
- data/app/controllers/spree/api/v3/admin/categories_controller.rb +40 -20
- data/app/controllers/spree/api/v3/admin/channels_controller.rb +39 -6
- data/app/controllers/spree/api/v3/admin/claim_reasons_controller.rb +5 -1
- data/app/controllers/spree/api/v3/admin/collections/products_controller.rb +4 -1
- data/app/controllers/spree/api/v3/admin/collections_controller.rb +44 -15
- data/app/controllers/spree/api/v3/admin/commission_rates_controller.rb +60 -12
- data/app/controllers/spree/api/v3/admin/companies/addresses_controller.rb +11 -0
- data/app/controllers/spree/api/v3/admin/companies/memberships_controller.rb +9 -1
- data/app/controllers/spree/api/v3/admin/companies/tax_exemption_certificates_controller.rb +19 -18
- data/app/controllers/spree/api/v3/admin/companies/tax_identifiers_controller.rb +6 -1
- data/app/controllers/spree/api/v3/admin/companies_controller.rb +17 -3
- data/app/controllers/spree/api/v3/admin/countries_controller.rb +5 -1
- data/app/controllers/spree/api/v3/admin/custom_field_definitions_controller.rb +21 -11
- data/app/controllers/spree/api/v3/admin/custom_fields_controller.rb +12 -5
- data/app/controllers/spree/api/v3/admin/customer_groups_controller.rb +9 -1
- data/app/controllers/spree/api/v3/admin/customers/addresses_controller.rb +12 -7
- data/app/controllers/spree/api/v3/admin/customers/store_credits_controller.rb +11 -9
- data/app/controllers/spree/api/v3/admin/customers/tax_identifiers_controller.rb +6 -1
- data/app/controllers/spree/api/v3/admin/customers_controller.rb +35 -7
- data/app/controllers/spree/api/v3/admin/data_requests_controller.rb +8 -0
- data/app/controllers/spree/api/v3/admin/delivery_method_rules_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/delivery_methods/rules_controller.rb +15 -7
- data/app/controllers/spree/api/v3/admin/delivery_methods_controller.rb +92 -57
- data/app/controllers/spree/api/v3/admin/delivery_profiles/origin_groups_controller.rb +8 -1
- data/app/controllers/spree/api/v3/admin/delivery_profiles_controller.rb +13 -1
- data/app/controllers/spree/api/v3/admin/delivery_zones_controller.rb +21 -5
- data/app/controllers/spree/api/v3/admin/email_templates/drafts_controller.rb +14 -1
- data/app/controllers/spree/api/v3/admin/email_templates/previews_controller.rb +4 -0
- data/app/controllers/spree/api/v3/admin/email_templates/publications_controller.rb +7 -0
- data/app/controllers/spree/api/v3/admin/email_templates/restorations_controller.rb +8 -0
- data/app/controllers/spree/api/v3/admin/email_templates/test_emails_controller.rb +4 -0
- data/app/controllers/spree/api/v3/admin/exports_controller.rb +23 -6
- data/app/controllers/spree/api/v3/admin/files_controller.rb +29 -0
- data/app/controllers/spree/api/v3/admin/gift_card_batches_controller.rb +20 -1
- data/app/controllers/spree/api/v3/admin/gift_cards_controller.rb +19 -1
- data/app/controllers/spree/api/v3/admin/imports_controller.rb +36 -9
- data/app/controllers/spree/api/v3/admin/integrations_controller.rb +13 -1
- data/app/controllers/spree/api/v3/admin/invitation_acceptances_controller.rb +9 -2
- data/app/controllers/spree/api/v3/admin/invitations_controller.rb +8 -1
- data/app/controllers/spree/api/v3/admin/locales_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/markets_controller.rb +30 -9
- data/app/controllers/spree/api/v3/admin/me_controller.rb +12 -3
- data/app/controllers/spree/api/v3/admin/media_controller.rb +22 -9
- data/app/controllers/spree/api/v3/admin/media_library_controller.rb +4 -0
- data/app/controllers/spree/api/v3/admin/option_types_controller.rb +24 -7
- data/app/controllers/spree/api/v3/admin/order_cancellation_reasons_controller.rb +5 -1
- data/app/controllers/spree/api/v3/admin/order_routing_rules_controller.rb +13 -1
- data/app/controllers/spree/api/v3/admin/orders/claims_controller.rb +39 -1
- data/app/controllers/spree/api/v3/admin/orders/deliveries_controller.rb +19 -1
- data/app/controllers/spree/api/v3/admin/orders/discount_codes_controller.rb +5 -1
- data/app/controllers/spree/api/v3/admin/orders/discounts_controller.rb +29 -5
- data/app/controllers/spree/api/v3/admin/orders/exchanges_controller.rb +36 -1
- data/app/controllers/spree/api/v3/admin/orders/fees_controller.rb +22 -1
- data/app/controllers/spree/api/v3/admin/orders/fulfillments_controller.rb +66 -7
- data/app/controllers/spree/api/v3/admin/orders/gift_cards_controller.rb +6 -2
- data/app/controllers/spree/api/v3/admin/orders/items_controller.rb +11 -1
- data/app/controllers/spree/api/v3/admin/orders/labels_controller.rb +35 -2
- data/app/controllers/spree/api/v3/admin/orders/payments_controller.rb +16 -5
- data/app/controllers/spree/api/v3/admin/orders/refunds_controller.rb +6 -0
- data/app/controllers/spree/api/v3/admin/orders/returns_controller.rb +37 -1
- data/app/controllers/spree/api/v3/admin/orders/store_credits_controller.rb +6 -3
- data/app/controllers/spree/api/v3/admin/orders_controller.rb +74 -60
- data/app/controllers/spree/api/v3/admin/package_types_controller.rb +30 -5
- data/app/controllers/spree/api/v3/admin/password_resets_controller.rb +17 -0
- data/app/controllers/spree/api/v3/admin/payment_methods_controller.rb +38 -22
- data/app/controllers/spree/api/v3/admin/policies_controller.rb +8 -4
- data/app/controllers/spree/api/v3/admin/price_lists_controller.rb +27 -15
- data/app/controllers/spree/api/v3/admin/prices_controller.rb +51 -4
- data/app/controllers/spree/api/v3/admin/product_types_controller.rb +25 -8
- data/app/controllers/spree/api/v3/admin/products/digital_assets_controller.rb +27 -10
- data/app/controllers/spree/api/v3/admin/products/variants_controller.rb +9 -14
- data/app/controllers/spree/api/v3/admin/products_controller.rb +121 -70
- data/app/controllers/spree/api/v3/admin/promotion_actions_controller.rb +11 -2
- data/app/controllers/spree/api/v3/admin/promotion_rules_controller.rb +10 -1
- data/app/controllers/spree/api/v3/admin/promotions_controller.rb +50 -14
- data/app/controllers/spree/api/v3/admin/purchase_orders_controller.rb +54 -7
- data/app/controllers/spree/api/v3/admin/refund_reasons_controller.rb +5 -1
- data/app/controllers/spree/api/v3/admin/reporting/saved_reports_controller.rb +9 -1
- data/app/controllers/spree/api/v3/admin/reporting_controller.rb +34 -0
- data/app/controllers/spree/api/v3/admin/resource_controller.rb +1 -0
- data/app/controllers/spree/api/v3/admin/return_reasons_controller.rb +5 -1
- data/app/controllers/spree/api/v3/admin/roles_controller.rb +13 -1
- data/app/controllers/spree/api/v3/admin/seller_payouts_controller.rb +6 -0
- data/app/controllers/spree/api/v3/admin/seller_requirement_submissions_controller.rb +15 -0
- data/app/controllers/spree/api/v3/admin/seller_requirements_controller.rb +32 -6
- data/app/controllers/spree/api/v3/admin/sellers_controller.rb +75 -22
- data/app/controllers/spree/api/v3/admin/setup_controller.rb +54 -15
- data/app/controllers/spree/api/v3/admin/stock_levels_controller.rb +38 -9
- data/app/controllers/spree/api/v3/admin/stock_locations_controller.rb +41 -9
- data/app/controllers/spree/api/v3/admin/stock_transfers_controller.rb +48 -7
- data/app/controllers/spree/api/v3/admin/store_controller.rb +122 -53
- data/app/controllers/spree/api/v3/admin/store_credits_controller.rb +1 -7
- data/app/controllers/spree/api/v3/admin/suppliers_controller.rb +16 -6
- data/app/controllers/spree/api/v3/admin/tax_categories_controller.rb +7 -4
- data/app/controllers/spree/api/v3/admin/tax_rates_controller.rb +21 -3
- data/app/controllers/spree/api/v3/admin/tracking_carriers_controller.rb +4 -0
- data/app/controllers/spree/api/v3/admin/translations/batches_controller.rb +17 -9
- data/app/controllers/spree/api/v3/admin/translations_controller.rb +4 -0
- data/app/controllers/spree/api/v3/admin/translations_coverage_controller.rb +5 -0
- data/app/controllers/spree/api/v3/admin/updates_controller.rb +39 -0
- data/app/controllers/spree/api/v3/admin/webhook_endpoints_controller.rb +23 -1
- data/app/controllers/spree/api/v3/base_controller.rb +2 -0
- data/app/controllers/spree/api/v3/resource_controller.rb +63 -10
- data/app/controllers/spree/api/v3/seller/auth_controller.rb +8 -0
- data/app/controllers/spree/api/v3/seller/base_controller.rb +1 -0
- data/app/controllers/spree/api/v3/seller/countries_controller.rb +2 -2
- data/app/controllers/spree/api/v3/seller/delivery_methods_controller.rb +49 -60
- data/app/controllers/spree/api/v3/seller/exports_controller.rb +18 -1
- data/app/controllers/spree/api/v3/seller/files_controller.rb +27 -0
- data/app/controllers/spree/api/v3/seller/imports_controller.rb +25 -9
- data/app/controllers/spree/api/v3/seller/invitation_acceptances_controller.rb +9 -1
- data/app/controllers/spree/api/v3/seller/me_controller.rb +14 -3
- data/app/controllers/spree/api/v3/seller/onboarding_controller.rb +11 -0
- data/app/controllers/spree/api/v3/seller/orders/claims_controller.rb +35 -0
- data/app/controllers/spree/api/v3/seller/orders/deliveries_controller.rb +12 -0
- data/app/controllers/spree/api/v3/seller/orders/exchanges_controller.rb +33 -0
- data/app/controllers/spree/api/v3/seller/orders/fulfillments_controller.rb +28 -2
- data/app/controllers/spree/api/v3/seller/orders/labels_controller.rb +22 -1
- data/app/controllers/spree/api/v3/seller/orders/notes_controller.rb +8 -1
- data/app/controllers/spree/api/v3/seller/orders/returns_controller.rb +32 -0
- data/app/controllers/spree/api/v3/seller/orders_controller.rb +35 -14
- data/app/controllers/spree/api/v3/seller/package_types_controller.rb +21 -9
- data/app/controllers/spree/api/v3/seller/password_resets_controller.rb +10 -0
- data/app/controllers/spree/api/v3/seller/policies_controller.rb +12 -4
- data/app/controllers/spree/api/v3/seller/products_controller.rb +114 -28
- data/app/controllers/spree/api/v3/seller/profile_controller.rb +33 -10
- data/app/controllers/spree/api/v3/seller/requirement_submissions_controller.rb +12 -5
- data/app/controllers/spree/api/v3/seller/resource_controller.rb +12 -0
- data/app/controllers/spree/api/v3/seller/stock_locations_controller.rb +44 -13
- data/app/controllers/spree/api/v3/seller/tax_identifiers_controller.rb +10 -1
- data/app/controllers/spree/api/v3/seller/team_controller.rb +4 -0
- data/app/controllers/spree/api/v3/store/auth_controller.rb +10 -0
- data/app/controllers/spree/api/v3/store/carts/discount_codes_controller.rb +8 -1
- data/app/controllers/spree/api/v3/store/carts/fulfillments_controller.rb +10 -2
- data/app/controllers/spree/api/v3/store/carts/gift_cards_controller.rb +8 -1
- data/app/controllers/spree/api/v3/store/carts/items_controller.rb +17 -5
- data/app/controllers/spree/api/v3/store/carts/payment_sessions_controller.rb +20 -6
- data/app/controllers/spree/api/v3/store/carts/payments_controller.rb +11 -0
- data/app/controllers/spree/api/v3/store/carts/po_documents_controller.rb +24 -26
- data/app/controllers/spree/api/v3/store/carts/store_credits_controller.rb +7 -1
- data/app/controllers/spree/api/v3/store/carts/tax_identifiers_controller.rb +5 -1
- data/app/controllers/spree/api/v3/store/carts_controller.rb +56 -47
- data/app/controllers/spree/api/v3/store/companies/addresses_controller.rb +12 -4
- data/app/controllers/spree/api/v3/store/companies/members_controller.rb +4 -0
- data/app/controllers/spree/api/v3/store/companies_controller.rb +5 -1
- data/app/controllers/spree/api/v3/store/company_invitations_controller.rb +9 -1
- data/app/controllers/spree/api/v3/store/customer/addresses_controller.rb +8 -7
- data/app/controllers/spree/api/v3/store/customer/data_requests_controller.rb +5 -0
- data/app/controllers/spree/api/v3/store/customer/password_resets_controller.rb +17 -0
- data/app/controllers/spree/api/v3/store/customer/payment_setup_sessions_controller.rb +10 -5
- data/app/controllers/spree/api/v3/store/customer/tax_identifiers_controller.rb +5 -1
- data/app/controllers/spree/api/v3/store/customers_controller.rb +28 -2
- data/app/controllers/spree/api/v3/store/newsletter_subscribers_controller.rb +22 -0
- data/app/controllers/spree/api/v3/store/orders/claims_controller.rb +11 -2
- data/app/controllers/spree/api/v3/store/orders/returns_controller.rb +10 -1
- data/app/controllers/spree/api/v3/store/orders_controller.rb +47 -10
- data/app/controllers/spree/api/v3/store/products_controller.rb +8 -0
- data/app/controllers/spree/api/v3/store/wishlist_items_controller.rb +10 -4
- data/app/controllers/spree/api/v3/store/wishlists_controller.rb +12 -4
- data/app/request_schemas/spree/api/v3/address_request_schema.rb +27 -0
- data/app/request_schemas/spree/api/v3/admin/address_request_schema.rb +13 -0
- data/app/request_schemas/spree/api/v3/admin/bulk_tags_request_schema.rb +17 -0
- data/app/request_schemas/spree/api/v3/admin/catalog_order_minimum_request_schema.rb +17 -0
- data/app/request_schemas/spree/api/v3/admin/email_template_language_request_schema.rb +17 -0
- data/app/request_schemas/spree/api/v3/admin/email_template_preview_request_schema.rb +32 -0
- data/app/request_schemas/spree/api/v3/admin/price_adjustment_tier_request_schema.rb +21 -0
- data/app/request_schemas/spree/api/v3/admin/price_list_price_request_schema.rb +21 -0
- data/app/request_schemas/spree/api/v3/admin/price_list_rule_request_schema.rb +19 -0
- data/app/request_schemas/spree/api/v3/admin/product_membership_reposition_request_schema.rb +17 -0
- data/app/request_schemas/spree/api/v3/admin/promotion_action_calculator_request_schema.rb +18 -0
- data/app/request_schemas/spree/api/v3/admin/promotion_action_line_item_request_schema.rb +15 -0
- data/app/request_schemas/spree/api/v3/admin/promotion_action_request_schema.rb +19 -0
- data/app/request_schemas/spree/api/v3/admin/promotion_rule_request_schema.rb +22 -0
- data/app/request_schemas/spree/api/v3/admin/reason_request_schema.rb +14 -0
- data/app/request_schemas/spree/api/v3/admin/tax_identifier_request_schema.rb +15 -0
- data/app/request_schemas/spree/api/v3/custom_field_value_request_schema.rb +15 -0
- data/app/request_schemas/spree/api/v3/file_upload_request_schema.rb +20 -0
- data/app/request_schemas/spree/api/v3/media_request_schema.rb +27 -0
- data/app/request_schemas/spree/api/v3/price_request_schema.rb +17 -0
- data/app/request_schemas/spree/api/v3/stock_level_request_schema.rb +18 -0
- data/app/request_schemas/spree/api/v3/store/address_request_schema.rb +29 -0
- data/app/request_schemas/spree/api/v3/tax_identifier_request_schema.rb +18 -0
- data/app/request_schemas/spree/api/v3/variant_option_request_schema.rb +13 -0
- data/app/request_schemas/spree/api/v3/variant_request_schema.rb +52 -0
- data/app/serializers/concerns/spree/api/v3/purchase_summary.rb +48 -0
- data/app/serializers/spree/api/v3/address_serializer.rb +4 -2
- data/app/serializers/spree/api/v3/admin/address_serializer.rb +3 -0
- data/app/serializers/spree/api/v3/admin/applied_promotion_serializer.rb +3 -1
- data/app/serializers/spree/api/v3/admin/cart_serializer.rb +3 -1
- data/app/serializers/spree/api/v3/admin/catalog_order_minimum_serializer.rb +3 -2
- data/app/serializers/spree/api/v3/admin/catalog_price_serializer.rb +3 -4
- data/app/serializers/spree/api/v3/admin/catalog_price_tier_serializer.rb +4 -3
- data/app/serializers/spree/api/v3/admin/channel_serializer.rb +5 -7
- data/app/serializers/spree/api/v3/admin/claim_line_item_serializer.rb +7 -0
- data/app/serializers/spree/api/v3/admin/claim_serializer.rb +5 -0
- data/app/serializers/spree/api/v3/admin/commission_line_serializer.rb +7 -18
- data/app/serializers/spree/api/v3/admin/commission_rate_serializer.rb +7 -11
- data/app/serializers/spree/api/v3/admin/commission_rule_serializer.rb +0 -2
- data/app/serializers/spree/api/v3/admin/country_serializer.rb +4 -0
- data/app/serializers/spree/api/v3/admin/customer_serializer.rb +3 -7
- data/app/serializers/spree/api/v3/admin/delivery_method_rule_serializer.rb +0 -2
- data/app/serializers/spree/api/v3/admin/delivery_method_serializer.rb +14 -10
- data/app/serializers/spree/api/v3/admin/delivery_method_service_serializer.rb +9 -1
- data/app/serializers/spree/api/v3/admin/delivery_rate_serializer.rb +8 -0
- data/app/serializers/spree/api/v3/admin/discount_serializer.rb +3 -1
- data/app/serializers/spree/api/v3/admin/exchange_line_item_serializer.rb +5 -0
- data/app/serializers/spree/api/v3/admin/exchange_serializer.rb +5 -0
- data/app/serializers/spree/api/v3/admin/fee_serializer.rb +3 -1
- data/app/serializers/spree/api/v3/admin/file_upload_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/admin/file_upload_target_serializer.rb +10 -0
- data/app/serializers/spree/api/v3/admin/fulfillment_serializer.rb +13 -11
- data/app/serializers/spree/api/v3/admin/gift_card_serializer.rb +3 -3
- data/app/serializers/spree/api/v3/admin/import_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/admin/integration_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/line_item_serializer.rb +12 -12
- data/app/serializers/spree/api/v3/admin/locale_serializer.rb +13 -0
- data/app/serializers/spree/api/v3/admin/market_serializer.rb +3 -0
- data/app/serializers/spree/api/v3/admin/media_serializer.rb +3 -2
- data/app/serializers/spree/api/v3/admin/order_group_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/admin/order_routing_rule_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/order_serializer.rb +33 -33
- data/app/serializers/spree/api/v3/admin/payment_method_serializer.rb +1 -4
- data/app/serializers/spree/api/v3/admin/payment_serializer.rb +6 -3
- data/app/serializers/spree/api/v3/admin/payment_split_serializer.rb +8 -9
- data/app/serializers/spree/api/v3/admin/price_adjustment_tier_serializer.rb +3 -6
- data/app/serializers/spree/api/v3/admin/price_history_serializer.rb +5 -2
- data/app/serializers/spree/api/v3/admin/price_list_serializer.rb +1 -5
- data/app/serializers/spree/api/v3/admin/price_rule_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/price_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/admin/product_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/admin/promotion_action_serializer.rb +4 -6
- data/app/serializers/spree/api/v3/admin/promotion_rule_serializer.rb +0 -2
- data/app/serializers/spree/api/v3/admin/purchase_order_item_serializer.rb +5 -11
- data/app/serializers/spree/api/v3/admin/purchase_order_serializer.rb +4 -4
- data/app/serializers/spree/api/v3/admin/refund_serializer.rb +7 -3
- data/app/serializers/spree/api/v3/admin/reporting_result_serializer.rb +9 -2
- data/app/serializers/spree/api/v3/admin/return_line_item_serializer.rb +8 -0
- data/app/serializers/spree/api/v3/admin/return_serializer.rb +8 -4
- data/app/serializers/spree/api/v3/admin/seller_balance_serializer.rb +15 -10
- data/app/serializers/spree/api/v3/admin/seller_payout_serializer.rb +3 -5
- data/app/serializers/spree/api/v3/admin/seller_serializer.rb +3 -1
- data/app/serializers/spree/api/v3/admin/seller_transfer_serializer.rb +7 -8
- data/app/serializers/spree/api/v3/admin/shipping_label_serializer.rb +4 -4
- data/app/serializers/spree/api/v3/admin/stock_location_serializer.rb +3 -0
- data/app/serializers/spree/api/v3/admin/stock_movement_serializer.rb +2 -6
- data/app/serializers/spree/api/v3/admin/store_credit_event_serializer.rb +5 -0
- data/app/serializers/spree/api/v3/admin/store_credit_serializer.rb +9 -4
- data/app/serializers/spree/api/v3/admin/store_serializer.rb +17 -98
- data/app/serializers/spree/api/v3/admin/supplier_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/admin/tax_exemption_certificate_serializer.rb +3 -1
- data/app/serializers/spree/api/v3/admin/tax_line_serializer.rb +4 -2
- data/app/serializers/spree/api/v3/admin/tax_rate_serializer.rb +2 -12
- data/app/serializers/spree/api/v3/admin/update_status_serializer.rb +28 -0
- data/app/serializers/spree/api/v3/admin/variant_serializer.rb +7 -3
- data/app/serializers/spree/api/v3/base_serializer.rb +112 -7
- data/app/serializers/spree/api/v3/cart_serializer.rb +11 -29
- data/app/serializers/spree/api/v3/claim_line_item_serializer.rb +5 -13
- data/app/serializers/spree/api/v3/claim_serializer.rb +2 -3
- data/app/serializers/spree/api/v3/country_serializer.rb +2 -1
- data/app/serializers/spree/api/v3/currency_serializer.rb +9 -1
- data/app/serializers/spree/api/v3/customer_serializer.rb +3 -2
- data/app/serializers/spree/api/v3/delivery_rate_serializer.rb +8 -12
- data/app/serializers/spree/api/v3/delivery_zone_member_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/discount_serializer.rb +4 -1
- data/app/serializers/spree/api/v3/exchange_line_item_serializer.rb +2 -8
- data/app/serializers/spree/api/v3/exchange_serializer.rb +2 -3
- data/app/serializers/spree/api/v3/file_upload_serializer.rb +28 -0
- data/app/serializers/spree/api/v3/file_upload_target_serializer.rb +17 -0
- data/app/serializers/spree/api/v3/gift_card_batch_serializer.rb +2 -4
- data/app/serializers/spree/api/v3/gift_card_serializer.rb +4 -2
- data/app/serializers/spree/api/v3/import_serializer.rb +0 -12
- data/app/serializers/spree/api/v3/line_item_serializer.rb +15 -5
- data/app/serializers/spree/api/v3/locale_serializer.rb +3 -1
- data/app/serializers/spree/api/v3/market_serializer.rb +5 -5
- data/app/serializers/spree/api/v3/media_serializer.rb +7 -2
- data/app/serializers/spree/api/v3/order_group_serializer.rb +12 -4
- data/app/serializers/spree/api/v3/order_serializer.rb +5 -23
- data/app/serializers/spree/api/v3/payment_session_serializer.rb +2 -4
- data/app/serializers/spree/api/v3/price_history_serializer.rb +5 -5
- data/app/serializers/spree/api/v3/price_serializer.rb +6 -9
- data/app/serializers/spree/api/v3/product_filter_price_range_serializer.rb +10 -4
- data/app/serializers/spree/api/v3/product_serializer.rb +3 -3
- data/app/serializers/spree/api/v3/refund_serializer.rb +8 -5
- data/app/serializers/spree/api/v3/return_line_item_serializer.rb +3 -11
- data/app/serializers/spree/api/v3/return_serializer.rb +3 -6
- data/app/serializers/spree/api/v3/seller/address_serializer.rb +12 -0
- data/app/serializers/spree/api/v3/seller/balance_serializer.rb +15 -10
- data/app/serializers/spree/api/v3/seller/claim_line_item_serializer.rb +7 -0
- data/app/serializers/spree/api/v3/seller/claim_serializer.rb +5 -0
- data/app/serializers/spree/api/v3/seller/country_serializer.rb +19 -0
- data/app/serializers/spree/api/v3/seller/delivery_method_rule_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/seller/delivery_method_serializer.rb +4 -8
- data/app/serializers/spree/api/v3/seller/delivery_rate_serializer.rb +9 -8
- data/app/serializers/spree/api/v3/seller/exchange_line_item_serializer.rb +5 -0
- data/app/serializers/spree/api/v3/seller/exchange_serializer.rb +5 -0
- data/app/serializers/spree/api/v3/seller/file_upload_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/seller/file_upload_target_serializer.rb +10 -0
- data/app/serializers/spree/api/v3/seller/import_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/seller/media_serializer.rb +2 -5
- data/app/serializers/spree/api/v3/seller/order_line_item_serializer.rb +4 -3
- data/app/serializers/spree/api/v3/seller/order_serializer.rb +16 -16
- data/app/serializers/spree/api/v3/seller/payment_split_serializer.rb +8 -9
- data/app/serializers/spree/api/v3/seller/payout_serializer.rb +2 -4
- data/app/serializers/spree/api/v3/seller/price_history_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/seller/price_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/seller/product_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/seller/profile_serializer.rb +7 -7
- data/app/serializers/spree/api/v3/seller/return_line_item_serializer.rb +8 -0
- data/app/serializers/spree/api/v3/seller/return_serializer.rb +8 -5
- data/app/serializers/spree/api/v3/seller/state_serializer.rb +10 -0
- data/app/serializers/spree/api/v3/seller/stock_location_serializer.rb +3 -0
- data/app/serializers/spree/api/v3/seller/transfer_serializer.rb +6 -7
- data/app/serializers/spree/api/v3/seller/variant_serializer.rb +8 -4
- data/app/serializers/spree/api/v3/stock_location_serializer.rb +8 -1
- data/app/serializers/spree/api/v3/store_credit_event_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/store_credit_serializer.rb +3 -5
- data/app/serializers/spree/api/v3/tax_line_serializer.rb +2 -4
- data/app/serializers/spree/api/v3/variant_serializer.rb +3 -3
- data/app/services/spree/api/v3/filter_predicates.rb +29 -0
- data/app/services/spree/api/v3/filter_table.rb +337 -0
- data/app/services/spree/api/v3/filters_aggregator.rb +2 -2
- data/app/services/spree/api/v3/request_schema.rb +430 -0
- data/app/services/spree/webhooks/deliver_webhook.rb +7 -3
- data/config/initializers/typelizer.rb +1 -1
- data/config/routes.rb +5 -3
- data/lib/spree/api/configuration.rb +5 -0
- data/lib/spree/api/dependencies.rb +7 -6
- data/lib/spree/api/middleware/request_size_limit.rb +24 -3
- data/lib/spree/api/openapi/filter_documentation.rb +136 -0
- data/lib/spree/api/openapi/schema_helper.rb +126 -80
- data/lib/spree/api/preference_families.rb +46 -0
- data/lib/spree/api/preference_types.rb +138 -0
- data/lib/spree/api/typelizer_generation.rb +4 -0
- data/lib/tasks/filters.rake +12 -0
- data/lib/typelizer/open_enums.rb +10 -0
- metadata +60 -10
- data/app/controllers/concerns/spree/api/v3/address_params.rb +0 -17
- data/app/controllers/concerns/spree/api/v3/direct_uploads.rb +0 -35
- data/app/controllers/spree/api/v3/admin/direct_uploads_controller.rb +0 -54
- data/app/controllers/spree/api/v3/seller/direct_uploads_controller.rb +0 -21
|
@@ -8,9 +8,7 @@ module Spree
|
|
|
8
8
|
# their order history shows them — with the per-seller orders nested
|
|
9
9
|
# inside it, each carrying its own items, delivery and tracking.
|
|
10
10
|
class OrderGroupSerializer < BaseSerializer
|
|
11
|
-
typelize number: :string, email: [:string, nullable: true], currency: :string,
|
|
12
|
-
total: [:string, nullable: true], display_total: [:string, nullable: true],
|
|
13
|
-
item_total: [:string, nullable: true], display_item_total: [:string, nullable: true],
|
|
11
|
+
typelize number: :string, email: [:string, nullable: true], currency: [:string, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'],
|
|
14
12
|
fulfillment_status: [:string, nullable: true, enum: Spree::Order::FULFILLMENT_STATUSES],
|
|
15
13
|
payment_status: [:string, nullable: true, enum: Spree::Order::PAYMENT_STATUSES],
|
|
16
14
|
completed_at: [:string, nullable: true],
|
|
@@ -18,7 +16,11 @@ module Spree
|
|
|
18
16
|
|
|
19
17
|
attributes :number, :email, :currency
|
|
20
18
|
|
|
21
|
-
|
|
19
|
+
# Every figure is rolled up from the children, never prorated back
|
|
20
|
+
# down. The payments are the group's own: a split checkout pays once,
|
|
21
|
+
# against the group, so a child holds none.
|
|
22
|
+
include Spree::Api::V3::PurchaseSummary
|
|
23
|
+
|
|
22
24
|
# Rolled up across the children rather than stored, so it can never
|
|
23
25
|
# disagree with the orders it describes.
|
|
24
26
|
attributes :fulfillment_status, :payment_status
|
|
@@ -30,6 +32,12 @@ module Spree
|
|
|
30
32
|
one :billing_address, resource: proc { Spree.api.address_serializer }
|
|
31
33
|
one :shipping_address, resource: proc { Spree.api.address_serializer }
|
|
32
34
|
|
|
35
|
+
# The card itself is deliberately not nested here — the split copies it
|
|
36
|
+
# onto every child, so it is already in the payload, and a group this
|
|
37
|
+
# deep pushes the generated Zod schema past what TypeScript will
|
|
38
|
+
# serialize into a declaration file. `gift_card_total` is the figure a
|
|
39
|
+
# summary needs, and only the group can answer it.
|
|
40
|
+
|
|
33
41
|
# The whole point of the group: the customer sees one purchase, and the
|
|
34
42
|
# seller orders inside it are how it will arrive.
|
|
35
43
|
many :orders, resource: proc { Spree.api.order_serializer }
|
|
@@ -9,12 +9,11 @@ module Spree
|
|
|
9
9
|
channel_id: [:string, nullable: true], company_id: [:string, nullable: true],
|
|
10
10
|
company_name: [:string, nullable: true], po_number: [:string, nullable: true],
|
|
11
11
|
po_document_filename: [:string, nullable: true], po_document_byte_size: ['number | null'],
|
|
12
|
-
currency: :string, locale: [:string, nullable: true], total_quantity: :number,
|
|
12
|
+
currency: [:string, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'], locale: [:string, nullable: true, enum: Spree::Locales::ALL, enum_type_name: 'LocaleCode'], total_quantity: :number,
|
|
13
13
|
coupon_code: [:string, nullable: true],
|
|
14
14
|
fulfillment_status: [:string, nullable: true, enum: Spree::Order::FULFILLMENT_STATUSES],
|
|
15
15
|
payment_status: [:string, nullable: true, enum: Spree::Order::PAYMENT_STATUSES],
|
|
16
|
-
|
|
17
|
-
covered_by_store_credit: :boolean, completed_at: [:string, nullable: true],
|
|
16
|
+
completed_at: [:string, nullable: true],
|
|
18
17
|
withdrawal_period_ends_at: [:string, nullable: true], within_withdrawal_period: :boolean,
|
|
19
18
|
billing_address: { nullable: true }, shipping_address: { nullable: true },
|
|
20
19
|
gift_card: { nullable: true }, market: { nullable: true }
|
|
@@ -64,25 +63,9 @@ module Spree
|
|
|
64
63
|
|
|
65
64
|
# Nulled for gated (prices_hidden) guests, consistent with cart and
|
|
66
65
|
# catalog price hiding.
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
:
|
|
70
|
-
:tax_total, :display_tax_total, :included_tax_total, :display_included_tax_total,
|
|
71
|
-
:additional_tax_total, :display_additional_tax_total, :total, :display_total,
|
|
72
|
-
:gift_card_total, :display_gift_card_total,
|
|
73
|
-
:amount_due, :display_amount_due,
|
|
74
|
-
:delivery_total, :display_delivery_total,
|
|
75
|
-
:fee_total, :display_fee_total
|
|
76
|
-
|
|
77
|
-
attribute :store_credit_total do |order|
|
|
78
|
-
order.total_applied_store_credit.to_s unless params[:hide_prices]
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
attribute :display_store_credit_total do |order|
|
|
82
|
-
order.display_total_applied_store_credit.to_s unless params[:hide_prices]
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
attribute :covered_by_store_credit, &:covered_by_store_credit?
|
|
66
|
+
include Spree::Api::V3::PurchaseSummary
|
|
67
|
+
money_attributes :adjustment_total, :display_adjustment_total,
|
|
68
|
+
descriptions: { adjustment_total: 'Every discount, fee and added tax together, as one amount.' }
|
|
86
69
|
|
|
87
70
|
many :order_promotions, key: :discounts, resource: proc { Spree.api.applied_promotion_serializer }
|
|
88
71
|
# Itemized charges (duties, surcharges, COD, handling) — see the cart
|
|
@@ -90,7 +73,6 @@ module Spree
|
|
|
90
73
|
many :fees, resource: proc { Spree.api.fee_serializer }
|
|
91
74
|
many :line_items, key: :items, resource: proc { Spree.api.line_item_serializer }
|
|
92
75
|
many :fulfillments, resource: proc { Spree.api.fulfillment_serializer }
|
|
93
|
-
many :payments, resource: proc { Spree.api.payment_serializer }
|
|
94
76
|
one :billing_address, resource: proc { Spree.api.address_serializer }
|
|
95
77
|
one :shipping_address, resource: proc { Spree.api.address_serializer }
|
|
96
78
|
one :gift_card, resource: proc { Spree.api.gift_card_serializer }
|
|
@@ -2,7 +2,7 @@ module Spree
|
|
|
2
2
|
module Api
|
|
3
3
|
module V3
|
|
4
4
|
class PaymentSessionSerializer < BaseSerializer
|
|
5
|
-
typelize status: [:string, enum: Spree::PaymentSession.statuses, enum_type_name: 'PaymentSessionStatus'],
|
|
5
|
+
typelize status: [:string, enum: Spree::PaymentSession.statuses, enum_type_name: 'PaymentSessionStatus'], currency: [:string, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'],
|
|
6
6
|
external_id: :string, external_data: 'Record<string, unknown>',
|
|
7
7
|
expires_at: [:string, nullable: true], customer_external_id: [:string, nullable: true],
|
|
8
8
|
payment_method_id: :string, order_id: [:string, nullable: true],
|
|
@@ -12,9 +12,7 @@ module Spree
|
|
|
12
12
|
:customer_external_id,
|
|
13
13
|
expires_at: :iso8601
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
session.amount&.to_s
|
|
17
|
-
end
|
|
15
|
+
money_attributes :amount
|
|
18
16
|
|
|
19
17
|
prefixed_id_attributes :payment_method
|
|
20
18
|
|
|
@@ -4,13 +4,13 @@ module Spree
|
|
|
4
4
|
module Api
|
|
5
5
|
module V3
|
|
6
6
|
class PriceHistorySerializer < BaseSerializer
|
|
7
|
-
typelize
|
|
8
|
-
|
|
9
|
-
display_amount: :string,
|
|
10
|
-
currency: :string,
|
|
7
|
+
typelize display_amount: display_money_type(:display_amount, nullable: false),
|
|
8
|
+
currency: [:string, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'],
|
|
11
9
|
recorded_at: :string
|
|
12
10
|
|
|
13
|
-
attributes :
|
|
11
|
+
attributes :currency
|
|
12
|
+
|
|
13
|
+
money_attributes :amount, unit_price: true
|
|
14
14
|
|
|
15
15
|
attributes :display_amount
|
|
16
16
|
|
|
@@ -5,17 +5,14 @@ module Spree
|
|
|
5
5
|
# Represents a resolved/calculated price for storefront display
|
|
6
6
|
# Can represent either a calculated price (with price list resolution) or a base price
|
|
7
7
|
class PriceSerializer < BaseSerializer
|
|
8
|
-
typelize
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
compare_at_amount: [:string, nullable: true],
|
|
12
|
-
compare_at_amount_in_cents: [:number, nullable: true],
|
|
13
|
-
display_compare_at_amount: [:string, nullable: true],
|
|
14
|
-
currency: [:string, nullable: true],
|
|
8
|
+
typelize display_amount: display_money_type(:display_amount),
|
|
9
|
+
display_compare_at_amount: display_money_type(:display_compare_at_amount),
|
|
10
|
+
currency: [:string, nullable: true, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'],
|
|
15
11
|
price_list_id: [:string, nullable: true]
|
|
16
12
|
|
|
17
|
-
attributes :
|
|
18
|
-
|
|
13
|
+
attributes :currency
|
|
14
|
+
|
|
15
|
+
money_attributes :amount, :compare_at_amount, unit_price: true
|
|
19
16
|
|
|
20
17
|
attribute :display_amount do |price|
|
|
21
18
|
price.display_amount&.to_s
|
|
@@ -4,11 +4,17 @@ module Spree
|
|
|
4
4
|
class ProductFilterPriceRangeSerializer < BaseSerializer
|
|
5
5
|
typelize id: :string,
|
|
6
6
|
type: "'price_range'",
|
|
7
|
-
min: :
|
|
8
|
-
max: :
|
|
9
|
-
currency: :string
|
|
7
|
+
min: :string,
|
|
8
|
+
max: :string,
|
|
9
|
+
currency: [:string, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode']
|
|
10
10
|
|
|
11
|
-
attributes :id, :type
|
|
11
|
+
attributes :id, :type
|
|
12
|
+
|
|
13
|
+
# Search providers hand the bounds over as numbers.
|
|
14
|
+
attribute(:min) { |range| Spree::Money::Rounding.format(range[:min], range[:currency], unit_price: true) }
|
|
15
|
+
attribute(:max) { |range| Spree::Money::Rounding.format(range[:max], range[:currency], unit_price: true) }
|
|
16
|
+
|
|
17
|
+
attributes :currency
|
|
12
18
|
end
|
|
13
19
|
end
|
|
14
20
|
end
|
|
@@ -79,7 +79,7 @@ module Spree
|
|
|
79
79
|
# single-seller catalog winner and default variant are the same row.
|
|
80
80
|
attribute :price do |product|
|
|
81
81
|
price = price_for(featured_variant(product))
|
|
82
|
-
|
|
82
|
+
price_serializer.new(price, params: params).to_h if price.present?
|
|
83
83
|
end
|
|
84
84
|
|
|
85
85
|
# Original price - base price without price list resolution (for showing strikethrough)
|
|
@@ -90,7 +90,7 @@ module Spree
|
|
|
90
90
|
base = price_in(variant)
|
|
91
91
|
|
|
92
92
|
if calculated.present? && base.present? && calculated.id != base.id
|
|
93
|
-
|
|
93
|
+
price_serializer.new(base, params: params).to_h
|
|
94
94
|
end
|
|
95
95
|
end
|
|
96
96
|
|
|
@@ -148,7 +148,7 @@ module Spree
|
|
|
148
148
|
attribute :prior_price,
|
|
149
149
|
if: proc { expand?('prior_price') } do |product|
|
|
150
150
|
record = price_in(featured_variant(product))&.prior_price
|
|
151
|
-
|
|
151
|
+
price_history_serializer.new(record, params: params).to_h if record
|
|
152
152
|
end
|
|
153
153
|
end
|
|
154
154
|
end
|
|
@@ -4,15 +4,14 @@ module Spree
|
|
|
4
4
|
module Api
|
|
5
5
|
module V3
|
|
6
6
|
class RefundSerializer < BaseSerializer
|
|
7
|
-
typelize
|
|
7
|
+
typelize transaction_id: [:string, nullable: true],
|
|
8
8
|
payment_id: [:string, nullable: true], refund_reason_id: [:string, nullable: true],
|
|
9
|
-
originator_id: [:string, nullable: true], originator_type: [:string, nullable: true]
|
|
9
|
+
originator_id: [:string, nullable: true], originator_type: [:string, nullable: true],
|
|
10
|
+
reimbursement_id: [:string, nullable: true, deprecated: 'Always null: reimbursements are gone. Use `originator_id`. Removed in 6.1.']
|
|
10
11
|
|
|
11
12
|
attributes :transaction_id
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
refund.amount&.to_s
|
|
15
|
-
end
|
|
14
|
+
money_attributes :amount
|
|
16
15
|
|
|
17
16
|
prefixed_id_attributes :payment, refund_reason_id: :reason
|
|
18
17
|
|
|
@@ -23,6 +22,10 @@ module Spree
|
|
|
23
22
|
attribute :originator_type do |refund|
|
|
24
23
|
Spree::Base.polymorphic_api_type(refund.originator_type)
|
|
25
24
|
end
|
|
25
|
+
|
|
26
|
+
# @deprecated Reimbursements were folded into returns, which a refund
|
|
27
|
+
# names as its +originator+. Removed in 6.1.
|
|
28
|
+
attribute(:reimbursement_id) { nil }
|
|
26
29
|
end
|
|
27
30
|
end
|
|
28
31
|
end
|
|
@@ -7,25 +7,17 @@ module Spree
|
|
|
7
7
|
typelize quantity: :number,
|
|
8
8
|
received_quantity: :number,
|
|
9
9
|
resellable: :boolean,
|
|
10
|
-
pre_tax_amount: :string,
|
|
11
|
-
display_pre_tax_amount: :string,
|
|
12
|
-
included_tax_total: :string,
|
|
13
|
-
additional_tax_total: :string,
|
|
14
|
-
tax_total: :string,
|
|
15
|
-
display_tax_total: :string,
|
|
16
|
-
refund_amount: :string,
|
|
17
|
-
display_refund_amount: :string,
|
|
18
10
|
variant_id: [:string, nullable: true],
|
|
19
11
|
line_item_id: [:string, nullable: true],
|
|
20
12
|
fulfillment_item_id: [:string, nullable: true]
|
|
21
13
|
|
|
22
14
|
attributes :quantity, :received_quantity, :resellable
|
|
23
15
|
|
|
24
|
-
|
|
25
|
-
|
|
16
|
+
money_attributes :pre_tax_amount, :display_pre_tax_amount, :included_tax_total,
|
|
17
|
+
:additional_tax_total, :tax_total, :display_tax_total
|
|
26
18
|
# What the line refunds, tax included — for the units that arrived
|
|
27
19
|
# once the warehouse has counted.
|
|
28
|
-
|
|
20
|
+
money_attributes :refund_amount, :display_refund_amount
|
|
29
21
|
prefixed_id_attributes :variant, :line_item, :fulfillment_item
|
|
30
22
|
|
|
31
23
|
one :variant, resource: proc { Spree.api.variant_serializer }, if: proc { expand?('variant') }
|
|
@@ -10,10 +10,6 @@ module Spree
|
|
|
10
10
|
status: [:string, enum: Spree::Return.statuses, enum_type_name: 'ReturnStatus'],
|
|
11
11
|
order_id: [:string, nullable: true],
|
|
12
12
|
reason_id: [:string, nullable: true],
|
|
13
|
-
refund_total: :string,
|
|
14
|
-
display_refund_total: :string,
|
|
15
|
-
refund_tax_total: :string,
|
|
16
|
-
display_refund_tax_total: :string,
|
|
17
13
|
approved_at: [:string, nullable: true],
|
|
18
14
|
received_at: [:string, nullable: true],
|
|
19
15
|
refunded_at: [:string, nullable: true],
|
|
@@ -23,9 +19,10 @@ module Spree
|
|
|
23
19
|
|
|
24
20
|
prefixed_id_attributes :order, :reason
|
|
25
21
|
|
|
26
|
-
|
|
22
|
+
money_attributes :refund_total, :display_refund_total
|
|
27
23
|
# The tax inside refund_total.
|
|
28
|
-
|
|
24
|
+
money_attributes :refund_tax_total, :display_refund_tax_total
|
|
25
|
+
|
|
29
26
|
attribute :approved_at do |return_record|
|
|
30
27
|
return_record.approved_at&.iso8601
|
|
31
28
|
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Seller
|
|
5
|
+
class AddressSerializer < V3::AddressSerializer
|
|
6
|
+
# The Store API keeps these deprecated names until 6.1.
|
|
7
|
+
%i[state_abbr country_iso].each { |key| _attributes.delete(key) }
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -6,14 +6,14 @@ module Spree
|
|
|
6
6
|
#
|
|
7
7
|
# A computed value rather than a record, so it carries no id.
|
|
8
8
|
class BalanceSerializer < V3::BaseSerializer
|
|
9
|
-
typelize currency: :string,
|
|
10
|
-
settlement_currency: :string,
|
|
9
|
+
typelize currency: [:string, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'],
|
|
10
|
+
settlement_currency: [:string, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'],
|
|
11
11
|
converted: :boolean,
|
|
12
|
-
earned: :string,
|
|
13
|
-
payable: :string,
|
|
14
|
-
paid: :string,
|
|
15
|
-
balance: :string,
|
|
16
|
-
pending: :string
|
|
12
|
+
earned: :string,
|
|
13
|
+
payable: :string,
|
|
14
|
+
paid: :string,
|
|
15
|
+
balance: :string,
|
|
16
|
+
pending: :string
|
|
17
17
|
|
|
18
18
|
_attributes.delete(:id)
|
|
19
19
|
|
|
@@ -24,9 +24,14 @@ module Spree
|
|
|
24
24
|
|
|
25
25
|
attribute(:converted) { |balance| balance.converted? }
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
# Earnings are in the currency the sales were priced in; what the
|
|
28
|
+
# account holds is in the one it settles in.
|
|
29
|
+
%i[earned pending].each do |figure|
|
|
30
|
+
attribute(figure) { |balance| Spree::Money::Rounding.format(balance.public_send(figure), balance.currency) }
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
%i[payable paid balance].each do |figure|
|
|
34
|
+
attribute(figure) { |balance| Spree::Money::Rounding.format(balance.public_send(figure), balance.settlement_currency) }
|
|
30
35
|
end
|
|
31
36
|
end
|
|
32
37
|
end
|
|
@@ -7,6 +7,13 @@ module Spree
|
|
|
7
7
|
# One line of a claim — what went wrong, and what is being sent or
|
|
8
8
|
# refunded to put it right.
|
|
9
9
|
class ClaimLineItemSerializer < V3::ClaimLineItemSerializer
|
|
10
|
+
without_formatted_money(:seller)
|
|
11
|
+
|
|
12
|
+
# No guest price gating here, so the inherited money fields are always present.
|
|
13
|
+
typelize refund_amount: [:string, nullable: false], paid_amount: [:string, nullable: false],
|
|
14
|
+
pre_tax_amount: [:string, nullable: false], included_tax_total: [:string, nullable: false],
|
|
15
|
+
additional_tax_total: [:string, nullable: false], tax_total: [:string, nullable: false]
|
|
16
|
+
|
|
10
17
|
typelize name: [:string, nullable: true]
|
|
11
18
|
|
|
12
19
|
attribute :name do |line|
|
|
@@ -9,6 +9,11 @@ module Spree
|
|
|
9
9
|
# Built on the shared V3 serializer rather than the admin one, which
|
|
10
10
|
# expands the order and the customer behind it.
|
|
11
11
|
class ClaimSerializer < V3::ClaimSerializer
|
|
12
|
+
without_formatted_money(:seller)
|
|
13
|
+
|
|
14
|
+
# No guest price gating here, so the inherited money fields are always present.
|
|
15
|
+
typelize refund_total: [:string, nullable: false]
|
|
16
|
+
|
|
12
17
|
typelize memo: [:string, nullable: true]
|
|
13
18
|
|
|
14
19
|
attributes :memo
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Seller
|
|
5
|
+
# A country as the seller panel's address forms need it. The panel
|
|
6
|
+
# names countries with Intl.DisplayNames in the seller's own language,
|
|
7
|
+
# so the Seller API sends the ISO code alone.
|
|
8
|
+
class CountrySerializer < V3::CountrySerializer
|
|
9
|
+
_attributes.delete(:name)
|
|
10
|
+
_attributes.delete(:market)
|
|
11
|
+
|
|
12
|
+
many :states,
|
|
13
|
+
resource: proc { Spree.api.seller_state_serializer },
|
|
14
|
+
if: proc { params[:expand]&.include?('states') }
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -12,8 +12,7 @@ module Spree
|
|
|
12
12
|
class DeliveryMethodRuleSerializer < BaseSerializer
|
|
13
13
|
typelize type: [:string, comment: 'Rule type. Built-in: item_total_rule, weight_rule, excluded_products_rule, channel_rule, volume_rule, company_rule. Extensions may register more.'],
|
|
14
14
|
active: :boolean,
|
|
15
|
-
preferences: 'Record<string, unknown>'
|
|
16
|
-
preference_schema: "Array<{ key: string; type: string; default: unknown; choices?: string[] }>"
|
|
15
|
+
preferences: 'Record<string, unknown>'
|
|
17
16
|
|
|
18
17
|
attributes :active
|
|
19
18
|
|
|
@@ -24,7 +23,6 @@ module Spree
|
|
|
24
23
|
end
|
|
25
24
|
|
|
26
25
|
attribute :preferences, &:serialized_preferences
|
|
27
|
-
attribute :preference_schema, &:serialized_preference_schema
|
|
28
26
|
end
|
|
29
27
|
end
|
|
30
28
|
end
|
|
@@ -22,8 +22,7 @@ module Spree
|
|
|
22
22
|
editable: :boolean,
|
|
23
23
|
delivery_profile_id: [:string, nullable: true],
|
|
24
24
|
delivery_zone_id: [:string, nullable: true],
|
|
25
|
-
|
|
26
|
-
calculator_preferences: ['Record<string, unknown>', nullable: true]
|
|
25
|
+
calculator: 'TypedDeliveryCalculator | null'
|
|
27
26
|
|
|
28
27
|
attributes :admin_name, :storefront_visible, :tracking_url,
|
|
29
28
|
created_at: :iso8601, updated_at: :iso8601
|
|
@@ -39,12 +38,9 @@ module Spree
|
|
|
39
38
|
|
|
40
39
|
prefixed_id_attributes :delivery_profile, :delivery_zone
|
|
41
40
|
|
|
42
|
-
attribute :
|
|
43
|
-
record.calculator
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
attribute :calculator_preferences do |record|
|
|
47
|
-
record.calculator.respond_to?(:serialized_preferences) ? record.calculator.serialized_preferences : record.calculator&.preferences
|
|
41
|
+
attribute :calculator do |record|
|
|
42
|
+
calculator = record.calculator
|
|
43
|
+
{ type: calculator.class.api_type, preferences: calculator.serialized_preferences } if calculator
|
|
48
44
|
end
|
|
49
45
|
end
|
|
50
46
|
end
|
|
@@ -10,18 +10,19 @@ module Spree
|
|
|
10
10
|
class DeliveryRateSerializer < V3::BaseSerializer
|
|
11
11
|
typelize name: :string,
|
|
12
12
|
selected: :boolean,
|
|
13
|
-
cost: :string,
|
|
14
|
-
display_cost: :string,
|
|
15
|
-
total: :string,
|
|
16
|
-
display_total: :string,
|
|
17
13
|
carrier: [:string, nullable: true],
|
|
18
14
|
service_level: [:string, nullable: true],
|
|
19
|
-
estimated_delivery_date: [:string, nullable: true]
|
|
15
|
+
estimated_delivery_date: [:string, nullable: true],
|
|
16
|
+
unpriced: :boolean
|
|
20
17
|
|
|
21
|
-
attributes :name, :selected
|
|
22
|
-
:carrier, :service_level, :estimated_delivery_date
|
|
18
|
+
attributes :name, :selected
|
|
23
19
|
|
|
24
|
-
|
|
20
|
+
money_attributes :cost, :total
|
|
21
|
+
|
|
22
|
+
attributes :carrier, :service_level, :estimated_delivery_date, :unpriced
|
|
23
|
+
|
|
24
|
+
typelize cost: [:string, nullable: false],
|
|
25
|
+
total: [:string, nullable: false]
|
|
25
26
|
end
|
|
26
27
|
end
|
|
27
28
|
end
|
|
@@ -7,6 +7,11 @@ module Spree
|
|
|
7
7
|
# One line of an exchange — what came back and what goes out in its
|
|
8
8
|
# place. Both variants expand through the seller's own serializer.
|
|
9
9
|
class ExchangeLineItemSerializer < V3::ExchangeLineItemSerializer
|
|
10
|
+
# No guest price gating here, so the inherited money fields are always present.
|
|
11
|
+
typelize original_price: [:string, nullable: false], new_variant_price: [:string, nullable: false],
|
|
12
|
+
price_difference: [:string, nullable: false], original_tax_total: [:string, nullable: false],
|
|
13
|
+
new_tax_total: [:string, nullable: false]
|
|
14
|
+
|
|
10
15
|
typelize name: [:string, nullable: true],
|
|
11
16
|
new_variant_name: [:string, nullable: true]
|
|
12
17
|
|
|
@@ -9,6 +9,11 @@ module Spree
|
|
|
9
9
|
# Built on the shared V3 serializer rather than the admin one, which
|
|
10
10
|
# expands the order and the customer behind it.
|
|
11
11
|
class ExchangeSerializer < V3::ExchangeSerializer
|
|
12
|
+
without_formatted_money(:seller)
|
|
13
|
+
|
|
14
|
+
# No guest price gating here, so the inherited money fields are always present.
|
|
15
|
+
typelize price_difference: [:string, nullable: false]
|
|
16
|
+
|
|
12
17
|
typelize memo: [:string, nullable: true],
|
|
13
18
|
stock_location_id: [:string, nullable: true]
|
|
14
19
|
|
|
@@ -15,7 +15,7 @@ module Spree
|
|
|
15
15
|
typelize completed_rows_count: :number,
|
|
16
16
|
failed_rows_count: :number,
|
|
17
17
|
processing_errors: [:string, nullable: true],
|
|
18
|
-
|
|
18
|
+
delimiter: :string,
|
|
19
19
|
schema_fields: 'Array<{ name: string; label: string; required: boolean }>',
|
|
20
20
|
csv_headers: [:string, multi: true],
|
|
21
21
|
sample_row: 'Record<string, string | null>',
|
|
@@ -23,7 +23,7 @@ module Spree
|
|
|
23
23
|
original_byte_size: [:number, nullable: true],
|
|
24
24
|
original_file_url: [:string, nullable: true]
|
|
25
25
|
|
|
26
|
-
attributes :processing_errors, :
|
|
26
|
+
attributes :processing_errors, :delimiter
|
|
27
27
|
|
|
28
28
|
# The file the seller uploaded. `original_file_url` is this branch's
|
|
29
29
|
# own streaming endpoint (JWT-authenticated), not a signed
|
|
@@ -9,12 +9,9 @@ module Spree
|
|
|
9
9
|
# it is cropped, and which variants it belongs to.
|
|
10
10
|
class MediaSerializer < V3::MediaSerializer
|
|
11
11
|
typelize position: :number,
|
|
12
|
-
variant_ids: [:string, multi: true]
|
|
13
|
-
focal_point_x: [:number, nullable: true],
|
|
14
|
-
focal_point_y: [:number, nullable: true]
|
|
12
|
+
variant_ids: [:string, multi: true]
|
|
15
13
|
|
|
16
|
-
attributes :position, :
|
|
17
|
-
created_at: :iso8601, updated_at: :iso8601
|
|
14
|
+
attributes :position, created_at: :iso8601, updated_at: :iso8601
|
|
18
15
|
|
|
19
16
|
attribute :variant_ids do |media|
|
|
20
17
|
media.variants.map(&:prefixed_id)
|
|
@@ -12,14 +12,15 @@ module Spree
|
|
|
12
12
|
# this branch's generated types.
|
|
13
13
|
class OrderLineItemSerializer < V3::BaseSerializer
|
|
14
14
|
typelize name: :string, sku: [:string, nullable: true], options_text: [:string, nullable: true],
|
|
15
|
-
quantity: :number, currency: :string, variant_id: [:string, nullable: true],
|
|
15
|
+
quantity: :number, currency: [:string, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'], variant_id: [:string, nullable: true],
|
|
16
16
|
thumbnail_url: [:string, nullable: true]
|
|
17
17
|
|
|
18
18
|
attributes :name, :options_text, :quantity, :currency
|
|
19
19
|
|
|
20
20
|
# The tax charged on top is what a claim refunds beside the goods.
|
|
21
|
-
money_attributes :price, :
|
|
22
|
-
|
|
21
|
+
money_attributes :price, unit_price: true
|
|
22
|
+
money_attributes :discounted_amount,
|
|
23
|
+
:additional_tax_total, :total
|
|
23
24
|
|
|
24
25
|
prefixed_id_attributes :variant
|
|
25
26
|
|
|
@@ -21,7 +21,7 @@ module Spree
|
|
|
21
21
|
# the one contact detail that lets a marketplace's customer be taken
|
|
22
22
|
# off it, and it is not needed to pack, post or invoice.
|
|
23
23
|
class OrderSerializer < V3::BaseSerializer
|
|
24
|
-
typelize number: :string, customer_note: [:string, nullable: true], currency: :string,
|
|
24
|
+
typelize number: :string, customer_note: [:string, nullable: true], currency: [:string, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'],
|
|
25
25
|
total_quantity: :number,
|
|
26
26
|
fulfillment_status: [:string, nullable: true, enum: Spree::Order::FULFILLMENT_STATUSES],
|
|
27
27
|
payment_status: [:string, nullable: true, enum: Spree::Order::PAYMENT_STATUSES],
|
|
@@ -47,16 +47,16 @@ module Spree
|
|
|
47
47
|
# What this seller is owed for the goods, and what the buyer paid for
|
|
48
48
|
# them. Deliberately not the whole money surface: gift cards, store
|
|
49
49
|
# credit and the payment breakdown belong to the marketplace.
|
|
50
|
-
money_attributes :item_total,
|
|
51
|
-
:delivery_total,
|
|
52
|
-
:discount_total,
|
|
53
|
-
:adjustment_total,
|
|
54
|
-
:included_tax_total,
|
|
55
|
-
:additional_tax_total,
|
|
56
|
-
:tax_total,
|
|
57
|
-
:total,
|
|
58
|
-
:payment_total,
|
|
59
|
-
:amount_due
|
|
50
|
+
money_attributes :item_total,
|
|
51
|
+
:delivery_total,
|
|
52
|
+
:discount_total,
|
|
53
|
+
:adjustment_total,
|
|
54
|
+
:included_tax_total,
|
|
55
|
+
:additional_tax_total,
|
|
56
|
+
:tax_total,
|
|
57
|
+
:total,
|
|
58
|
+
:payment_total,
|
|
59
|
+
:amount_due
|
|
60
60
|
|
|
61
61
|
# What the marketplace charged the seller on this sale, and the tax
|
|
62
62
|
# on that charge. The ledger remains where a seller sees what they
|
|
@@ -64,9 +64,9 @@ module Spree
|
|
|
64
64
|
# commission is a B2B supply from the platform, so this is the
|
|
65
65
|
# seller's input tax to reclaim, and it has to be attributable to
|
|
66
66
|
# the sale that produced it.
|
|
67
|
-
money_attributes :commission_amount_total,
|
|
68
|
-
:commission_tax_total,
|
|
69
|
-
:commission_total
|
|
67
|
+
money_attributes :commission_amount_total,
|
|
68
|
+
:commission_tax_total,
|
|
69
|
+
:commission_total
|
|
70
70
|
|
|
71
71
|
# Why the sale was called off, when it was. The reason is the
|
|
72
72
|
# marketplace's vocabulary, so it is rendered as a name rather than
|
|
@@ -89,8 +89,8 @@ module Spree
|
|
|
89
89
|
many :payment_splits, resource: proc { Spree.api.seller_payment_split_serializer },
|
|
90
90
|
if: proc { expand?('payment_splits') }
|
|
91
91
|
many :fulfillments, resource: proc { Spree.api.seller_fulfillment_serializer }
|
|
92
|
-
one :shipping_address, resource: proc { Spree.api.
|
|
93
|
-
one :billing_address, resource: proc { Spree.api.
|
|
92
|
+
one :shipping_address, resource: proc { Spree.api.seller_address_serializer }
|
|
93
|
+
one :billing_address, resource: proc { Spree.api.seller_address_serializer }
|
|
94
94
|
end
|
|
95
95
|
end
|
|
96
96
|
end
|