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
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
# A tax registration. Each endpoint publishes it under its own name
|
|
5
|
+
# (`TaxIdentifierParams`, `SellerTaxIdentifierParams`). `kind` is
|
|
6
|
+
# registry-driven, so a plain string: any kind is stored, and one with a
|
|
7
|
+
# validator in Spree.tax_identifier_validators is checked by it.
|
|
8
|
+
class TaxIdentifierRequestSchema < Spree::Api::V3::RequestSchema
|
|
9
|
+
KIND_DESCRIPTION = 'The registration the number belongs to, such as `eu_vat` or `gb_vat`. ' \
|
|
10
|
+
'Any kind is accepted; one with a registered validator is checked by it. ' \
|
|
11
|
+
'Built-in: `eu_vat`. Extensions may register more.'.freeze
|
|
12
|
+
|
|
13
|
+
attribute :kind, :string, required: true, example: 'eu_vat', description: KIND_DESCRIPTION
|
|
14
|
+
attribute :value, :string, required: true, example: 'DE123456789'
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
# One option pair of a variant, such as size Small. Option types and values are created when missing.
|
|
5
|
+
class VariantOptionRequestSchema < Spree::Api::V3::RequestSchema
|
|
6
|
+
publishes 'VariantOptionParams'
|
|
7
|
+
|
|
8
|
+
attribute :name, :string, required: true, example: 'size'
|
|
9
|
+
attribute :value, :string, required: true, example: 'Small'
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
# A variant's own attributes, shared by the variant endpoints and the
|
|
5
|
+
# variants nested in a product payload. Not published on its own: each
|
|
6
|
+
# endpoint includes these fields into its own type.
|
|
7
|
+
class VariantRequestSchema < Spree::Api::V3::RequestSchema
|
|
8
|
+
attribute :sku, :string
|
|
9
|
+
attribute :barcode, :string
|
|
10
|
+
attribute :cost_price, :decimal, nullable: true
|
|
11
|
+
attribute :cost_currency, :currency
|
|
12
|
+
attribute :weight, :number, nullable: true
|
|
13
|
+
attribute :height, :number, nullable: true
|
|
14
|
+
attribute :width, :number, nullable: true
|
|
15
|
+
attribute :depth, :number, nullable: true
|
|
16
|
+
attribute :weight_unit, :string, choices: Spree::Variant::WEIGHT_UNITS
|
|
17
|
+
attribute :dimensions_unit, :string, choices: Spree::Variant::DIMENSION_UNITS
|
|
18
|
+
attribute :hs_code, :string
|
|
19
|
+
attribute :customs_description, :string
|
|
20
|
+
attribute :country_of_origin, :country
|
|
21
|
+
attribute :minimum_order_quantity, :integer, nullable: true
|
|
22
|
+
attribute :order_multiple, :integer, nullable: true
|
|
23
|
+
attribute :purchase_unit, :string
|
|
24
|
+
attribute :units_per_carton, :integer, nullable: true, description: 'How many units fill one carton.'
|
|
25
|
+
attribute :carton_package_type_id, :id,
|
|
26
|
+
nullable: true,
|
|
27
|
+
description: 'The carton this variant is packed into: a package type of kind `carton`. Its dimensions are shared by every product packed the same way, so a corrected carton size fixes all of them at once.'
|
|
28
|
+
attribute :carton_weight, :number,
|
|
29
|
+
nullable: true,
|
|
30
|
+
description: "What one packed carton weighs, in the variant's weight unit."
|
|
31
|
+
attribute :cartons_per_pallet, :integer, nullable: true, description: 'How many cartons stack on one pallet.'
|
|
32
|
+
attribute :seller_id, :id
|
|
33
|
+
attribute :delivery_profile_id, :id, nullable: true
|
|
34
|
+
attribute :track_inventory, :boolean
|
|
35
|
+
attribute :preorderable, :boolean,
|
|
36
|
+
description: "Sell this variant before it's in stock. Adds the pre-order label and ships-by promise; the cap comes from `backorder_limit`, an incoming stock count, or backorder."
|
|
37
|
+
attribute :preorder_ships_at, :datetime,
|
|
38
|
+
nullable: true,
|
|
39
|
+
description: 'The "ships by" date shown to customers while the variant is a pre-order. Once it passes, the variant is no longer a pre-order. Null clears it.'
|
|
40
|
+
attribute :backorder_limit, :integer,
|
|
41
|
+
nullable: true,
|
|
42
|
+
description: 'Maximum units sellable beyond available stock, capping backorders and pre-orders. Null is unlimited.'
|
|
43
|
+
attribute :tax_category_id, :id
|
|
44
|
+
attribute :position, :integer
|
|
45
|
+
attribute :prices, :array, of: Spree::Api::V3::PriceRequestSchema,
|
|
46
|
+
description: 'Per-currency prices. Upserted by currency.'
|
|
47
|
+
attribute :stock_levels, :array, of: Spree::Api::V3::StockLevelRequestSchema,
|
|
48
|
+
description: 'Stock per location. Upserted by location; omitted locations are removed.'
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
# The money summary a cart, an order and a multi-seller purchase all
|
|
5
|
+
# carry, declared once so a storefront renders any of them with one
|
|
6
|
+
# component, and a fix to one is a fix to all three.
|
|
7
|
+
#
|
|
8
|
+
# Every amount is nulled for a guest the storefront hides prices from,
|
|
9
|
+
# the payments' own included.
|
|
10
|
+
module PurchaseSummary
|
|
11
|
+
extend ActiveSupport::Concern
|
|
12
|
+
|
|
13
|
+
included do
|
|
14
|
+
typelize covered_by_store_credit: :boolean
|
|
15
|
+
|
|
16
|
+
money_attributes :item_total, :display_item_total,
|
|
17
|
+
:discount_total, :display_discount_total,
|
|
18
|
+
:tax_total, :display_tax_total,
|
|
19
|
+
:included_tax_total, :display_included_tax_total,
|
|
20
|
+
:additional_tax_total, :display_additional_tax_total,
|
|
21
|
+
:delivery_total, :display_delivery_total,
|
|
22
|
+
:fee_total, :display_fee_total,
|
|
23
|
+
:gift_card_total, :display_gift_card_total,
|
|
24
|
+
:store_credit_total, :display_store_credit_total,
|
|
25
|
+
:total, :display_total,
|
|
26
|
+
:amount_due, :display_amount_due,
|
|
27
|
+
descriptions: {
|
|
28
|
+
item_total: 'The line items: each price times its quantity, before discounts, fees and delivery.',
|
|
29
|
+
discount_total: 'What promotions take off, as a negative amount. Manual discounts are not included.',
|
|
30
|
+
tax_total: 'All tax, both included in prices and added on top.',
|
|
31
|
+
included_tax_total: 'Tax already included in the prices, as in a store whose prices are tax-inclusive.',
|
|
32
|
+
additional_tax_total: 'Tax added on top of the prices.',
|
|
33
|
+
delivery_total: 'What delivery costs, before delivery discounts.',
|
|
34
|
+
fee_total: 'Every fee charged, such as handling or a customs duty.',
|
|
35
|
+
gift_card_total: 'What a gift card pays.',
|
|
36
|
+
store_credit_total: 'What store credit pays, apart from gift cards.',
|
|
37
|
+
total: 'What the customer pays in all: items, delivery, fees and added tax, less discounts.',
|
|
38
|
+
amount_due: 'What is left to pay after payments and store credit.'
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
attribute :covered_by_store_credit, &:covered_by_store_credit?
|
|
42
|
+
|
|
43
|
+
many :payments, resource: proc { Spree.api.payment_serializer }
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -6,8 +6,10 @@ module Spree
|
|
|
6
6
|
address1: [:string, nullable: true], address2: [:string, nullable: true],
|
|
7
7
|
city: [:string, nullable: true], postal_code: [:string, nullable: true], phone: [:string, nullable: true],
|
|
8
8
|
company: [:string, nullable: true], state_code: [:string, nullable: true],
|
|
9
|
-
state_abbr: [:string, nullable: true
|
|
10
|
-
|
|
9
|
+
state_abbr: [:string, nullable: true, deprecated: 'Use `state_code`. Removed in 6.1.'],
|
|
10
|
+
state_name: [:string, nullable: true],
|
|
11
|
+
state_text: [:string, nullable: true], country_code: [:string, enum: Spree::IsoData.country_codes, enum_type_name: 'CountryCode'],
|
|
12
|
+
country_iso: [:string, deprecated: 'Use `country_code`. Removed in 6.1.'],
|
|
11
13
|
country_name: :string,
|
|
12
14
|
quick_checkout: :boolean, is_default_billing: :boolean, is_default_shipping: :boolean,
|
|
13
15
|
label: [:string, nullable: true]
|
|
@@ -3,6 +3,9 @@ module Spree
|
|
|
3
3
|
module V3
|
|
4
4
|
module Admin
|
|
5
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
|
+
|
|
6
9
|
typelize customer_id: [:string, nullable: true],
|
|
7
10
|
owner_id: [:string, nullable: true],
|
|
8
11
|
owner_type: [:string, nullable: true],
|
|
@@ -3,9 +3,11 @@ module Spree
|
|
|
3
3
|
module V3
|
|
4
4
|
module Admin
|
|
5
5
|
class AppliedPromotionSerializer < V3::AppliedPromotionSerializer
|
|
6
|
+
without_formatted_money
|
|
7
|
+
|
|
6
8
|
# The Admin API has no guest gating — money fields inherited from the
|
|
7
9
|
# store serializer are always present, so override their nullability.
|
|
8
|
-
typelize amount: [:string, nullable: false]
|
|
10
|
+
typelize amount: [:string, nullable: false]
|
|
9
11
|
|
|
10
12
|
attributes created_at: :iso8601, updated_at: :iso8601
|
|
11
13
|
end
|
|
@@ -12,7 +12,9 @@ module Spree
|
|
|
12
12
|
# are redeclared with admin counterparts — admin serializers never
|
|
13
13
|
# reference store serializers.
|
|
14
14
|
class CartSerializer < V3::CartSerializer
|
|
15
|
-
|
|
15
|
+
without_formatted_money
|
|
16
|
+
|
|
17
|
+
%i[fulfillments payments payment_methods gift_card discounts fees number].each { |key| _attributes.delete(key) }
|
|
16
18
|
|
|
17
19
|
typelize completed_at: [:string, nullable: true]
|
|
18
20
|
|
|
@@ -5,11 +5,12 @@ module Spree
|
|
|
5
5
|
# The least a whole order must come to under a catalog's agreement,
|
|
6
6
|
# in one currency.
|
|
7
7
|
class CatalogOrderMinimumSerializer < V3::BaseSerializer
|
|
8
|
-
typelize currency: :string,
|
|
8
|
+
typelize currency: [:string, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode']
|
|
9
9
|
|
|
10
10
|
attributes :currency, created_at: :iso8601, updated_at: :iso8601
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
money_attributes :amount
|
|
13
|
+
typelize amount: [:string, nullable: false]
|
|
13
14
|
end
|
|
14
15
|
end
|
|
15
16
|
end
|
|
@@ -17,8 +17,7 @@ module Spree
|
|
|
17
17
|
_attributes.delete(:id)
|
|
18
18
|
|
|
19
19
|
typelize id: 'string | null', label: 'string | null', sku: 'string | null',
|
|
20
|
-
|
|
21
|
-
currency: :string, source: [:string, enum: Spree::CatalogPrice::SOURCES], break_count: :number
|
|
20
|
+
currency: [:string, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'], source: [:string, enum: Spree::CatalogPrice::SOURCES], break_count: :number
|
|
22
21
|
|
|
23
22
|
# The variant this prices, so a row can name what it is showing —
|
|
24
23
|
# a product's variants can be priced differently, and one figure
|
|
@@ -33,9 +32,9 @@ module Spree
|
|
|
33
32
|
# though it were the only one.
|
|
34
33
|
attributes :currency, :source, :break_count
|
|
35
34
|
|
|
36
|
-
|
|
35
|
+
money_attributes :amount, unit_price: true
|
|
36
|
+
typelize amount: [:string, nullable: false]
|
|
37
37
|
|
|
38
|
-
attributes :display_amount
|
|
39
38
|
|
|
40
39
|
# The ladder itself, so the agreement page can show what a buyer
|
|
41
40
|
# pays at each threshold without opening the price sheet
|
|
@@ -11,11 +11,12 @@ module Spree
|
|
|
11
11
|
class CatalogPriceTierSerializer < V3::BaseSerializer
|
|
12
12
|
_attributes.delete(:id)
|
|
13
13
|
|
|
14
|
-
typelize min_quantity: :number
|
|
14
|
+
typelize min_quantity: :number
|
|
15
15
|
|
|
16
|
-
attributes :min_quantity
|
|
16
|
+
attributes :min_quantity
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
money_attributes :amount, unit_price: true
|
|
19
|
+
typelize amount: [:string, nullable: false]
|
|
19
20
|
end
|
|
20
21
|
end
|
|
21
22
|
end
|
|
@@ -4,17 +4,15 @@ module Spree
|
|
|
4
4
|
module Admin
|
|
5
5
|
class ChannelSerializer < V3::ChannelSerializer
|
|
6
6
|
typelize store_id: :string,
|
|
7
|
-
|
|
8
|
-
preferred_storefront_access: [:string, nullable: true],
|
|
9
|
-
preferred_guest_checkout: [:boolean, nullable: true],
|
|
7
|
+
order_routing_strategy: [:string, nullable: true, comment: 'Order routing strategy; null inherits the store setting. Built-in: rules. Extensions may register more.'],
|
|
10
8
|
stock_location_ids: [:string, multi: true],
|
|
11
9
|
default_catalog_id: [:string, nullable: true]
|
|
12
10
|
|
|
13
|
-
attributes :
|
|
14
|
-
:preferred_guest_checkout,
|
|
15
|
-
created_at: :iso8601, updated_at: :iso8601
|
|
11
|
+
attributes created_at: :iso8601, updated_at: :iso8601
|
|
16
12
|
|
|
17
|
-
|
|
13
|
+
preference_attributes Spree::Channel, except: %i[order_routing_strategy]
|
|
14
|
+
|
|
15
|
+
api_type_attributes :order_routing_strategy
|
|
18
16
|
|
|
19
17
|
# Fulfillment-origin allowlist; empty means every store location
|
|
20
18
|
# serves this channel.
|
|
@@ -5,6 +5,13 @@ module Spree
|
|
|
5
5
|
module V3
|
|
6
6
|
module Admin
|
|
7
7
|
class ClaimLineItemSerializer < V3::ClaimLineItemSerializer
|
|
8
|
+
without_formatted_money
|
|
9
|
+
|
|
10
|
+
# No guest price gating here, so the inherited money fields are always present.
|
|
11
|
+
typelize refund_amount: [:string, nullable: false], paid_amount: [:string, nullable: false],
|
|
12
|
+
pre_tax_amount: [:string, nullable: false], included_tax_total: [:string, nullable: false],
|
|
13
|
+
additional_tax_total: [:string, nullable: false], tax_total: [:string, nullable: false]
|
|
14
|
+
|
|
8
15
|
attributes created_at: :iso8601, updated_at: :iso8601
|
|
9
16
|
|
|
10
17
|
one :variant, resource: proc { Spree.api.admin_variant_serializer }, if: proc { expand?('variant') }
|
|
@@ -5,6 +5,11 @@ module Spree
|
|
|
5
5
|
module V3
|
|
6
6
|
module Admin
|
|
7
7
|
class ClaimSerializer < V3::ClaimSerializer
|
|
8
|
+
without_formatted_money
|
|
9
|
+
|
|
10
|
+
# No guest price gating here, so the inherited money fields are always present.
|
|
11
|
+
typelize refund_total: [:string, nullable: false]
|
|
12
|
+
|
|
8
13
|
typelize memo: [:string, nullable: true],
|
|
9
14
|
metadata: 'Record<string, unknown>',
|
|
10
15
|
created_by_id: [:string, nullable: true],
|
|
@@ -20,18 +20,10 @@ module Spree
|
|
|
20
20
|
fulfillment_id: 'string | null',
|
|
21
21
|
commission_rate_id: 'string | null',
|
|
22
22
|
kind: [:string, enum: Spree::CommissionRate::KINDS],
|
|
23
|
-
rate: :string,
|
|
24
|
-
tax_rate: :string,
|
|
25
23
|
taxability_reason: 'string | null',
|
|
26
|
-
country_code:
|
|
24
|
+
country_code: [:string, nullable: true, enum: Spree::IsoData.country_codes, enum_type_name: 'CountryCode'],
|
|
27
25
|
state_code: 'string | null',
|
|
28
|
-
|
|
29
|
-
tax_amount: :string,
|
|
30
|
-
total: :string,
|
|
31
|
-
currency: :string,
|
|
32
|
-
display_amount: :string,
|
|
33
|
-
display_tax_amount: :string,
|
|
34
|
-
display_total: :string
|
|
26
|
+
currency: [:string, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode']
|
|
35
27
|
|
|
36
28
|
# The treatment, in Spree::TaxLine's vocabulary — a seller's invoice
|
|
37
29
|
# has to explain why its fee was taxed the way it was, and the
|
|
@@ -39,14 +31,11 @@ module Spree
|
|
|
39
31
|
attributes :kind, :currency, :taxability_reason, :country_code, :state_code,
|
|
40
32
|
created_at: :iso8601, updated_at: :iso8601
|
|
41
33
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
%i[display_amount display_tax_amount display_total].each do |formatted|
|
|
48
|
-
attribute(formatted) { |line| line.public_send(formatted).to_s }
|
|
49
|
-
end
|
|
34
|
+
rate_attributes :rate, :tax_rate
|
|
35
|
+
money_attributes :amount, :tax_amount, :total
|
|
36
|
+
typelize rate: [:string, nullable: false], tax_rate: [:string, nullable: false],
|
|
37
|
+
amount: [:string, nullable: false], tax_amount: [:string, nullable: false],
|
|
38
|
+
total: [:string, nullable: false]
|
|
50
39
|
|
|
51
40
|
%i[order seller line_item fulfillment commission_rate].each do |association|
|
|
52
41
|
attribute(:"#{association}_id") { |line| line.public_send(association)&.prefixed_id }
|
|
@@ -10,21 +10,16 @@ module Spree
|
|
|
10
10
|
# were actually charged (Spree::CommissionLine) on their own branch,
|
|
11
11
|
# never the rules that produced it.
|
|
12
12
|
class CommissionRateSerializer < V3::BaseSerializer
|
|
13
|
-
# Decimals serialize as strings, like every other money-ish field on
|
|
14
|
-
# the admin API: a rate has to round-trip exactly, and a float does
|
|
15
|
-
# not promise that.
|
|
16
13
|
typelize name: :string,
|
|
17
14
|
code: 'string | null',
|
|
18
15
|
enabled: :boolean,
|
|
19
16
|
position: :number,
|
|
20
17
|
global: :boolean,
|
|
21
18
|
kind: [:string, enum: Spree::CommissionRate::KINDS],
|
|
22
|
-
value: :string,
|
|
23
19
|
amounts: 'Record<string, string>',
|
|
24
20
|
bounds: 'Record<string, { min_amount: string | null; max_amount: string | null }>',
|
|
25
21
|
tax_inclusive: :boolean,
|
|
26
22
|
include_shipping: :boolean,
|
|
27
|
-
commission_tax_rate: 'string | null',
|
|
28
23
|
metadata: 'Record<string, unknown> | null',
|
|
29
24
|
deleted_at: 'string | null'
|
|
30
25
|
|
|
@@ -32,22 +27,23 @@ module Spree
|
|
|
32
27
|
:tax_inclusive, :include_shipping, :metadata,
|
|
33
28
|
deleted_at: :iso8601, created_at: :iso8601, updated_at: :iso8601
|
|
34
29
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
30
|
+
# +value+ is the percentage a percentage rate charges; a flat fee's
|
|
31
|
+
# money lives in +amounts+, per currency.
|
|
32
|
+
rate_attributes :value, :commission_tax_rate
|
|
33
|
+
typelize value: [:string, nullable: false]
|
|
38
34
|
|
|
39
35
|
# What a flat fee charges, per currency. Empty on a percentage rate,
|
|
40
36
|
# which needs no amount of its own.
|
|
41
37
|
attribute :amounts do |rate|
|
|
42
|
-
rate.amounts.
|
|
38
|
+
rate.amounts.to_h { |currency, amount| [currency, Spree::Money::Rounding.format(amount, currency)] }
|
|
43
39
|
end
|
|
44
40
|
|
|
45
41
|
# The floor and cap a percentage charges within, per currency. Each
|
|
46
42
|
# holds only in its own currency, so a rate may bound some and leave
|
|
47
43
|
# others unbounded.
|
|
48
44
|
attribute :bounds do |rate|
|
|
49
|
-
rate.bounds.
|
|
50
|
-
bound.transform_values { |amount| amount
|
|
45
|
+
rate.bounds.to_h do |currency, bound|
|
|
46
|
+
[currency, bound.transform_values { |amount| Spree::Money::Rounding.format(amount, currency) }]
|
|
51
47
|
end
|
|
52
48
|
end
|
|
53
49
|
|
|
@@ -13,7 +13,6 @@ module Spree
|
|
|
13
13
|
typelize type: [:string, comment: 'Rule type. Built-in: seller_rule, category_rule, product_rule, item_total_rule. Extensions may register more.'],
|
|
14
14
|
commission_rate_id: :string,
|
|
15
15
|
preferences: 'Record<string, unknown>',
|
|
16
|
-
preference_schema: 'Array<{ key: string; type: string; default: unknown }>',
|
|
17
16
|
product_ids: 'Array<string> | null',
|
|
18
17
|
seller_ids: 'Array<string> | null',
|
|
19
18
|
category_ids: 'Array<string> | null'
|
|
@@ -27,7 +26,6 @@ module Spree
|
|
|
27
26
|
prefixed_id_attributes :commission_rate
|
|
28
27
|
|
|
29
28
|
attribute :preferences, &:serialized_preferences
|
|
30
|
-
attribute :preference_schema, &:serialized_preference_schema
|
|
31
29
|
|
|
32
30
|
# Reference lists are returned as prefixed IDs to match the rest of
|
|
33
31
|
# the API. Product ids are read through a join table; seller and
|
|
@@ -4,7 +4,11 @@ module Spree
|
|
|
4
4
|
module Admin
|
|
5
5
|
# No timestamps: countries are reference data supplied by the countries
|
|
6
6
|
# gem rather than records, so they have no created_at/updated_at.
|
|
7
|
+
# The dashboard names countries with Intl.DisplayNames in the admin's
|
|
8
|
+
# own language, so the Admin API sends the ISO code alone.
|
|
7
9
|
class CountrySerializer < V3::CountrySerializer
|
|
10
|
+
_attributes.delete(:name)
|
|
11
|
+
|
|
8
12
|
many :states,
|
|
9
13
|
resource: proc { Spree.api.admin_state_serializer },
|
|
10
14
|
if: proc { params[:expand]&.include?('states') }
|
|
@@ -5,13 +5,14 @@ module Spree
|
|
|
5
5
|
# Admin API Customer Serializer
|
|
6
6
|
# Full customer data including admin-only fields
|
|
7
7
|
class CustomerSerializer < V3::CustomerSerializer
|
|
8
|
+
without_formatted_money
|
|
9
|
+
|
|
8
10
|
typelize failed_attempts: :number,
|
|
9
11
|
tags: [:string, multi: true],
|
|
10
12
|
internal_note: [:string, nullable: true], internal_note_html: [:string, nullable: true],
|
|
11
13
|
metadata: 'Record<string, unknown>',
|
|
12
14
|
orders_count: :number,
|
|
13
15
|
total_spent: :string,
|
|
14
|
-
display_total_spent: :string,
|
|
15
16
|
last_order_completed_at: [:string, nullable: true],
|
|
16
17
|
default_billing_address_id: [:string, nullable: true],
|
|
17
18
|
default_shipping_address_id: [:string, nullable: true],
|
|
@@ -53,13 +54,8 @@ module Spree
|
|
|
53
54
|
end
|
|
54
55
|
|
|
55
56
|
attribute :total_spent do |user|
|
|
56
|
-
(user.attributes['total_spent'] || user.orders.complete.sum(:total)).to_s
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
attribute :display_total_spent do |user|
|
|
60
57
|
amount = user.attributes['total_spent'] || user.orders.complete.sum(:total)
|
|
61
|
-
|
|
62
|
-
Spree::Money.new(amount, currency: currency).to_s
|
|
58
|
+
Spree::Money::Rounding.format(amount, (current_store || Spree::Current.store)&.default_currency)
|
|
63
59
|
end
|
|
64
60
|
|
|
65
61
|
attribute :last_order_completed_at do |user|
|
|
@@ -6,7 +6,6 @@ module Spree
|
|
|
6
6
|
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.'],
|
|
7
7
|
active: :boolean,
|
|
8
8
|
preferences: 'Record<string, unknown>',
|
|
9
|
-
preference_schema: "Array<{ key: string; type: string; default: unknown; choices?: string[] }>",
|
|
10
9
|
product_ids: [:string, multi: true]
|
|
11
10
|
|
|
12
11
|
attributes :active, created_at: :iso8601, updated_at: :iso8601
|
|
@@ -18,7 +17,6 @@ module Spree
|
|
|
18
17
|
end
|
|
19
18
|
|
|
20
19
|
attribute :preferences, &:serialized_preferences
|
|
21
|
-
attribute :preference_schema, &:serialized_preference_schema
|
|
22
20
|
|
|
23
21
|
# Association-backed config (ExcludedProductsRule); empty for
|
|
24
22
|
# preference-only rules. Same name read and written.
|
|
@@ -13,18 +13,25 @@ module Spree
|
|
|
13
13
|
delivery_origin_group_id: [:string, nullable: true],
|
|
14
14
|
delivery_zone_id: [:string, nullable: true],
|
|
15
15
|
stock_location_ids: [:string, multi: true],
|
|
16
|
-
|
|
17
|
-
calculator_preferences: ['Record<string, unknown>', nullable: true],
|
|
16
|
+
calculator: 'TypedDeliveryCalculator | null',
|
|
18
17
|
markup_flat: [:string, nullable: true],
|
|
19
18
|
markup_percent: [:string, nullable: true],
|
|
20
19
|
available_to_sellers: :boolean,
|
|
21
20
|
seller_id: [:string, nullable: true],
|
|
22
21
|
seller_name: [:string, nullable: true]
|
|
23
22
|
|
|
24
|
-
attributes :admin_name, :storefront_visible, :tracking_url,
|
|
25
|
-
:markup_flat, :markup_percent, :available_to_sellers,
|
|
23
|
+
attributes :admin_name, :storefront_visible, :tracking_url, :available_to_sellers,
|
|
26
24
|
created_at: :iso8601, updated_at: :iso8601, deleted_at: :iso8601
|
|
27
25
|
|
|
26
|
+
# The flat markup is charged in whatever currency the rate is quoted
|
|
27
|
+
# in, so it is shown as stored rather than rounded to one currency:
|
|
28
|
+
# a rounded figure would be saved back.
|
|
29
|
+
attribute :markup_flat do |record|
|
|
30
|
+
Spree::Money::Rounding.format(record.markup_flat, (current_store || Spree::Current.store)&.default_currency, unit_price: true)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
rate_attributes :markup_percent
|
|
34
|
+
|
|
28
35
|
# Which seller runs this method, so the operator's list can say
|
|
29
36
|
# whose it is. Null is the marketplace's own
|
|
30
37
|
# (docs/plans/6.0-multi-vendor-marketplace.md, Decision 13).
|
|
@@ -48,12 +55,9 @@ module Spree
|
|
|
48
55
|
|
|
49
56
|
api_type_attributes :fulfillment_provider, :pickup_point_provider, :rate_provider
|
|
50
57
|
|
|
51
|
-
attribute :
|
|
52
|
-
record.calculator
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
attribute :calculator_preferences do |record|
|
|
56
|
-
record.calculator.respond_to?(:serialized_preferences) ? record.calculator.serialized_preferences : record.calculator&.preferences
|
|
58
|
+
attribute :calculator do |record|
|
|
59
|
+
calculator = record.calculator
|
|
60
|
+
{ type: calculator.class.api_type, preferences: calculator.serialized_preferences } if calculator
|
|
57
61
|
end
|
|
58
62
|
end
|
|
59
63
|
end
|
|
@@ -7,7 +7,15 @@ module Spree
|
|
|
7
7
|
markup_flat: [:string, nullable: true], markup_percent: [:string, nullable: true],
|
|
8
8
|
position: :number
|
|
9
9
|
|
|
10
|
-
attributes :carrier, :service, :label
|
|
10
|
+
attributes :carrier, :service, :label
|
|
11
|
+
|
|
12
|
+
attribute :markup_flat do |record|
|
|
13
|
+
Spree::Money::Rounding.format(record.markup_flat, (current_store || Spree::Current.store)&.default_currency, unit_price: true)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
rate_attributes :markup_percent
|
|
17
|
+
|
|
18
|
+
attributes :position
|
|
11
19
|
end
|
|
12
20
|
end
|
|
13
21
|
end
|
|
@@ -3,6 +3,14 @@ module Spree
|
|
|
3
3
|
module V3
|
|
4
4
|
module Admin
|
|
5
5
|
class DeliveryRateSerializer < V3::DeliveryRateSerializer
|
|
6
|
+
without_formatted_money
|
|
7
|
+
|
|
8
|
+
# No guest price gating here, so the inherited money fields are always present.
|
|
9
|
+
typelize cost: [:string, nullable: false],
|
|
10
|
+
total: [:string, nullable: false],
|
|
11
|
+
additional_tax_total: [:string, nullable: false],
|
|
12
|
+
included_tax_total: [:string, nullable: false], tax_total: [:string, nullable: false]
|
|
13
|
+
|
|
6
14
|
typelize metadata: ['Record<string, unknown>', nullable: true]
|
|
7
15
|
|
|
8
16
|
# Raw carrier payload (quote ids, service codes) — operational
|
|
@@ -3,7 +3,9 @@ module Spree
|
|
|
3
3
|
module V3
|
|
4
4
|
module Admin
|
|
5
5
|
class DiscountSerializer < V3::DiscountSerializer
|
|
6
|
-
|
|
6
|
+
without_formatted_money
|
|
7
|
+
|
|
8
|
+
typelize amount: [:string, nullable: false],
|
|
7
9
|
metadata: ['Record<string, unknown>', nullable: true]
|
|
8
10
|
|
|
9
11
|
attributes :metadata, created_at: :iso8601, updated_at: :iso8601
|
|
@@ -5,6 +5,11 @@ module Spree
|
|
|
5
5
|
module V3
|
|
6
6
|
module Admin
|
|
7
7
|
class ExchangeLineItemSerializer < V3::ExchangeLineItemSerializer
|
|
8
|
+
# No guest price gating here, so the inherited money fields are always present.
|
|
9
|
+
typelize original_price: [:string, nullable: false], new_variant_price: [:string, nullable: false],
|
|
10
|
+
price_difference: [:string, nullable: false], original_tax_total: [:string, nullable: false],
|
|
11
|
+
new_tax_total: [:string, nullable: false]
|
|
12
|
+
|
|
8
13
|
attributes created_at: :iso8601, updated_at: :iso8601
|
|
9
14
|
|
|
10
15
|
one :original_variant, resource: proc { Spree.api.admin_variant_serializer }, if: proc { expand?('original_variant') }
|
|
@@ -5,6 +5,11 @@ module Spree
|
|
|
5
5
|
module V3
|
|
6
6
|
module Admin
|
|
7
7
|
class ExchangeSerializer < V3::ExchangeSerializer
|
|
8
|
+
without_formatted_money
|
|
9
|
+
|
|
10
|
+
# No guest price gating here, so the inherited money fields are always present.
|
|
11
|
+
typelize price_difference: [:string, nullable: false]
|
|
12
|
+
|
|
8
13
|
typelize memo: [:string, nullable: true],
|
|
9
14
|
metadata: 'Record<string, unknown>',
|
|
10
15
|
stock_location_id: [:string, nullable: true],
|
|
@@ -3,7 +3,9 @@ module Spree
|
|
|
3
3
|
module V3
|
|
4
4
|
module Admin
|
|
5
5
|
class FeeSerializer < V3::FeeSerializer
|
|
6
|
-
|
|
6
|
+
without_formatted_money
|
|
7
|
+
|
|
8
|
+
typelize amount: [:string, nullable: false],
|
|
7
9
|
metadata: ['Record<string, unknown>', nullable: true]
|
|
8
10
|
|
|
9
11
|
attributes :metadata, created_at: :iso8601, updated_at: :iso8601
|