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
|
@@ -9,6 +9,22 @@ module Spree
|
|
|
9
9
|
|
|
10
10
|
before_action :find_cart!
|
|
11
11
|
|
|
12
|
+
request_params 'AddLineItemParams', action: :create do |body|
|
|
13
|
+
body.attribute :variant_id, :id, required: true, example: 'variant_abc123'
|
|
14
|
+
body.attribute :quantity, :integer, example: 2, description: 'Defaults to 1.'
|
|
15
|
+
body.attribute :metadata, :hash,
|
|
16
|
+
example: { gift_message: 'Happy Birthday!' },
|
|
17
|
+
description: 'Write-only key-value metadata.'
|
|
18
|
+
body.attribute :options, :hash, description: 'Values for line item attributes an extension adds.'
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
request_params 'UpdateLineItemParams', action: :update do |body|
|
|
22
|
+
body.attribute :quantity, :integer, example: 5, description: 'At least 1. Remove an item with DELETE.'
|
|
23
|
+
body.attribute :metadata, :hash,
|
|
24
|
+
example: { engraving: 'J.D.' },
|
|
25
|
+
description: 'Write-only key-value metadata, merged with what the line item has.'
|
|
26
|
+
end
|
|
27
|
+
|
|
12
28
|
# POST /api/v3/store/carts/:cart_id/items
|
|
13
29
|
def create
|
|
14
30
|
with_order_lock do
|
|
@@ -113,11 +129,7 @@ module Spree
|
|
|
113
129
|
end
|
|
114
130
|
|
|
115
131
|
def permitted_params
|
|
116
|
-
params.permit(
|
|
117
|
-
:id, :variant_id, :quantity,
|
|
118
|
-
*Spree::LineItem.additional_permitted_attributes,
|
|
119
|
-
{ metadata: {}, options: {} }
|
|
120
|
-
)
|
|
132
|
+
params.permit(*declared_permitted_attributes, *Spree::LineItem.additional_permitted_attributes)
|
|
121
133
|
end
|
|
122
134
|
end
|
|
123
135
|
end
|
|
@@ -10,6 +10,24 @@ module Spree
|
|
|
10
10
|
before_action :find_cart!
|
|
11
11
|
before_action :set_payment_session, only: [:show, :update, :complete]
|
|
12
12
|
|
|
13
|
+
request_params 'CreatePaymentSessionParams', action: :create do |body|
|
|
14
|
+
body.attribute :payment_method_id, :id, required: true, example: 'pm_abc123'
|
|
15
|
+
body.attribute :amount, :decimal,
|
|
16
|
+
example: '99.99',
|
|
17
|
+
description: 'Defaults to the order total minus store credits.'
|
|
18
|
+
body.attribute :external_data, :hash, description: 'Provider-specific data passed to the gateway.'
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
request_params 'UpdatePaymentSessionParams', action: :update do |body|
|
|
22
|
+
body.attribute :amount, :decimal, example: '50.00'
|
|
23
|
+
body.attribute :external_data, :hash, description: 'Provider-specific data to update.'
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
request_params 'CompletePaymentSessionParams', action: :complete do |body|
|
|
27
|
+
body.attribute :session_result, :string, description: 'Provider-specific session result token.'
|
|
28
|
+
body.attribute :external_data, :hash, description: 'Provider-specific completion data.'
|
|
29
|
+
end
|
|
30
|
+
|
|
13
31
|
# POST /api/v3/store/carts/:cart_id/payment_sessions
|
|
14
32
|
def create
|
|
15
33
|
with_order_lock do
|
|
@@ -94,15 +112,11 @@ module Spree
|
|
|
94
112
|
end
|
|
95
113
|
|
|
96
114
|
def permitted_params
|
|
97
|
-
params.permit(
|
|
98
|
-
:amount, :payment_method_id,
|
|
99
|
-
*Spree::PaymentSession.additional_permitted_attributes,
|
|
100
|
-
{ external_data: {} }
|
|
101
|
-
)
|
|
115
|
+
params.permit(*declared_permitted_attributes, *Spree::PaymentSession.additional_permitted_attributes)
|
|
102
116
|
end
|
|
103
117
|
|
|
104
118
|
def complete_params
|
|
105
|
-
params.permit(
|
|
119
|
+
params.permit(*declared_permitted_attributes)
|
|
106
120
|
end
|
|
107
121
|
|
|
108
122
|
private
|
|
@@ -8,6 +8,17 @@ module Spree
|
|
|
8
8
|
|
|
9
9
|
before_action :find_cart!
|
|
10
10
|
|
|
11
|
+
request_params 'CreatePaymentParams', action: :create do |body|
|
|
12
|
+
body.attribute :payment_method_id, :id,
|
|
13
|
+
required: true,
|
|
14
|
+
example: 'pm_abc123',
|
|
15
|
+
description: 'A payment method that needs no payment session.'
|
|
16
|
+
body.attribute :amount, :decimal,
|
|
17
|
+
example: '99.99',
|
|
18
|
+
description: 'Defaults to the order total minus store credits.'
|
|
19
|
+
body.attribute :metadata, :hash, description: 'Key-value metadata to attach to the payment.'
|
|
20
|
+
end
|
|
21
|
+
|
|
11
22
|
# POST /api/v3/store/carts/:cart_id/payments
|
|
12
23
|
# Creates a payment for non-session payment methods (e.g. Check, Cash on Delivery, Bank Transfer)
|
|
13
24
|
def create
|
|
@@ -12,7 +12,7 @@ module Spree
|
|
|
12
12
|
# unconditional presigner would let anyone holding one mint blobs in
|
|
13
13
|
# the merchant's bucket. Reaching this action means holding the cart.
|
|
14
14
|
#
|
|
15
|
-
#
|
|
15
|
+
# Files are minted on private storage, because attaching a signed id
|
|
16
16
|
# never moves a blob between services and a purchase order carries the
|
|
17
17
|
# buyer's prices, terms and internal cost codes.
|
|
18
18
|
class PoDocumentsController < Store::BaseController
|
|
@@ -21,10 +21,20 @@ module Spree
|
|
|
21
21
|
|
|
22
22
|
before_action :find_cart!
|
|
23
23
|
|
|
24
|
+
request_params 'CreatePoDocumentParams', action: :create do |body|
|
|
25
|
+
body.attribute :filename, :string, required: true
|
|
26
|
+
body.attribute :content_type, :string, required: true
|
|
27
|
+
body.attribute :byte_size, :integer, required: true
|
|
28
|
+
body.attribute :checksum, :string,
|
|
29
|
+
required: true,
|
|
30
|
+
description: 'Base64-encoded MD5 digest of the file; the storage service checks the bytes against it.'
|
|
31
|
+
end
|
|
32
|
+
|
|
24
33
|
# POST /api/v3/store/carts/:cart_id/po_document
|
|
25
34
|
#
|
|
26
|
-
#
|
|
27
|
-
#
|
|
35
|
+
# Takes the same flat request as the Admin API's `POST /files` and
|
|
36
|
+
# answers with the same shape. The returned signed id is then sent
|
|
37
|
+
# back as `po_document_signed_id` on a cart update, which is what
|
|
28
38
|
# actually attaches it.
|
|
29
39
|
#
|
|
30
40
|
# The declared size and type are checked here, before any URL is
|
|
@@ -34,20 +44,20 @@ module Spree
|
|
|
34
44
|
# only runs once the bytes are already stored. It is a gate on the
|
|
35
45
|
# cheap lie, not a substitute: the attach-time check still reads
|
|
36
46
|
# the stored object, which is what catches an under-declared size.
|
|
47
|
+
# Bytes in the request itself are not accepted here: a publishable
|
|
48
|
+
# key is public.
|
|
37
49
|
def create
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
50
|
+
file_upload = Spree::FileUpload.new(
|
|
51
|
+
store: current_store,
|
|
52
|
+
visibility: 'private',
|
|
53
|
+
max_byte_size: Spree::Purchase::PurchaseOrder::MAX_PO_DOCUMENT_SIZE,
|
|
54
|
+
allowed_content_types: Spree::Purchase::PurchaseOrder::PO_DOCUMENT_CONTENT_TYPES,
|
|
55
|
+
**params.permit(*declared_permitted_attributes).to_h.symbolize_keys
|
|
42
56
|
)
|
|
43
57
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
headers: blob.service_headers_for_direct_upload
|
|
48
|
-
},
|
|
49
|
-
signed_id: blob.signed_id
|
|
50
|
-
}, status: :created
|
|
58
|
+
return render_po_document_invalid unless file_upload.save
|
|
59
|
+
|
|
60
|
+
render json: Spree.api.file_upload_serializer.new(file_upload, params: serializer_params).to_h, status: :created
|
|
51
61
|
end
|
|
52
62
|
|
|
53
63
|
# GET /api/v3/store/carts/:cart_id/po_document
|
|
@@ -79,18 +89,6 @@ module Spree
|
|
|
79
89
|
|
|
80
90
|
private
|
|
81
91
|
|
|
82
|
-
def blob_params
|
|
83
|
-
params.require(:blob).permit(:filename, :byte_size, :checksum, :content_type).to_h.symbolize_keys
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
def acceptable_upload?
|
|
87
|
-
declared_size = Integer(blob_params[:byte_size].to_s, exception: false)
|
|
88
|
-
|
|
89
|
-
declared_size&.positive? &&
|
|
90
|
-
declared_size <= Spree::Purchase::PurchaseOrder::MAX_PO_DOCUMENT_SIZE &&
|
|
91
|
-
Spree::Purchase::PurchaseOrder::PO_DOCUMENT_CONTENT_TYPES.include?(blob_params[:content_type])
|
|
92
|
-
end
|
|
93
|
-
|
|
94
92
|
def render_po_document_invalid
|
|
95
93
|
render_error(
|
|
96
94
|
code: ERROR_CODES[:parameter_invalid],
|
|
@@ -10,12 +10,18 @@ module Spree
|
|
|
10
10
|
before_action :require_authentication!
|
|
11
11
|
before_action :find_cart!
|
|
12
12
|
|
|
13
|
+
request_params 'ApplyStoreCreditParams', action: :create do |body|
|
|
14
|
+
body.attribute :amount, :decimal,
|
|
15
|
+
example: '10.00',
|
|
16
|
+
description: 'Defaults to as much as the cart can use.'
|
|
17
|
+
end
|
|
18
|
+
|
|
13
19
|
# POST /api/v3/store/carts/:cart_id/store_credits
|
|
14
20
|
def create
|
|
15
21
|
with_order_lock do
|
|
16
22
|
result = Spree.store_credit_apply_service.call(
|
|
17
23
|
order: @cart,
|
|
18
|
-
amount:
|
|
24
|
+
amount: money_param(:amount, @cart.currency)
|
|
19
25
|
)
|
|
20
26
|
|
|
21
27
|
if result.success?
|
|
@@ -25,6 +25,10 @@ module Spree
|
|
|
25
25
|
# frozen onto the order at completion.
|
|
26
26
|
before_action :require_kind_and_value!, only: :update
|
|
27
27
|
|
|
28
|
+
request_params('TaxIdentifierParams', action: :update) do |body|
|
|
29
|
+
body.include_attributes Spree::Api::V3::TaxIdentifierRequestSchema
|
|
30
|
+
end
|
|
31
|
+
|
|
28
32
|
# GET /api/v3/store/carts/:cart_id/tax_identifier
|
|
29
33
|
#
|
|
30
34
|
# The registration this cart will be taxed against — the override
|
|
@@ -73,7 +77,7 @@ module Spree
|
|
|
73
77
|
end
|
|
74
78
|
|
|
75
79
|
def permitted_params
|
|
76
|
-
params.permit(
|
|
80
|
+
params.permit(*declared_permitted_attributes)
|
|
77
81
|
end
|
|
78
82
|
|
|
79
83
|
private
|
|
@@ -5,15 +5,66 @@ module Spree
|
|
|
5
5
|
class CartsController < Store::ResourceController
|
|
6
6
|
include Spree::Api::V3::CartResolvable
|
|
7
7
|
include Spree::Api::V3::OrderLock
|
|
8
|
-
# The cart accepts a `
|
|
8
|
+
# The cart accepts a `po_document_signed_id`.
|
|
9
9
|
include ActiveStorage::SetCurrent
|
|
10
10
|
|
|
11
|
-
# A tampered signed id would otherwise surface as a 500.
|
|
12
|
-
rescue_from ActiveSupport::MessageVerifier::InvalidSignature, with: :render_invalid_po_document
|
|
13
|
-
|
|
14
11
|
skip_before_action :set_resource
|
|
15
12
|
prepend_before_action :require_authentication!, only: [:index, :associate]
|
|
16
13
|
|
|
14
|
+
CART_ADDRESS = Spree::Api::V3::RequestSchema.shape('CartAddressParams') do |schema|
|
|
15
|
+
schema.attribute :id, :id,
|
|
16
|
+
description: 'An existing address of the customer to use. The other fields are then ignored.'
|
|
17
|
+
schema.include_attributes Spree::Api::V3::Store::AddressRequestSchema
|
|
18
|
+
schema.attribute :quick_checkout, :boolean,
|
|
19
|
+
description: 'Relaxes validation (name, phone, postal code, street), for express checkouts that share a partial address.'
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Creating and updating a cart accept the same fields.
|
|
23
|
+
CART_FIELDS = Spree::Api::V3::RequestSchema.new do |schema|
|
|
24
|
+
schema.attribute :email, :string, format: :email, example: 'customer@example.com'
|
|
25
|
+
schema.attribute :customer_note, :string, example: 'Leave at door'
|
|
26
|
+
schema.attribute :market_id, :id
|
|
27
|
+
schema.attribute :currency, :currency
|
|
28
|
+
schema.attribute :locale, :locale
|
|
29
|
+
schema.attribute :shipping_address_id, :id,
|
|
30
|
+
description: 'An existing address to ship to.',
|
|
31
|
+
example: 'addr_abc123'
|
|
32
|
+
schema.attribute :billing_address_id, :id,
|
|
33
|
+
description: 'An existing address to bill.',
|
|
34
|
+
example: 'addr_def456'
|
|
35
|
+
schema.attribute :preferred_stock_location_id, :id
|
|
36
|
+
schema.attribute :company_id, :id, nullable: true, description: <<~TEXT.squish
|
|
37
|
+
The company node this purchase is for. The buyer must have standing over it: a membership
|
|
38
|
+
on that node or one of its ancestors. Null clears it, and with it the company's catalog,
|
|
39
|
+
pricing and tax anchoring.
|
|
40
|
+
TEXT
|
|
41
|
+
schema.attribute :po_number, :string, nullable: true, description: <<~TEXT.squish
|
|
42
|
+
The buyer's own purchase-order reference. Their accounting reconciles the order, the
|
|
43
|
+
invoice and the payment against it. Blank clears it.
|
|
44
|
+
TEXT
|
|
45
|
+
schema.attribute :po_document_signed_id, :string, nullable: true, description: <<~TEXT.squish
|
|
46
|
+
The `signed_id` of the buyer's purchase order, from `POST /store/carts/:id/po_document`.
|
|
47
|
+
Blank detaches the document.
|
|
48
|
+
TEXT
|
|
49
|
+
schema.attribute :use_shipping, :boolean,
|
|
50
|
+
description: 'When true, copies the shipping address to the billing address.'
|
|
51
|
+
schema.attribute :shipping_address, :object, shape: CART_ADDRESS, description: 'A new shipping address.'
|
|
52
|
+
schema.attribute :billing_address, :object, shape: CART_ADDRESS, description: 'A new billing address.'
|
|
53
|
+
schema.attribute :metadata, :hash,
|
|
54
|
+
description: 'Write-only key-value metadata, merged with what the cart has.'
|
|
55
|
+
schema.attribute :items, :array,
|
|
56
|
+
as: 'LineItemInputParams',
|
|
57
|
+
description: 'Items to upsert: sets the quantity of a variant already in the cart, adds the others.' do |item|
|
|
58
|
+
item.attribute :variant_id, :id, required: true, example: 'variant_abc123'
|
|
59
|
+
item.attribute :quantity, :integer, example: 2, description: 'Defaults to 1.'
|
|
60
|
+
item.attribute :metadata, :hash, description: 'Key-value metadata, merged with what the line item has.'
|
|
61
|
+
item.attribute :options, :hash
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
request_params('CreateCartParams', action: :create) { |body| body.include_attributes CART_FIELDS }
|
|
66
|
+
request_params('UpdateCartParams', action: :update) { |body| body.include_attributes CART_FIELDS }
|
|
67
|
+
|
|
17
68
|
# GET /api/v3/store/carts/:id
|
|
18
69
|
# Returns cart by prefixed ID
|
|
19
70
|
# Auto-advances the checkout state machine so that shipments and
|
|
@@ -184,50 +235,8 @@ module Spree
|
|
|
184
235
|
|
|
185
236
|
private
|
|
186
237
|
|
|
187
|
-
def render_invalid_po_document
|
|
188
|
-
render_error(
|
|
189
|
-
code: ERROR_CODES[:validation_error],
|
|
190
|
-
message: I18n.t('spree.po_document_invalid_signed_id'),
|
|
191
|
-
status: :unprocessable_content
|
|
192
|
-
)
|
|
193
|
-
end
|
|
194
|
-
|
|
195
238
|
def permitted_params
|
|
196
|
-
params.permit(
|
|
197
|
-
*model_additional_permitted_attributes,
|
|
198
|
-
:email,
|
|
199
|
-
:customer_note,
|
|
200
|
-
:market_id,
|
|
201
|
-
:currency,
|
|
202
|
-
:locale,
|
|
203
|
-
:shipping_address_id,
|
|
204
|
-
:billing_address_id,
|
|
205
|
-
:preferred_stock_location_id,
|
|
206
|
-
:company_id,
|
|
207
|
-
# The buyer's own purchase-order reference, and the signed blob id
|
|
208
|
-
# of the document behind it (from POST .../carts/:id/po_document).
|
|
209
|
-
:po_number,
|
|
210
|
-
:po_document,
|
|
211
|
-
:use_shipping,
|
|
212
|
-
shipping_address: address_params,
|
|
213
|
-
billing_address: address_params,
|
|
214
|
-
metadata: {},
|
|
215
|
-
items: item_params
|
|
216
|
-
)
|
|
217
|
-
end
|
|
218
|
-
|
|
219
|
-
def address_params
|
|
220
|
-
[
|
|
221
|
-
:id, :first_name, :last_name,
|
|
222
|
-
:address1, :address2,
|
|
223
|
-
:city, :postal_code, :phone, :company,
|
|
224
|
-
# country_iso and state_abbr are the legacy write names, accepted until 6.1.
|
|
225
|
-
:country_code, :country_iso, :state_code, :state_abbr, :state_name, :quick_checkout
|
|
226
|
-
]
|
|
227
|
-
end
|
|
228
|
-
|
|
229
|
-
def item_params
|
|
230
|
-
[:variant_id, :quantity, { metadata: {}, options: {} }]
|
|
239
|
+
params.permit(*permitted_attributes)
|
|
231
240
|
end
|
|
232
241
|
|
|
233
242
|
# Find incomplete cart for associate action.
|
|
@@ -9,6 +9,18 @@ module Spree
|
|
|
9
9
|
class AddressesController < BaseController
|
|
10
10
|
include Spree::Api::V3::CompanyAddressWrites
|
|
11
11
|
|
|
12
|
+
request_params :company_address do |body|
|
|
13
|
+
body.include_attributes Spree::Api::V3::AddressRequestSchema
|
|
14
|
+
body.require_attributes :first_name, :last_name, :address1, :city, :country_code, on: :create
|
|
15
|
+
body.attribute :zipcode, :string, deprecated: 'Use `postal_code`. Removed in 6.1.'
|
|
16
|
+
body.attribute :default_billing, :boolean,
|
|
17
|
+
permit: false,
|
|
18
|
+
description: "True makes this the node's default billing address, false gives that up, and leaving it out changes nothing."
|
|
19
|
+
body.attribute :default_shipping, :boolean,
|
|
20
|
+
permit: false,
|
|
21
|
+
description: "True makes this the node's default shipping address, false gives that up, and leaving it out changes nothing."
|
|
22
|
+
end
|
|
23
|
+
|
|
12
24
|
# POST /api/v3/store/companies/:company_id/addresses
|
|
13
25
|
def create
|
|
14
26
|
result = Spree.address_create_service.call(
|
|
@@ -65,10 +77,6 @@ module Spree
|
|
|
65
77
|
def scope
|
|
66
78
|
action_name == 'index' ? @parent.address_book : @parent.addresses
|
|
67
79
|
end
|
|
68
|
-
|
|
69
|
-
def permitted_params
|
|
70
|
-
params.permit(:label, *Spree::Api::V3::AddressParams::ADDRESS_KEYS)
|
|
71
|
-
end
|
|
72
80
|
end
|
|
73
81
|
end
|
|
74
82
|
end
|
|
@@ -11,6 +11,10 @@ module Spree
|
|
|
11
11
|
# email has an account. Any member can invite; restraint is
|
|
12
12
|
# Enterprise's policy layer.
|
|
13
13
|
class MembersController < BaseController
|
|
14
|
+
request_params 'AddCompanyMemberParams', action: :create do |body|
|
|
15
|
+
body.attribute :customer_email, :string, required: true, example: 'colleague@acme.test'
|
|
16
|
+
end
|
|
17
|
+
|
|
14
18
|
# POST /api/v3/store/companies/:company_id/members
|
|
15
19
|
def create
|
|
16
20
|
result = Spree.company_add_member_service.call(
|
|
@@ -10,6 +10,10 @@ module Spree
|
|
|
10
10
|
class CompaniesController < ResourceController
|
|
11
11
|
prepend_before_action :require_authentication!
|
|
12
12
|
|
|
13
|
+
request_params 'UpdateCompanyParams', action: :update do |body|
|
|
14
|
+
body.attribute :name, :string, example: 'Acme Industrial Group'
|
|
15
|
+
end
|
|
16
|
+
|
|
13
17
|
# PATCH /api/v3/store/companies/:id
|
|
14
18
|
def update
|
|
15
19
|
authorize_storefront_write!(@resource)
|
|
@@ -38,7 +42,7 @@ module Spree
|
|
|
38
42
|
end
|
|
39
43
|
|
|
40
44
|
def permitted_params
|
|
41
|
-
params.permit(
|
|
45
|
+
params.permit(*declared_permitted_attributes)
|
|
42
46
|
end
|
|
43
47
|
end
|
|
44
48
|
end
|
|
@@ -17,6 +17,14 @@ module Spree
|
|
|
17
17
|
# standing scope would 404 the unauthenticated invitee.
|
|
18
18
|
skip_before_action :set_resource
|
|
19
19
|
|
|
20
|
+
request_params 'AcceptCompanyInvitationParams', action: :accept do |body|
|
|
21
|
+
body.attribute :first_name, :string, example: 'Ada'
|
|
22
|
+
body.attribute :last_name, :string, example: 'Lovelace'
|
|
23
|
+
body.attribute :phone, :string
|
|
24
|
+
body.attribute :password, :string, example: 'a-strong-password'
|
|
25
|
+
body.attribute :password_confirmation, :string, example: 'a-strong-password'
|
|
26
|
+
end
|
|
27
|
+
|
|
20
28
|
# GET /api/v3/store/company_invitations/:token — what is being
|
|
21
29
|
# joined. Expired and revoked tokens 404.
|
|
22
30
|
def show
|
|
@@ -81,7 +89,7 @@ module Spree
|
|
|
81
89
|
end
|
|
82
90
|
|
|
83
91
|
def registration_params
|
|
84
|
-
params.permit(
|
|
92
|
+
params.permit(*declared_permitted_attributes)
|
|
85
93
|
end
|
|
86
94
|
end
|
|
87
95
|
end
|
|
@@ -7,6 +7,13 @@ module Spree
|
|
|
7
7
|
prepend_before_action :require_authentication!
|
|
8
8
|
before_action :set_resource, only: [:show, :update, :destroy]
|
|
9
9
|
|
|
10
|
+
request_params :address do |body|
|
|
11
|
+
body.include_attributes Spree::Api::V3::Store::AddressRequestSchema
|
|
12
|
+
body.require_attributes :first_name, :last_name, :address1, :city, :country_code, on: :create
|
|
13
|
+
body.attribute :is_default_billing, :boolean, description: 'Makes this the default billing address.'
|
|
14
|
+
body.attribute :is_default_shipping, :boolean, description: 'Makes this the default shipping address.'
|
|
15
|
+
end
|
|
16
|
+
|
|
10
17
|
# POST /api/v3/store/customers/me/addresses
|
|
11
18
|
def create
|
|
12
19
|
result = Spree.address_create_service.call(
|
|
@@ -58,13 +65,7 @@ module Spree
|
|
|
58
65
|
end
|
|
59
66
|
|
|
60
67
|
def permitted_params
|
|
61
|
-
params.permit(
|
|
62
|
-
*model_additional_permitted_attributes,
|
|
63
|
-
:first_name, :last_name, :address1, :address2, :city,
|
|
64
|
-
# country_iso and state_abbr are the legacy write names, accepted until 6.1.
|
|
65
|
-
:postal_code, :phone, :company, :country_code, :country_iso, :state_code, :state_abbr, :state_name,
|
|
66
|
-
:is_default_billing, :is_default_shipping
|
|
67
|
-
)
|
|
68
|
+
params.permit(*permitted_attributes)
|
|
68
69
|
end
|
|
69
70
|
end
|
|
70
71
|
end
|
|
@@ -15,6 +15,11 @@ module Spree
|
|
|
15
15
|
|
|
16
16
|
prepend_before_action :require_authentication!
|
|
17
17
|
|
|
18
|
+
request_params 'CreateDataRequestParams', action: :create do |body|
|
|
19
|
+
body.attribute :kind, :string, choices: Spree::DataRequest::KINDS, description: 'Defaults to `access`.'
|
|
20
|
+
body.attribute :current_password, :string, description: 'Required for `erasure`.'
|
|
21
|
+
end
|
|
22
|
+
|
|
18
23
|
# POST /api/v3/store/customers/me/data_requests
|
|
19
24
|
def create
|
|
20
25
|
return render_current_password_invalid if erasure? && !valid_current_password?
|
|
@@ -14,6 +14,23 @@ module Spree
|
|
|
14
14
|
|
|
15
15
|
skip_before_action :authenticate_user
|
|
16
16
|
|
|
17
|
+
request_params 'RequestPasswordResetParams', action: :create do |body|
|
|
18
|
+
body.attribute :email, :string,
|
|
19
|
+
required: true,
|
|
20
|
+
format: :email,
|
|
21
|
+
example: 'customer@example.com',
|
|
22
|
+
description: 'The email of the account to reset.'
|
|
23
|
+
body.attribute :redirect_url, :string,
|
|
24
|
+
format: :uri,
|
|
25
|
+
example: 'https://myshop.com/reset-password',
|
|
26
|
+
description: "Where the reset link sends the customer. Ignored unless it matches one of the store's allowed origins."
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
request_params 'ResetPasswordParams', action: :update do |body|
|
|
30
|
+
body.attribute :password, :string, required: true, example: 'newsecurepassword'
|
|
31
|
+
body.attribute :password_confirmation, :string, required: true, example: 'newsecurepassword'
|
|
32
|
+
end
|
|
33
|
+
|
|
17
34
|
# POST /api/v3/store/password_resets
|
|
18
35
|
def create
|
|
19
36
|
redirect_url = params[:redirect_url]
|
|
@@ -9,6 +9,15 @@ module Spree
|
|
|
9
9
|
skip_before_action :set_resource
|
|
10
10
|
before_action :set_payment_setup_session, only: [:show, :complete]
|
|
11
11
|
|
|
12
|
+
request_params 'CreatePaymentSetupSessionParams', action: :create do |body|
|
|
13
|
+
body.attribute :payment_method_id, :id, required: true, example: 'pm_abc123'
|
|
14
|
+
body.attribute :external_data, :hash, description: 'Provider-specific data passed to the gateway.'
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
request_params 'CompletePaymentSetupSessionParams', action: :complete do |body|
|
|
18
|
+
body.attribute :external_data, :hash, description: 'Provider-specific completion data.'
|
|
19
|
+
end
|
|
20
|
+
|
|
12
21
|
# POST /api/v3/store/customer/payment_setup_sessions
|
|
13
22
|
def create
|
|
14
23
|
payment_method = current_store.payment_methods.find_by_prefix_id!(params[:payment_method_id])
|
|
@@ -58,12 +67,8 @@ module Spree
|
|
|
58
67
|
Spree.api.payment_setup_session_serializer
|
|
59
68
|
end
|
|
60
69
|
|
|
61
|
-
def resource_permitted_attributes
|
|
62
|
-
[:payment_method_id, { external_data: {} }]
|
|
63
|
-
end
|
|
64
|
-
|
|
65
70
|
def complete_params
|
|
66
|
-
params.permit(
|
|
71
|
+
params.permit(*declared_permitted_attributes)
|
|
67
72
|
end
|
|
68
73
|
|
|
69
74
|
private
|
|
@@ -18,6 +18,10 @@ module Spree
|
|
|
18
18
|
# the buyer never named and could not predict.
|
|
19
19
|
before_action :require_kind!, only: %i[show update destroy]
|
|
20
20
|
|
|
21
|
+
request_params('TaxIdentifierParams', action: :update) do |body|
|
|
22
|
+
body.include_attributes Spree::Api::V3::TaxIdentifierRequestSchema
|
|
23
|
+
end
|
|
24
|
+
|
|
21
25
|
# GET /api/v3/store/customers/me/tax_identifiers
|
|
22
26
|
#
|
|
23
27
|
# Everything the buyer could choose between at checkout. Small and
|
|
@@ -65,7 +69,7 @@ module Spree
|
|
|
65
69
|
end
|
|
66
70
|
|
|
67
71
|
def permitted_params
|
|
68
|
-
params.permit(
|
|
72
|
+
params.permit(*declared_permitted_attributes)
|
|
69
73
|
end
|
|
70
74
|
|
|
71
75
|
private
|
|
@@ -11,6 +11,33 @@ module Spree
|
|
|
11
11
|
skip_before_action :authenticate_user, only: [:create]
|
|
12
12
|
prepend_before_action :require_authentication!, only: [:show, :update]
|
|
13
13
|
|
|
14
|
+
CUSTOMER_FIELDS = Spree::Api::V3::RequestSchema.new do |schema|
|
|
15
|
+
schema.attribute :first_name, :string, example: 'John'
|
|
16
|
+
schema.attribute :last_name, :string, example: 'Doe'
|
|
17
|
+
schema.attribute :phone, :string, example: '+1 555 123 4567'
|
|
18
|
+
schema.attribute :accepts_email_marketing, :boolean
|
|
19
|
+
schema.attribute :metadata, :hash, description: 'Write-only key-value metadata.'
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
request_params 'RegisterParams', action: :create do |body|
|
|
23
|
+
body.attribute :email, :string, required: true, format: :email, example: 'newuser@example.com'
|
|
24
|
+
body.attribute :password, :string, required: true, example: 'password123'
|
|
25
|
+
body.attribute :password_confirmation, :string, example: 'password123'
|
|
26
|
+
body.include_attributes CUSTOMER_FIELDS
|
|
27
|
+
body.attribute :terms_of_service, :boolean,
|
|
28
|
+
permit: false,
|
|
29
|
+
description: "Whether the customer ticked the storefront's terms of service box. Recorded as their consent."
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
request_params 'UpdateCustomerParams', action: :update do |body|
|
|
33
|
+
body.attribute :email, :string, format: :email, example: 'customer@example.com'
|
|
34
|
+
body.attribute :password, :string
|
|
35
|
+
body.attribute :password_confirmation, :string
|
|
36
|
+
body.attribute :current_password, :string,
|
|
37
|
+
description: 'Required when changing the email or the password.'
|
|
38
|
+
body.include_attributes CUSTOMER_FIELDS
|
|
39
|
+
end
|
|
40
|
+
|
|
14
41
|
# POST /api/v3/store/customers
|
|
15
42
|
# Registration runs through the customer_create_workflow seam
|
|
16
43
|
# (password requirement, newsletter-subscriber linking, registration
|
|
@@ -83,8 +110,7 @@ module Spree
|
|
|
83
110
|
end
|
|
84
111
|
|
|
85
112
|
def permitted_params
|
|
86
|
-
params.permit(
|
|
87
|
-
:accepts_email_marketing, :phone, :current_password, metadata: {})
|
|
113
|
+
params.permit(*declared_permitted_attributes)
|
|
88
114
|
end
|
|
89
115
|
|
|
90
116
|
private
|
|
@@ -10,6 +10,28 @@ module Spree
|
|
|
10
10
|
only: [:create, :verify, :request_unsubscribe],
|
|
11
11
|
with: -> { render_rate_limited(limit: Spree::Api::Config[:rate_limit_register]) }
|
|
12
12
|
|
|
13
|
+
request_params 'CreateNewsletterSubscriberParams', action: :create do |body|
|
|
14
|
+
body.attribute :email, :string, required: true, format: :email, example: 'subscriber@example.com'
|
|
15
|
+
body.attribute :redirect_url, :string,
|
|
16
|
+
format: :uri,
|
|
17
|
+
example: 'https://your-store.com/newsletter/confirm',
|
|
18
|
+
description: "The storefront URL the verification token is appended to. Left out of the webhook payload unless it matches one of the store's allowed origins."
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
request_params 'VerifyNewsletterSubscriberParams', action: :verify do |body|
|
|
22
|
+
body.attribute :token, :string,
|
|
23
|
+
required: true,
|
|
24
|
+
example: 'abc123def456',
|
|
25
|
+
description: 'The verification token from the confirmation email.'
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
request_params 'RequestNewsletterUnsubscribeParams', action: :request_unsubscribe do |body|
|
|
29
|
+
body.attribute :email, :string, format: :email, example: 'subscriber@example.com'
|
|
30
|
+
body.attribute :redirect_url, :string,
|
|
31
|
+
format: :uri,
|
|
32
|
+
description: "The storefront URL the unsubscribe token is appended to in the email. Left out of the event payload unless it matches one of the store's allowed origins."
|
|
33
|
+
end
|
|
34
|
+
|
|
13
35
|
# POST /api/v3/store/newsletter_subscribers
|
|
14
36
|
def create
|
|
15
37
|
subscriber = Spree::NewsletterSubscriber.subscribe(
|
|
@@ -10,6 +10,16 @@ module Spree
|
|
|
10
10
|
# Whether a customer may file a claim is store policy and belongs in
|
|
11
11
|
# a `claims.create.validate` hook rather than here.
|
|
12
12
|
class ClaimsController < Store::ResourceController
|
|
13
|
+
request_params 'CreateClaimParams', action: :create do |body|
|
|
14
|
+
body.attribute :items, :array, required: true do |item|
|
|
15
|
+
item.attribute :line_item_id, :id, required: true
|
|
16
|
+
item.attribute :quantity, :integer, required: true
|
|
17
|
+
item.attribute :description, :string, description: 'What is wrong with the item.'
|
|
18
|
+
end
|
|
19
|
+
body.attribute :reason_id, :id, description: "One of the store's claim reasons."
|
|
20
|
+
body.attribute :memo, :string
|
|
21
|
+
end
|
|
22
|
+
|
|
13
23
|
def create
|
|
14
24
|
result = Spree.claim_create_workflow.call(
|
|
15
25
|
order: @parent,
|
|
@@ -59,8 +69,7 @@ module Spree
|
|
|
59
69
|
end
|
|
60
70
|
|
|
61
71
|
def create_params
|
|
62
|
-
@create_params ||= params.permit(
|
|
63
|
-
items: [:line_item_id, :quantity, :description])
|
|
72
|
+
@create_params ||= params.permit(*declared_permitted_attributes)
|
|
64
73
|
end
|
|
65
74
|
|
|
66
75
|
private
|