spree_api 6.0.0.rc1 → 6.0.0.rc3
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/store/search_provider_support.rb +8 -3
- 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 +19 -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 +54 -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 +31 -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 +6 -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 +4 -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 +16 -30
- 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 +11 -6
- data/app/serializers/spree/api/v3/price_serializer.rb +17 -10
- 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 +12 -0
- data/app/serializers/spree/api/v3/seller/price_serializer.rb +13 -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
|
@@ -3,18 +3,22 @@ module Spree
|
|
|
3
3
|
module V3
|
|
4
4
|
module Admin
|
|
5
5
|
class RefundSerializer < V3::RefundSerializer
|
|
6
|
+
# The Store API keeps this deprecated name until 6.1.
|
|
7
|
+
_attributes.delete(:reimbursement_id)
|
|
8
|
+
|
|
6
9
|
typelize payment_id: [:string, nullable: true],
|
|
7
10
|
refund_reason_id: [:string, nullable: true],
|
|
8
11
|
refunder_id: [:string, nullable: true],
|
|
9
12
|
refunder_type: [:string, nullable: true, enum: Spree::Actor::BUILT_IN_KINDS, enum_type_name: 'ActorKind'],
|
|
10
|
-
metadata: 'Record<string, unknown>'
|
|
11
|
-
tax_amount: :string
|
|
13
|
+
metadata: 'Record<string, unknown>'
|
|
12
14
|
|
|
13
15
|
attributes :metadata,
|
|
14
16
|
created_at: :iso8601, updated_at: :iso8601
|
|
15
17
|
|
|
16
18
|
# The tax inside the amount, when what was refunded carried tax.
|
|
17
|
-
|
|
19
|
+
money_attributes :tax_amount
|
|
20
|
+
typelize tax_amount: [:string, nullable: false]
|
|
21
|
+
|
|
18
22
|
# Who issued it — an admin user, or the API key an integration
|
|
19
23
|
# refunded through.
|
|
20
24
|
actor_attributes :refunder
|
|
@@ -2,8 +2,9 @@ module Spree
|
|
|
2
2
|
module Api
|
|
3
3
|
module V3
|
|
4
4
|
module Admin
|
|
5
|
-
# Decorates a Spree::Reporting::Result for the wire: money
|
|
6
|
-
# strings
|
|
5
|
+
# Decorates a Spree::Reporting::Result for the wire: money as decimal
|
|
6
|
+
# strings in the result's currency, ratios and growth as plain decimal
|
|
7
|
+
# strings, counts as integers, money display strings, ISO ranges, and dimension hydration (raw group keys become
|
|
7
8
|
# { id, label, meta } display payloads — see Spree::Reporting::Hydration).
|
|
8
9
|
class ReportingResultSerializer
|
|
9
10
|
attr_reader :result, :store, :params
|
|
@@ -39,7 +40,13 @@ module Spree
|
|
|
39
40
|
end
|
|
40
41
|
|
|
41
42
|
def metric_payload(name, payload)
|
|
43
|
+
metric = Spree.reporting.metrics[name]
|
|
42
44
|
output = payload.dup
|
|
45
|
+
if metric
|
|
46
|
+
output[:value] = metric.format_value(payload[:value], result.meta[:currency])
|
|
47
|
+
output[:previous] = metric.format_value(payload[:previous], result.meta[:currency]) if payload.key?(:previous)
|
|
48
|
+
end
|
|
49
|
+
output[:growth] = Spree::Money::Rounding.format_decimal(payload[:growth]) if payload.key?(:growth)
|
|
43
50
|
output[:display] = money(payload[:value]) if money_metrics.include?(name)
|
|
44
51
|
output
|
|
45
52
|
end
|
|
@@ -5,6 +5,14 @@ module Spree
|
|
|
5
5
|
module V3
|
|
6
6
|
module Admin
|
|
7
7
|
class ReturnLineItemSerializer < V3::ReturnLineItemSerializer
|
|
8
|
+
without_formatted_money
|
|
9
|
+
|
|
10
|
+
# No guest price gating here, so the inherited money fields are always present.
|
|
11
|
+
typelize pre_tax_amount: [:string, nullable: false],
|
|
12
|
+
included_tax_total: [:string, nullable: false], additional_tax_total: [:string, nullable: false],
|
|
13
|
+
tax_total: [:string, nullable: false],
|
|
14
|
+
refund_amount: [:string, nullable: false]
|
|
15
|
+
|
|
8
16
|
attributes created_at: :iso8601, updated_at: :iso8601
|
|
9
17
|
|
|
10
18
|
one :variant, resource: proc { Spree.api.admin_variant_serializer }, if: proc { expand?('variant') }
|
|
@@ -5,15 +5,16 @@ module Spree
|
|
|
5
5
|
module V3
|
|
6
6
|
module Admin
|
|
7
7
|
class ReturnSerializer < V3::ReturnSerializer
|
|
8
|
+
without_formatted_money
|
|
9
|
+
|
|
8
10
|
typelize memo: [:string, nullable: true],
|
|
9
11
|
metadata: 'Record<string, unknown>',
|
|
10
12
|
documents: "Array<{ kind: string; url: string }>",
|
|
11
13
|
stock_location_id: [:string, nullable: true],
|
|
12
14
|
created_by_id: [:string, nullable: true],
|
|
13
15
|
created_by_type: [:string, nullable: true, enum: Spree::Actor::BUILT_IN_KINDS, enum_type_name: 'ActorKind'],
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
refundable_total: :string
|
|
16
|
+
refund_total: [:string, nullable: false],
|
|
17
|
+
refund_tax_total: [:string, nullable: false]
|
|
17
18
|
|
|
18
19
|
attributes :memo, :metadata, created_at: :iso8601, updated_at: :iso8601
|
|
19
20
|
|
|
@@ -21,7 +22,10 @@ module Spree
|
|
|
21
22
|
|
|
22
23
|
actor_attributes :created_by
|
|
23
24
|
|
|
24
|
-
|
|
25
|
+
money_attributes :refunded_total, :refundable_total
|
|
26
|
+
typelize refunded_total: [:string, nullable: false],
|
|
27
|
+
refundable_total: [:string, nullable: false]
|
|
28
|
+
|
|
25
29
|
many :return_line_items,
|
|
26
30
|
resource: proc { Spree.api.admin_return_line_item_serializer },
|
|
27
31
|
if: proc { expand?('return_line_items') }
|
|
@@ -6,14 +6,14 @@ module Spree
|
|
|
6
6
|
# operator. A computed value rather than a record, so it carries no id.
|
|
7
7
|
class SellerBalanceSerializer < V3::BaseSerializer
|
|
8
8
|
typelize seller_id: :string,
|
|
9
|
-
currency: :string,
|
|
10
|
-
settlement_currency: :string,
|
|
9
|
+
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
|
|
|
@@ -26,9 +26,14 @@ module Spree
|
|
|
26
26
|
|
|
27
27
|
attribute(:seller_id) { |balance| balance.seller&.prefixed_id }
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
# Earnings are in the currency the sales were priced in; what the
|
|
30
|
+
# account holds is in the one it settles in.
|
|
31
|
+
%i[earned pending].each do |figure|
|
|
32
|
+
attribute(figure) { |balance| Spree::Money::Rounding.format(balance.public_send(figure), balance.currency) }
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
%i[payable paid balance].each do |figure|
|
|
36
|
+
attribute(figure) { |balance| Spree::Money::Rounding.format(balance.public_send(figure), balance.settlement_currency) }
|
|
32
37
|
end
|
|
33
38
|
end
|
|
34
39
|
end
|
|
@@ -13,19 +13,17 @@ module Spree
|
|
|
13
13
|
status: [:string, enum: Spree::SellerPayout.statuses, enum_type_name: 'SellerPayoutStatus'],
|
|
14
14
|
provider: [:string, comment: 'Payout provider. Built-in: system. Provider gems register more (e.g. stripe).'],
|
|
15
15
|
amount: :string,
|
|
16
|
-
currency: :string,
|
|
16
|
+
currency: [:string, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'],
|
|
17
17
|
reference: 'string | null',
|
|
18
18
|
period_start: 'string | null',
|
|
19
19
|
period_end: 'string | null',
|
|
20
|
-
transfers_count: :number
|
|
21
|
-
display_amount: :string
|
|
20
|
+
transfers_count: :number
|
|
22
21
|
|
|
23
22
|
attributes :status, :currency, :reference, :metadata,
|
|
24
23
|
period_start: :iso8601, period_end: :iso8601,
|
|
25
24
|
created_at: :iso8601, updated_at: :iso8601
|
|
26
25
|
|
|
27
|
-
attribute(:amount) { |payout| payout.amount
|
|
28
|
-
attribute(:display_amount) { |payout| payout.display_amount.to_s }
|
|
26
|
+
attribute(:amount) { |payout| Spree::Money::Rounding.format(payout.amount, payout.currency) }
|
|
29
27
|
attribute(:seller_id) { |payout| payout.seller&.prefixed_id }
|
|
30
28
|
attribute(:seller_name) { |payout| payout.seller&.name }
|
|
31
29
|
|
|
@@ -37,8 +37,10 @@ module Spree
|
|
|
37
37
|
# response.
|
|
38
38
|
_attributes.delete(:policies)
|
|
39
39
|
|
|
40
|
+
# Stored without a currency, so it is shown as stored rather than
|
|
41
|
+
# rounded to the store's: a rounded figure would be saved back.
|
|
40
42
|
attribute :minimum_payout_amount do |seller|
|
|
41
|
-
seller.minimum_payout_amount&.
|
|
43
|
+
Spree::Money::Rounding.format(seller.minimum_payout_amount, (current_store || Spree::Current.store)&.default_currency, unit_price: true)
|
|
42
44
|
end
|
|
43
45
|
|
|
44
46
|
# Approved but away still cannot sell, and the list has to say so
|
|
@@ -18,23 +18,22 @@ module Spree
|
|
|
18
18
|
status: [:string, enum: Spree::SellerTransfer.statuses, enum_type_name: 'SellerTransferStatus'],
|
|
19
19
|
provider: [:string, comment: 'Payout provider. Built-in: system. Provider gems register more (e.g. stripe).'],
|
|
20
20
|
amount: :string,
|
|
21
|
-
currency: :string,
|
|
21
|
+
currency: [:string, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'],
|
|
22
22
|
settled_amount: 'string | null',
|
|
23
|
-
settled_currency:
|
|
23
|
+
settled_currency: [:string, nullable: true, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'],
|
|
24
24
|
converted: :boolean,
|
|
25
|
-
reference: 'string | null'
|
|
26
|
-
display_amount: :string
|
|
25
|
+
reference: 'string | null'
|
|
27
26
|
|
|
28
27
|
attributes :kind, :status, :currency, :reference, :metadata,
|
|
29
28
|
created_at: :iso8601, updated_at: :iso8601
|
|
30
29
|
|
|
31
|
-
|
|
32
|
-
attribute(:amount) { |transfer| transfer.amount&.to_s }
|
|
33
|
-
attribute(:display_amount) { |transfer| transfer.display_amount.to_s }
|
|
30
|
+
attribute(:amount) { |transfer| Spree::Money::Rounding.format(transfer.amount, transfer.currency) }
|
|
34
31
|
|
|
35
32
|
# What the seller's account received, when the provider converted on
|
|
36
33
|
# the way in. Null when it settled in the currency of the sale.
|
|
37
|
-
attribute(:settled_amount)
|
|
34
|
+
attribute(:settled_amount) do |transfer|
|
|
35
|
+
Spree::Money::Rounding.format(transfer.settled_amount, transfer.settled_currency || transfer.currency)
|
|
36
|
+
end
|
|
38
37
|
attribute(:settled_currency) { |transfer| transfer.settled_currency }
|
|
39
38
|
attribute(:converted) { |transfer| transfer.converted? }
|
|
40
39
|
|
|
@@ -14,9 +14,7 @@ module Spree
|
|
|
14
14
|
carrier_name: [:string, nullable: true],
|
|
15
15
|
service: [:string, nullable: true],
|
|
16
16
|
tracking_number: [:string, nullable: true],
|
|
17
|
-
|
|
18
|
-
currency: [:string, nullable: true],
|
|
19
|
-
display_cost: :string,
|
|
17
|
+
currency: [:string, nullable: true, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'],
|
|
20
18
|
format: [:string, nullable: true],
|
|
21
19
|
external_id: [:string, nullable: true],
|
|
22
20
|
integration_id: [:string, nullable: true],
|
|
@@ -34,7 +32,9 @@ module Spree
|
|
|
34
32
|
Spree::Base.polymorphic_api_type(shipping_label.owner_type)
|
|
35
33
|
end
|
|
36
34
|
|
|
37
|
-
|
|
35
|
+
money_attributes :cost, currency: ->(label) { label.currency.presence || label.store.default_currency }
|
|
36
|
+
typelize cost: [:string, nullable: false]
|
|
37
|
+
|
|
38
38
|
prefixed_id_attributes :integration
|
|
39
39
|
|
|
40
40
|
# Whether the file is still being fetched from the carrier; the
|
|
@@ -3,6 +3,9 @@ module Spree
|
|
|
3
3
|
module V3
|
|
4
4
|
module Admin
|
|
5
5
|
class StockLocationSerializer < V3::StockLocationSerializer
|
|
6
|
+
# The Store API keeps these deprecated names until 6.1.
|
|
7
|
+
%i[country_iso state_abbr].each { |key| _attributes.delete(key) }
|
|
8
|
+
|
|
6
9
|
include Concerns::ExternalReferencesAttribute
|
|
7
10
|
|
|
8
11
|
typelize seller_id: [:string, nullable: true], seller_name: [:string, nullable: true],
|
|
@@ -13,7 +13,6 @@ module Spree
|
|
|
13
13
|
stock_transfer_number: [:string, nullable: true],
|
|
14
14
|
purchase_order_number: [:string, nullable: true],
|
|
15
15
|
unit_cost: [:string, nullable: true],
|
|
16
|
-
display_unit_cost: [:string, nullable: true],
|
|
17
16
|
stock_location_id: [:string, nullable: true],
|
|
18
17
|
stock_location_name: [:string, nullable: true],
|
|
19
18
|
variant_id: [:string, nullable: true],
|
|
@@ -101,11 +100,8 @@ module Spree
|
|
|
101
100
|
# purchase. Null on a transfer or a return — moving stock the
|
|
102
101
|
# merchant already owns is not buying it.
|
|
103
102
|
attribute :unit_cost do |movement|
|
|
104
|
-
movement.
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
attribute :display_unit_cost do |movement|
|
|
108
|
-
movement.display_unit_cost&.to_s
|
|
103
|
+
currency = movement.purchase_order&.currency || (current_store || Spree::Current.store)&.default_currency
|
|
104
|
+
Spree::Money::Rounding.format(movement.unit_cost, currency, unit_price: true)
|
|
109
105
|
end
|
|
110
106
|
end
|
|
111
107
|
end
|
|
@@ -5,6 +5,11 @@ module Spree
|
|
|
5
5
|
# One line of a store credit's ledger: how the balance moved and what
|
|
6
6
|
# moved it. Read-only — events are written by the credit itself.
|
|
7
7
|
class StoreCreditEventSerializer < V3::StoreCreditEventSerializer
|
|
8
|
+
without_formatted_money
|
|
9
|
+
|
|
10
|
+
# No guest price gating here, so the inherited money fields are always present.
|
|
11
|
+
typelize amount: [:string, nullable: false]
|
|
12
|
+
|
|
8
13
|
typelize originator_type: [:string, nullable: true],
|
|
9
14
|
originator_id: [:string, nullable: true],
|
|
10
15
|
store_credit_id: :string
|
|
@@ -3,11 +3,14 @@ module Spree
|
|
|
3
3
|
module V3
|
|
4
4
|
module Admin
|
|
5
5
|
class StoreCreditSerializer < V3::StoreCreditSerializer
|
|
6
|
+
without_formatted_money
|
|
7
|
+
|
|
6
8
|
typelize customer_id: [:string, nullable: true],
|
|
7
9
|
created_by_id: [:string, nullable: true],
|
|
8
10
|
memo: [:string, nullable: true],
|
|
9
|
-
|
|
10
|
-
|
|
11
|
+
amount: [:string, nullable: false], amount_used: [:string, nullable: false],
|
|
12
|
+
amount_remaining: [:string, nullable: false],
|
|
13
|
+
amount_authorized: [:string, nullable: false],
|
|
11
14
|
outstanding: :boolean,
|
|
12
15
|
originator_type: [:string, nullable: true],
|
|
13
16
|
originator_id: [:string, nullable: true],
|
|
@@ -16,12 +19,14 @@ module Spree
|
|
|
16
19
|
attributes :memo, :metadata,
|
|
17
20
|
created_at: :iso8601, updated_at: :iso8601
|
|
18
21
|
|
|
19
|
-
|
|
22
|
+
money_attributes :amount_authorized
|
|
20
23
|
# Answers the same question as the `outstanding` filter, so the row
|
|
21
24
|
# and the filter cannot disagree.
|
|
22
25
|
attribute :outstanding, &:outstanding?
|
|
23
26
|
|
|
24
|
-
|
|
27
|
+
# money_attributes types its fields nullable for gated guests; the
|
|
28
|
+
# Admin API never gates prices.
|
|
29
|
+
typelize amount_authorized: [:string, nullable: false]
|
|
25
30
|
prefixed_id_attributes :customer, :created_by
|
|
26
31
|
|
|
27
32
|
# Why the credit exists: the return, exchange, claim or gift card
|
|
@@ -4,119 +4,38 @@ module Spree
|
|
|
4
4
|
module Admin
|
|
5
5
|
class StoreSerializer < V3::BaseSerializer
|
|
6
6
|
typelize name: :string, url: :string, code: :string, api_url: :string,
|
|
7
|
-
|
|
8
|
-
default_currency: :string, default_locale: :string,
|
|
7
|
+
default_currency: [:string, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'], default_locale: [:string, enum: Spree::Locales::ALL, enum_type_name: 'LocaleCode'],
|
|
9
8
|
default_country_code: [:string, nullable: true],
|
|
10
|
-
supported_currencies: [:string, multi: true],
|
|
11
|
-
supported_locales: [:string, multi: true],
|
|
12
|
-
available_locales: [:string, multi: true],
|
|
9
|
+
supported_currencies: [:string, multi: true, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'],
|
|
10
|
+
supported_locales: [:string, multi: true, enum: Spree::Locales::ALL, enum_type_name: 'LocaleCode'],
|
|
11
|
+
available_locales: [:string, multi: true, enum: Spree::Locales::ALL, enum_type_name: 'LocaleCode'],
|
|
13
12
|
logo_url: [:string, nullable: true],
|
|
14
13
|
mailer_logo_url: [:string, nullable: true],
|
|
15
14
|
mail_from_address: [:string, nullable: true],
|
|
16
15
|
customer_support_email: [:string, nullable: true],
|
|
17
16
|
new_order_notifications_email: [:string, nullable: true],
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
preferred_email_background_color: [:string, nullable: true],
|
|
21
|
-
preferred_email_card_color: [:string, nullable: true],
|
|
22
|
-
preferred_email_text_color: [:string, nullable: true],
|
|
23
|
-
preferred_email_heading_color: [:string, nullable: true],
|
|
24
|
-
preferred_email_font: [:string, nullable: true, enum: Spree::Emails::Branding::FONTS.keys],
|
|
25
|
-
preferred_admin_locale: [:string, nullable: true],
|
|
26
|
-
preferred_timezone: :string,
|
|
27
|
-
preferred_weight_unit: [:string, enum: Spree::Variant::WEIGHT_UNITS],
|
|
28
|
-
preferred_unit_system: :string,
|
|
29
|
-
preferred_storefront_access: :string,
|
|
30
|
-
preferred_guest_checkout: :boolean,
|
|
31
|
-
preferred_always_include_confirm_step: :boolean,
|
|
32
|
-
preferred_company_field_enabled: :boolean,
|
|
33
|
-
preferred_address_requires_company: :boolean,
|
|
34
|
-
preferred_address_requires_phone: :boolean,
|
|
35
|
-
preferred_capture_method: :string,
|
|
36
|
-
preferred_track_inventory_levels: :boolean,
|
|
37
|
-
preferred_stock_reservations_enabled: :boolean,
|
|
38
|
-
preferred_low_stock_threshold: :number,
|
|
39
|
-
preferred_tax_using_ship_address: :boolean,
|
|
40
|
-
preferred_track_price_history: :boolean,
|
|
41
|
-
preferred_show_products_without_price: :boolean,
|
|
42
|
-
preferred_disable_sku_validation: :boolean,
|
|
43
|
-
preferred_order_routing_strategy: [:string, comment: 'Order routing strategy. Built-in: rules. Extensions may register more.'],
|
|
44
|
-
preferred_pricing_provider: :string,
|
|
45
|
-
preferred_inventory_provider: :string,
|
|
46
|
-
preferred_pricing_provider_failure_policy: :string,
|
|
47
|
-
preferred_inventory_provider_failure_policy: :string,
|
|
48
|
-
preferred_payout_provider: [:string, nullable: true, comment: 'Payout provider; null uses the installation default. Built-in: system. Provider gems register more (e.g. stripe).'],
|
|
49
|
-
preferred_default_payouts_schedule_interval: :string,
|
|
50
|
-
preferred_default_minimum_payout_amount: :number,
|
|
51
|
-
preferred_auto_approve_sellers: :boolean,
|
|
52
|
-
preferred_auto_approve_seller_products: :boolean,
|
|
53
|
-
preferred_send_seller_transactional_emails: :boolean,
|
|
54
|
-
preferred_default_commission_tax_rate: :number,
|
|
55
|
-
preferred_document_number_format: :string,
|
|
56
|
-
preferred_order_number_prefix: :string,
|
|
57
|
-
preferred_order_number_suffix: :string,
|
|
58
|
-
preferred_order_number_sequence_start: :number,
|
|
17
|
+
order_routing_strategy: [:string, comment: 'Order routing strategy. Built-in: rules. Extensions may register more.'],
|
|
18
|
+
payout_provider: [:string, nullable: true, comment: 'Payout provider; null uses the installation default. Built-in: system. Provider gems register more (e.g. stripe).'],
|
|
59
19
|
order_number_sequence_started: :boolean,
|
|
60
|
-
preferred_limit_digital_download_count: :boolean,
|
|
61
|
-
preferred_digital_asset_authorized_clicks: :number,
|
|
62
|
-
preferred_limit_digital_download_days: :boolean,
|
|
63
|
-
preferred_digital_asset_authorized_days: :number,
|
|
64
20
|
metadata: 'Record<string, unknown>'
|
|
65
21
|
|
|
66
22
|
attributes :metadata,
|
|
67
23
|
:name,
|
|
68
24
|
:code,
|
|
69
|
-
:preferred_storefront_url,
|
|
70
25
|
:default_currency,
|
|
71
26
|
:default_locale,
|
|
72
27
|
:default_country_code,
|
|
73
28
|
:mail_from_address,
|
|
74
29
|
:customer_support_email,
|
|
75
30
|
:new_order_notifications_email,
|
|
76
|
-
:preferred_send_consumer_transactional_emails,
|
|
77
|
-
:preferred_email_accent_color,
|
|
78
|
-
:preferred_email_background_color,
|
|
79
|
-
:preferred_email_card_color,
|
|
80
|
-
:preferred_email_text_color,
|
|
81
|
-
:preferred_email_heading_color,
|
|
82
|
-
:preferred_email_font,
|
|
83
|
-
:preferred_admin_locale,
|
|
84
|
-
:preferred_timezone,
|
|
85
|
-
:preferred_weight_unit,
|
|
86
|
-
:preferred_unit_system,
|
|
87
|
-
:preferred_storefront_access,
|
|
88
|
-
:preferred_guest_checkout,
|
|
89
|
-
:preferred_always_include_confirm_step,
|
|
90
|
-
:preferred_company_field_enabled,
|
|
91
|
-
:preferred_address_requires_company,
|
|
92
|
-
:preferred_address_requires_phone,
|
|
93
|
-
:preferred_capture_method,
|
|
94
|
-
:preferred_track_inventory_levels,
|
|
95
|
-
:preferred_stock_reservations_enabled,
|
|
96
|
-
:preferred_low_stock_threshold,
|
|
97
|
-
:preferred_tax_using_ship_address,
|
|
98
|
-
:preferred_track_price_history,
|
|
99
|
-
:preferred_show_products_without_price,
|
|
100
|
-
:preferred_disable_sku_validation,
|
|
101
|
-
:preferred_pricing_provider,
|
|
102
|
-
:preferred_inventory_provider,
|
|
103
|
-
:preferred_pricing_provider_failure_policy,
|
|
104
|
-
:preferred_inventory_provider_failure_policy,
|
|
105
|
-
:preferred_default_payouts_schedule_interval,
|
|
106
|
-
:preferred_auto_approve_sellers,
|
|
107
|
-
:preferred_auto_approve_seller_products,
|
|
108
|
-
:preferred_send_seller_transactional_emails,
|
|
109
|
-
:preferred_document_number_format,
|
|
110
|
-
:preferred_order_number_prefix,
|
|
111
|
-
:preferred_order_number_suffix,
|
|
112
|
-
:preferred_order_number_sequence_start,
|
|
113
|
-
:preferred_limit_digital_download_count,
|
|
114
|
-
:preferred_digital_asset_authorized_clicks,
|
|
115
|
-
:preferred_limit_digital_download_days,
|
|
116
|
-
:preferred_digital_asset_authorized_days,
|
|
117
31
|
created_at: :iso8601, updated_at: :iso8601
|
|
118
32
|
|
|
119
|
-
api_type_attributes :
|
|
33
|
+
api_type_attributes :order_routing_strategy, :payout_provider
|
|
34
|
+
|
|
35
|
+
# The first two read through `api_type_attributes` above; the money
|
|
36
|
+
# and rate settings are formatted below.
|
|
37
|
+
preference_attributes Spree::Store, except: %i[order_routing_strategy payout_provider
|
|
38
|
+
default_minimum_payout_amount default_commission_tax_rate]
|
|
120
39
|
|
|
121
40
|
# Once the counter has issued a number the starting value no longer
|
|
122
41
|
# applies, so the settings page can say that instead of accepting a
|
|
@@ -125,14 +44,14 @@ module Spree
|
|
|
125
44
|
Spree::NumberSequence.started?(store: store)
|
|
126
45
|
end
|
|
127
46
|
|
|
128
|
-
|
|
129
|
-
store.preferred_default_minimum_payout_amount&.to_f
|
|
130
|
-
end
|
|
47
|
+
typelize default_minimum_payout_amount: [:string, nullable: true]
|
|
131
48
|
|
|
132
|
-
attribute :
|
|
133
|
-
store.
|
|
49
|
+
attribute :default_minimum_payout_amount do |store|
|
|
50
|
+
Spree::Money::Rounding.format(store.preferred_default_minimum_payout_amount, store.default_currency, unit_price: true)
|
|
134
51
|
end
|
|
135
52
|
|
|
53
|
+
rate_attributes :default_commission_tax_rate
|
|
54
|
+
|
|
136
55
|
attribute :url, &:storefront_url
|
|
137
56
|
|
|
138
57
|
# The backend's own public URL — what a headless client sets as its
|
|
@@ -15,7 +15,7 @@ module Spree
|
|
|
15
15
|
city: 'string | null',
|
|
16
16
|
state_name: 'string | null',
|
|
17
17
|
state_code: 'string | null',
|
|
18
|
-
country_code:
|
|
18
|
+
country_code: [:string, nullable: true, enum: Spree::IsoData.country_codes, enum_type_name: 'CountryCode'],
|
|
19
19
|
postal_code: 'string | null',
|
|
20
20
|
purchase_orders_count: :number,
|
|
21
21
|
can_be_deleted: :boolean,
|
|
@@ -7,8 +7,10 @@ module Spree
|
|
|
7
7
|
class TaxExemptionCertificateSerializer < V3::BaseSerializer
|
|
8
8
|
typelize certificate_number: :string, reason_code: :string, status: [:string, enum: Spree::TaxExemptionCertificate.statuses, enum_type_name: 'TaxExemptionCertificateStatus'],
|
|
9
9
|
issuing_authority: [:string, nullable: true],
|
|
10
|
+
issued_at: [:string, nullable: true], expires_at: [:string, nullable: true],
|
|
11
|
+
verified_at: [:string, nullable: true],
|
|
10
12
|
company_id: :string,
|
|
11
|
-
country_code: [:string, nullable: true], state_code: [:string, nullable: true],
|
|
13
|
+
country_code: [:string, nullable: true, enum: Spree::IsoData.country_codes, enum_type_name: 'CountryCode'], state_code: [:string, nullable: true],
|
|
12
14
|
active: :boolean, lapsed: :boolean, can_be_deleted: :boolean,
|
|
13
15
|
document_filename: [:string, nullable: true],
|
|
14
16
|
document_byte_size: ['number | null'],
|
|
@@ -3,9 +3,11 @@ module Spree
|
|
|
3
3
|
module V3
|
|
4
4
|
module Admin
|
|
5
5
|
class TaxLineSerializer < V3::TaxLineSerializer
|
|
6
|
-
|
|
6
|
+
without_formatted_money
|
|
7
|
+
|
|
8
|
+
typelize amount: [:string, nullable: false],
|
|
7
9
|
provider_id: [:string, nullable: true], metadata: ['Record<string, unknown>', nullable: true],
|
|
8
|
-
taxability_reason: [:string, nullable: true], country_code: [:string, nullable: true],
|
|
10
|
+
taxability_reason: [:string, nullable: true], country_code: [:string, nullable: true, enum: Spree::IsoData.country_codes, enum_type_name: 'CountryCode'],
|
|
9
11
|
state_code: [:string, nullable: true], data: ['Record<string, unknown>', nullable: true],
|
|
10
12
|
original_tax_line_id: [:string, nullable: true]
|
|
11
13
|
|
|
@@ -6,13 +6,11 @@ module Spree
|
|
|
6
6
|
# customer-facing. What the customer sees is the label on a tax line.
|
|
7
7
|
class TaxRateSerializer < V3::BaseSerializer
|
|
8
8
|
typelize name: :string,
|
|
9
|
-
amount: :string,
|
|
10
|
-
amount_percentage: [:number, nullable: true],
|
|
11
9
|
included_in_price: :boolean,
|
|
12
10
|
show_rate_in_label: :boolean,
|
|
13
11
|
tax_category_id: [:string, nullable: true],
|
|
14
12
|
store_id: [:string, nullable: true],
|
|
15
|
-
country_code: [:string, nullable: true],
|
|
13
|
+
country_code: [:string, nullable: true, enum: Spree::IsoData.country_codes, enum_type_name: 'CountryCode'],
|
|
16
14
|
state_code: [:string, nullable: true],
|
|
17
15
|
metadata: ['Record<string, unknown>', nullable: true],
|
|
18
16
|
deleted_at: [:string, nullable: true]
|
|
@@ -20,15 +18,7 @@ module Spree
|
|
|
20
18
|
attributes :name, :included_in_price, :show_rate_in_label, :metadata,
|
|
21
19
|
created_at: :iso8601, updated_at: :iso8601, deleted_at: :iso8601
|
|
22
20
|
|
|
23
|
-
|
|
24
|
-
tax_rate.amount&.to_s
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
# A real number, unlike the money-style `amount` string — this is a
|
|
28
|
-
# percentage for display, not an amount to round-trip exactly.
|
|
29
|
-
attribute :amount_percentage do |tax_rate|
|
|
30
|
-
tax_rate.amount_percentage&.to_f
|
|
31
|
-
end
|
|
21
|
+
rate_attributes :rate, :rate_percent
|
|
32
22
|
|
|
33
23
|
prefixed_id_attributes :tax_category, :store
|
|
34
24
|
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# What the last update check found (Spree::UpdateStatus). A computed
|
|
6
|
+
# value rather than a record, so it carries no id.
|
|
7
|
+
class UpdateStatusSerializer < V3::BaseSerializer
|
|
8
|
+
typelize current_version: :string,
|
|
9
|
+
enabled: :boolean,
|
|
10
|
+
update_available: :boolean,
|
|
11
|
+
latest_version: [:string, nullable: true],
|
|
12
|
+
latest_release_url: [:string, nullable: true],
|
|
13
|
+
latest_release_published_at: [:string, nullable: true],
|
|
14
|
+
checked_at: [:string, nullable: true]
|
|
15
|
+
|
|
16
|
+
_attributes.delete(:id)
|
|
17
|
+
|
|
18
|
+
attributes :current_version, :enabled, checked_at: :iso8601
|
|
19
|
+
|
|
20
|
+
attribute(:update_available) { |status| status.update_available? }
|
|
21
|
+
attribute(:latest_version) { |status| status.latest_release&.dig(:version) }
|
|
22
|
+
attribute(:latest_release_url) { |status| status.latest_release&.dig(:url) }
|
|
23
|
+
attribute(:latest_release_published_at) { |status| status.latest_release&.dig(:published_at)&.iso8601(3) }
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -5,19 +5,21 @@ module Spree
|
|
|
5
5
|
# Admin API Variant Serializer
|
|
6
6
|
# Full variant data including admin-only fields
|
|
7
7
|
class VariantSerializer < V3::VariantSerializer
|
|
8
|
+
without_formatted_money
|
|
9
|
+
|
|
8
10
|
include Concerns::ExternalReferencesAttribute
|
|
9
11
|
|
|
10
12
|
|
|
11
13
|
typelize product_name: :string,
|
|
12
14
|
position: :number, tax_category_id: [:string, nullable: true],
|
|
13
|
-
cost_price: [:string, nullable: true], cost_currency: [:string, nullable: true],
|
|
15
|
+
cost_price: [:string, nullable: true], cost_currency: [:string, nullable: true, enum: Spree::Money::Rounding::CURRENCY_CODES, enum_type_name: 'CurrencyCode'],
|
|
14
16
|
barcode: [:string, nullable: true],
|
|
15
17
|
available_stock: [:number, nullable: true],
|
|
16
18
|
reserved_quantity: :number, total_on_hand: [:number, nullable: true],
|
|
17
19
|
preorderable: :boolean, preorder_ships_at: [:string, nullable: true],
|
|
18
20
|
backorder_limit: [:number, nullable: true],
|
|
19
21
|
hs_code: [:string, nullable: true],
|
|
20
|
-
country_of_origin: [:string, nullable: true],
|
|
22
|
+
country_of_origin: [:string, nullable: true, enum: Spree::IsoData.country_codes, enum_type_name: 'CountryCode'],
|
|
21
23
|
customs_description: [:string, nullable: true],
|
|
22
24
|
deleted_at: [:string, nullable: true],
|
|
23
25
|
delivery_profile_id: [:string, nullable: true],
|
|
@@ -32,7 +34,7 @@ module Spree
|
|
|
32
34
|
# The last three override the store serializer's buyer-resolved
|
|
33
35
|
# values with the variant's OWN: a merchant edits what is stored on
|
|
34
36
|
# the row, not what some catalog resolves to for a buyer they are not.
|
|
35
|
-
attributes :metadata, :position, :
|
|
37
|
+
attributes :metadata, :position, :cost_currency,
|
|
36
38
|
:barcode, :backorder_limit,
|
|
37
39
|
:hs_code, :country_of_origin, :customs_description,
|
|
38
40
|
:minimum_order_quantity, :order_multiple, :purchase_unit,
|
|
@@ -40,6 +42,8 @@ module Spree
|
|
|
40
42
|
preorder_ships_at: :iso8601, deleted_at: :iso8601,
|
|
41
43
|
created_at: :iso8601, updated_at: :iso8601
|
|
42
44
|
|
|
45
|
+
money_attributes :cost_price, currency: :cost_currency, unit_price: true
|
|
46
|
+
|
|
43
47
|
attribute :preorderable, &:preorderable?
|
|
44
48
|
|
|
45
49
|
# Stored on the row only — nil means inherit from the product. The
|