spree_api 6.0.0.beta4 → 6.0.0.rc2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Rakefile +4 -48
- data/app/controllers/concerns/spree/api/v3/admin/email_template_lookup.rb +139 -0
- 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/store_context.rb +1 -1
- data/app/controllers/concerns/spree/api/v3/admin/subclassed_resource.rb +15 -29
- data/app/controllers/concerns/spree/api/v3/admin/validation_details.rb +1 -1
- data/app/controllers/concerns/spree/api/v3/cart_resolvable.rb +10 -2
- data/app/controllers/concerns/spree/api/v3/channel_resolution.rb +3 -3
- data/app/controllers/concerns/spree/api/v3/company_address_writes.rb +3 -1
- data/app/controllers/concerns/spree/api/v3/current_password_confirmation.rb +1 -1
- data/app/controllers/concerns/spree/api/v3/error_handler.rb +55 -4
- data/app/controllers/concerns/spree/api/v3/file_uploads.rb +35 -0
- data/app/controllers/concerns/spree/api/v3/http_caching.rb +44 -11
- data/app/controllers/concerns/spree/api/v3/idempotent.rb +20 -5
- data/app/controllers/concerns/spree/api/v3/items_payload.rb +1 -1
- data/app/controllers/concerns/spree/api/v3/money_params.rb +52 -0
- data/app/controllers/concerns/spree/api/v3/order_lock.rb +2 -2
- data/app/controllers/concerns/spree/api/v3/orders/claim_actions.rb +1 -5
- data/app/controllers/concerns/spree/api/v3/orders/delivery_actions.rb +7 -11
- data/app/controllers/concerns/spree/api/v3/orders/exchange_actions.rb +1 -4
- data/app/controllers/concerns/spree/api/v3/orders/fulfillment_actions.rb +3 -15
- data/app/controllers/concerns/spree/api/v3/orders/post_sale_actions.rb +2 -10
- 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 +8 -28
- data/app/controllers/concerns/spree/api/v3/params_normalizer.rb +5 -0
- data/app/controllers/concerns/spree/api/v3/permission_serialization.rb +9 -1
- 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/seller/seller_context.rb +1 -1
- data/app/controllers/concerns/spree/api/v3/store/storefront_products.rb +5 -4
- data/app/controllers/concerns/spree/api/v3/storefront_gating.rb +11 -5
- data/app/controllers/concerns/spree/api/v3/strict_money_params.rb +94 -0
- data/app/controllers/spree/api/v3/admin/admin_users_controller.rb +8 -4
- data/app/controllers/spree/api/v3/admin/allowed_origins_controller.rb +8 -1
- data/app/controllers/spree/api/v3/admin/api_keys_controller.rb +16 -8
- data/app/controllers/spree/api/v3/admin/base_controller.rb +1 -0
- data/app/controllers/spree/api/v3/admin/catalogs/order_minimums_controller.rb +2 -6
- data/app/controllers/spree/api/v3/admin/catalogs/quantity_rules_controller.rb +7 -9
- data/app/controllers/spree/api/v3/admin/catalogs_controller.rb +61 -34
- 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 -10
- data/app/controllers/spree/api/v3/admin/claim_reasons_controller.rb +5 -1
- data/app/controllers/spree/api/v3/admin/collections/products_controller.rb +5 -3
- data/app/controllers/spree/api/v3/admin/collections_controller.rb +44 -15
- data/app/controllers/spree/api/v3/admin/commission_rates_controller.rb +62 -14
- data/app/controllers/spree/api/v3/admin/companies/addresses_controller.rb +11 -4
- data/app/controllers/spree/api/v3/admin/companies/invitations_controller.rb +1 -5
- data/app/controllers/spree/api/v3/admin/companies/memberships_controller.rb +9 -5
- data/app/controllers/spree/api/v3/admin/companies/tax_exemption_certificates_controller.rb +20 -27
- data/app/controllers/spree/api/v3/admin/companies/tax_identifiers_controller.rb +6 -5
- data/app/controllers/spree/api/v3/admin/companies_controller.rb +17 -7
- data/app/controllers/spree/api/v3/admin/countries_controller.rb +6 -2
- data/app/controllers/spree/api/v3/admin/coupon_codes_controller.rb +0 -4
- data/app/controllers/spree/api/v3/admin/custom_field_definitions_controller.rb +22 -4
- data/app/controllers/spree/api/v3/admin/custom_fields_controller.rb +12 -9
- data/app/controllers/spree/api/v3/admin/customer_groups_controller.rb +9 -5
- data/app/controllers/spree/api/v3/admin/customers/addresses_controller.rb +12 -11
- data/app/controllers/spree/api/v3/admin/customers/credit_cards_controller.rb +0 -4
- data/app/controllers/spree/api/v3/admin/customers/store_credits_controller.rb +11 -13
- data/app/controllers/spree/api/v3/admin/customers/tax_identifiers_controller.rb +6 -1
- data/app/controllers/spree/api/v3/admin/customers_controller.rb +37 -9
- 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 +16 -8
- data/app/controllers/spree/api/v3/admin/delivery_methods_controller.rb +95 -62
- 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 +14 -7
- 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 +53 -0
- data/app/controllers/spree/api/v3/admin/email_templates/previews_controller.rb +34 -0
- data/app/controllers/spree/api/v3/admin/email_templates/publications_controller.rb +37 -0
- data/app/controllers/spree/api/v3/admin/email_templates/restorations_controller.rb +42 -0
- data/app/controllers/spree/api/v3/admin/email_templates/revisions_controller.rb +35 -0
- data/app/controllers/spree/api/v3/admin/email_templates/sample_records_controller.rb +33 -0
- data/app/controllers/spree/api/v3/admin/email_templates/test_emails_controller.rb +44 -0
- data/app/controllers/spree/api/v3/admin/email_templates_controller.rb +46 -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 +37 -11
- 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 -8
- 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 +13 -4
- data/app/controllers/spree/api/v3/admin/media_controller.rb +22 -9
- data/app/controllers/spree/api/v3/admin/media_library_controller.rb +9 -5
- 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 -5
- data/app/controllers/spree/api/v3/admin/orders/claims_controller.rb +39 -1
- data/app/controllers/spree/api/v3/admin/orders/deliveries_controller.rb +20 -6
- data/app/controllers/spree/api/v3/admin/orders/discount_codes_controller.rb +6 -2
- data/app/controllers/spree/api/v3/admin/orders/discounts_controller.rb +30 -6
- 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 +83 -22
- data/app/controllers/spree/api/v3/admin/orders/gift_cards_controller.rb +9 -5
- data/app/controllers/spree/api/v3/admin/orders/items_controller.rb +11 -1
- data/app/controllers/spree/api/v3/admin/orders/labels_controller.rb +37 -12
- data/app/controllers/spree/api/v3/admin/orders/payments_controller.rb +18 -19
- data/app/controllers/spree/api/v3/admin/orders/refunds_controller.rb +7 -5
- 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 +76 -62
- data/app/controllers/spree/api/v3/admin/package_types_controller.rb +30 -5
- data/app/controllers/spree/api/v3/admin/password_resets_controller.rb +26 -7
- 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 +32 -67
- data/app/controllers/spree/api/v3/admin/prices_controller.rb +51 -8
- 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 +29 -16
- data/app/controllers/spree/api/v3/admin/products/variants_controller.rb +9 -18
- data/app/controllers/spree/api/v3/admin/products_controller.rb +122 -71
- data/app/controllers/spree/api/v3/admin/promotion_actions_controller.rb +11 -6
- data/app/controllers/spree/api/v3/admin/promotion_rules_controller.rb +10 -5
- data/app/controllers/spree/api/v3/admin/promotions_controller.rb +50 -14
- data/app/controllers/spree/api/v3/admin/purchase_orders_controller.rb +55 -8
- 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 +2 -1
- 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 +7 -9
- data/app/controllers/spree/api/v3/admin/seller_requirement_submissions_controller.rb +17 -10
- data/app/controllers/spree/api/v3/admin/seller_requirements_controller.rb +32 -6
- data/app/controllers/spree/api/v3/admin/seller_transfers_controller.rb +0 -4
- data/app/controllers/spree/api/v3/admin/sellers/invitations_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/sellers/payouts_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/sellers_controller.rb +77 -32
- data/app/controllers/spree/api/v3/admin/setup_controller.rb +54 -23
- 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 +49 -8
- data/app/controllers/spree/api/v3/admin/store_controller.rb +122 -48
- 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/tags_controller.rb +8 -5
- 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 +40 -13
- data/app/controllers/spree/api/v3/admin/webhook_events_controller.rb +25 -0
- data/app/controllers/spree/api/v3/base_controller.rb +12 -0
- data/app/controllers/spree/api/v3/resource_controller.rb +99 -3
- data/app/controllers/spree/api/v3/seller/auth_controller.rb +10 -2
- data/app/controllers/spree/api/v3/seller/base_controller.rb +1 -0
- data/app/controllers/spree/api/v3/seller/countries_controller.rb +3 -3
- data/app/controllers/spree/api/v3/seller/delivery_methods_controller.rb +49 -60
- data/app/controllers/spree/api/v3/seller/exports_controller.rb +21 -4
- 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 +12 -4
- data/app/controllers/spree/api/v3/seller/invitations_controller.rb +1 -1
- data/app/controllers/spree/api/v3/seller/me_controller.rb +15 -4
- 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 +23 -2
- 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 +20 -11
- data/app/controllers/spree/api/v3/seller/policies_controller.rb +12 -4
- data/app/controllers/spree/api/v3/seller/products_controller.rb +115 -28
- data/app/controllers/spree/api/v3/seller/profile_controller.rb +33 -10
- data/app/controllers/spree/api/v3/seller/requirement_submissions_controller.rb +13 -6
- 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 +5 -1
- data/app/controllers/spree/api/v3/store/auth_controller.rb +10 -0
- data/app/controllers/spree/api/v3/store/carts/discount_codes_controller.rb +9 -2
- data/app/controllers/spree/api/v3/store/carts/fulfillments_controller.rb +11 -11
- data/app/controllers/spree/api/v3/store/carts/gift_cards_controller.rb +13 -4
- data/app/controllers/spree/api/v3/store/carts/items_controller.rb +23 -7
- data/app/controllers/spree/api/v3/store/carts/payment_sessions_controller.rb +21 -7
- data/app/controllers/spree/api/v3/store/carts/payments_controller.rb +16 -3
- data/app/controllers/spree/api/v3/store/carts/po_documents_controller.rb +26 -28
- data/app/controllers/spree/api/v3/store/carts/store_credits_controller.rb +9 -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 +64 -52
- data/app/controllers/spree/api/v3/store/companies/addresses_controller.rb +12 -8
- data/app/controllers/spree/api/v3/store/companies/invitations_controller.rb +1 -5
- 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 +10 -2
- data/app/controllers/spree/api/v3/store/customer/addresses_controller.rb +8 -11
- data/app/controllers/spree/api/v3/store/customer/credit_cards_controller.rb +0 -4
- data/app/controllers/spree/api/v3/store/customer/data_requests_controller.rb +5 -5
- data/app/controllers/spree/api/v3/store/customer/digital_links_controller.rb +0 -4
- data/app/controllers/spree/api/v3/store/customer/gift_cards_controller.rb +0 -4
- data/app/controllers/spree/api/v3/store/customer/orders_controller.rb +0 -4
- data/app/controllers/spree/api/v3/store/customer/password_resets_controller.rb +25 -6
- data/app/controllers/spree/api/v3/store/customer/payment_setup_sessions_controller.rb +10 -9
- data/app/controllers/spree/api/v3/store/customer/store_credits_controller.rb +0 -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/data_request_downloads_controller.rb +1 -1
- data/app/controllers/spree/api/v3/store/delivery_methods_controller.rb +1 -1
- data/app/controllers/spree/api/v3/store/newsletter_subscribers_controller.rb +27 -14
- data/app/controllers/spree/api/v3/store/orders/claims_controller.rb +12 -7
- data/app/controllers/spree/api/v3/store/orders/returns_controller.rb +11 -6
- 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 -8
- 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 +8 -7
- data/app/serializers/spree/api/v3/admin/api_key_serializer.rb +2 -6
- 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_assignment_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/catalog_order_minimum_serializer.rb +3 -8
- 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/catalog_product_term_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/catalog_quantity_rule_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/channel_serializer.rb +7 -10
- data/app/serializers/spree/api/v3/admin/claim_line_item_serializer.rb +7 -0
- data/app/serializers/spree/api/v3/admin/claim_reason_serializer.rb +1 -3
- 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 +1 -5
- data/app/serializers/spree/api/v3/admin/country_serializer.rb +4 -0
- data/app/serializers/spree/api/v3/admin/coupon_code_serializer.rb +1 -7
- data/app/serializers/spree/api/v3/admin/credit_card_serializer.rb +1 -7
- data/app/serializers/spree/api/v3/admin/custom_field_definition_serializer.rb +6 -2
- data/app/serializers/spree/api/v3/admin/customer_serializer.rb +5 -17
- data/app/serializers/spree/api/v3/admin/data_request_serializer.rb +2 -6
- 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 +20 -30
- data/app/serializers/spree/api/v3/admin/delivery_method_service_serializer.rb +9 -1
- data/app/serializers/spree/api/v3/admin/delivery_origin_group_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/delivery_rate_serializer.rb +8 -0
- data/app/serializers/spree/api/v3/admin/delivery_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/delivery_zone_serializer.rb +1 -7
- data/app/serializers/spree/api/v3/admin/digital_asset_serializer.rb +4 -2
- data/app/serializers/spree/api/v3/admin/discount_serializer.rb +3 -1
- data/app/serializers/spree/api/v3/admin/email_template_draft_serializer.rb +19 -0
- data/app/serializers/spree/api/v3/admin/email_template_preview_serializer.rb +38 -0
- data/app/serializers/spree/api/v3/admin/email_template_revision_serializer.rb +18 -0
- data/app/serializers/spree/api/v3/admin/email_template_sample_record_serializer.rb +13 -0
- data/app/serializers/spree/api/v3/admin/email_template_serializer.rb +61 -0
- data/app/serializers/spree/api/v3/admin/exchange_line_item_serializer.rb +5 -0
- data/app/serializers/spree/api/v3/admin/exchange_serializer.rb +6 -3
- data/app/serializers/spree/api/v3/admin/export_serializer.rb +1 -7
- 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_item_serializer.rb +1 -7
- data/app/serializers/spree/api/v3/admin/fulfillment_serializer.rb +13 -17
- data/app/serializers/spree/api/v3/admin/gift_card_serializer.rb +4 -10
- 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 +14 -18
- data/app/serializers/spree/api/v3/admin/locale_serializer.rb +13 -0
- data/app/serializers/spree/api/v3/admin/market_serializer.rb +7 -2
- data/app/serializers/spree/api/v3/admin/media_serializer.rb +4 -5
- data/app/serializers/spree/api/v3/admin/order_cancellation_reason_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/order_group_serializer.rb +5 -9
- data/app/serializers/spree/api/v3/admin/order_routing_rule_serializer.rb +2 -6
- data/app/serializers/spree/api/v3/admin/order_serializer.rb +38 -48
- data/app/serializers/spree/api/v3/admin/package_type_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/payment_method_serializer.rb +7 -4
- data/app/serializers/spree/api/v3/admin/payment_serializer.rb +6 -8
- data/app/serializers/spree/api/v3/admin/payment_split_serializer.rb +8 -9
- data/app/serializers/spree/api/v3/admin/permission_serializer.rb +4 -4
- 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 +2 -6
- data/app/serializers/spree/api/v3/admin/price_serializer.rb +2 -0
- data/app/serializers/spree/api/v3/admin/product_serializer.rb +4 -10
- data/app/serializers/spree/api/v3/admin/product_submission_serializer.rb +2 -10
- data/app/serializers/spree/api/v3/admin/product_type_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/promotion_action_serializer.rb +5 -9
- data/app/serializers/spree/api/v3/admin/promotion_rule_serializer.rb +1 -5
- data/app/serializers/spree/api/v3/admin/purchase_order_item_serializer.rb +6 -25
- data/app/serializers/spree/api/v3/admin/purchase_order_serializer.rb +4 -17
- data/app/serializers/spree/api/v3/admin/refund_reason_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/refund_serializer.rb +7 -0
- 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 +9 -0
- data/app/serializers/spree/api/v3/admin/return_reason_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/return_serializer.rb +8 -12
- data/app/serializers/spree/api/v3/admin/saved_report_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/seller_balance_serializer.rb +15 -10
- data/app/serializers/spree/api/v3/admin/seller_payout_serializer.rb +7 -7
- data/app/serializers/spree/api/v3/admin/seller_requirement_status_serializer.rb +2 -6
- data/app/serializers/spree/api/v3/admin/seller_requirement_submission_serializer.rb +1 -7
- data/app/serializers/spree/api/v3/admin/seller_serializer.rb +8 -16
- data/app/serializers/spree/api/v3/admin/seller_transfer_serializer.rb +11 -10
- data/app/serializers/spree/api/v3/admin/shipping_label_serializer.rb +8 -21
- data/app/serializers/spree/api/v3/admin/stock_level_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/stock_location_serializer.rb +4 -3
- data/app/serializers/spree/api/v3/admin/stock_movement_serializer.rb +3 -9
- data/app/serializers/spree/api/v3/admin/stock_receipt_item_serializer.rb +1 -7
- data/app/serializers/spree/api/v3/admin/stock_receipt_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/stock_reservation_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/stock_transfer_item_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/store_credit_event_serializer.rb +6 -3
- data/app/serializers/spree/api/v3/admin/store_credit_serializer.rb +11 -20
- data/app/serializers/spree/api/v3/admin/store_serializer.rb +21 -84
- data/app/serializers/spree/api/v3/admin/supplier_serializer.rb +2 -4
- data/app/serializers/spree/api/v3/admin/tax_exemption_certificate_serializer.rb +6 -10
- data/app/serializers/spree/api/v3/admin/tax_identifier_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/tax_line_serializer.rb +9 -3
- data/app/serializers/spree/api/v3/admin/tax_rate_serializer.rb +3 -19
- data/app/serializers/spree/api/v3/admin/update_status_serializer.rb +28 -0
- data/app/serializers/spree/api/v3/admin/variant_serializer.rb +13 -10
- data/app/serializers/spree/api/v3/admin/webhook_delivery_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/admin/webhook_event_serializer.rb +23 -0
- data/app/serializers/spree/api/v3/applied_promotion_serializer.rb +2 -4
- data/app/serializers/spree/api/v3/base_serializer.rb +132 -7
- data/app/serializers/spree/api/v3/cart_serializer.rb +20 -66
- data/app/serializers/spree/api/v3/category_serializer.rb +5 -15
- data/app/serializers/spree/api/v3/claim_line_item_serializer.rb +6 -29
- data/app/serializers/spree/api/v3/claim_serializer.rb +2 -16
- data/app/serializers/spree/api/v3/collection_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/company_serializer.rb +1 -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/custom_field_serializer.rb +1 -2
- data/app/serializers/spree/api/v3/customer_serializer.rb +3 -2
- data/app/serializers/spree/api/v3/delivery_rate_serializer.rb +8 -32
- data/app/serializers/spree/api/v3/delivery_zone_member_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/digital_asset_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/digital_link_serializer.rb +3 -9
- data/app/serializers/spree/api/v3/discount_serializer.rb +4 -12
- data/app/serializers/spree/api/v3/exchange_line_item_serializer.rb +6 -30
- data/app/serializers/spree/api/v3/exchange_serializer.rb +2 -16
- data/app/serializers/spree/api/v3/export_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/fee_serializer.rb +2 -10
- 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/fulfillment_serializer.rb +4 -11
- data/app/serializers/spree/api/v3/gift_card_batch_serializer.rb +3 -7
- data/app/serializers/spree/api/v3/gift_card_serializer.rb +7 -17
- data/app/serializers/spree/api/v3/import_row_serializer.rb +2 -6
- data/app/serializers/spree/api/v3/import_serializer.rb +3 -26
- data/app/serializers/spree/api/v3/invitation_serializer.rb +2 -19
- data/app/serializers/spree/api/v3/line_item_serializer.rb +19 -23
- 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_event_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/media_serializer.rb +8 -5
- data/app/serializers/spree/api/v3/newsletter_subscriber_request_event_serializer.rb +35 -0
- data/app/serializers/spree/api/v3/newsletter_subscriber_serializer.rb +2 -6
- data/app/serializers/spree/api/v3/option_value_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/order_group_serializer.rb +12 -25
- data/app/serializers/spree/api/v3/order_serializer.rb +14 -58
- data/app/serializers/spree/api/v3/password_reset_requested_event_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/payment_method_serializer.rb +2 -6
- data/app/serializers/spree/api/v3/payment_serializer.rb +5 -10
- data/app/serializers/spree/api/v3/payment_session_serializer.rb +5 -13
- data/app/serializers/spree/api/v3/payment_setup_session_serializer.rb +3 -11
- data/app/serializers/spree/api/v3/policy_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/price_history_serializer.rb +6 -8
- data/app/serializers/spree/api/v3/price_serializer.rb +7 -12
- data/app/serializers/spree/api/v3/product_filter_price_range_serializer.rb +10 -4
- data/app/serializers/spree/api/v3/product_publication_serializer.rb +1 -7
- data/app/serializers/spree/api/v3/product_serializer.rb +10 -24
- data/app/serializers/spree/api/v3/product_submission_serializer.rb +26 -0
- data/app/serializers/spree/api/v3/purchase_order_event_serializer.rb +23 -4
- data/app/serializers/spree/api/v3/refund_serializer.rb +11 -16
- data/app/serializers/spree/api/v3/return_line_item_serializer.rb +6 -21
- data/app/serializers/spree/api/v3/return_serializer.rb +4 -16
- data/app/serializers/spree/api/v3/saved_report_event_serializer.rb +23 -0
- 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 +5 -15
- data/app/serializers/spree/api/v3/seller/delivery_rate_serializer.rb +8 -13
- data/app/serializers/spree/api/v3/seller/delivery_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/seller/delivery_zone_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/seller/exchange_line_item_serializer.rb +5 -0
- data/app/serializers/spree/api/v3/seller/exchange_serializer.rb +6 -3
- 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/fulfillment_item_serializer.rb +1 -7
- data/app/serializers/spree/api/v3/seller/fulfillment_serializer.rb +2 -6
- data/app/serializers/spree/api/v3/seller/import_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/seller/invitation_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/seller/media_serializer.rb +2 -5
- data/app/serializers/spree/api/v3/seller/order_line_item_serializer.rb +8 -13
- data/app/serializers/spree/api/v3/seller/order_serializer.rb +19 -40
- data/app/serializers/spree/api/v3/seller/payment_split_serializer.rb +8 -9
- data/app/serializers/spree/api/v3/seller/payout_serializer.rb +6 -6
- 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 +3 -7
- data/app/serializers/spree/api/v3/seller/product_submission_serializer.rb +1 -21
- data/app/serializers/spree/api/v3/seller/profile_serializer.rb +9 -13
- data/app/serializers/spree/api/v3/seller/requirement_status_serializer.rb +3 -9
- 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 -17
- 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 +10 -9
- data/app/serializers/spree/api/v3/seller/variant_serializer.rb +8 -4
- data/app/serializers/spree/api/v3/seller_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/shipping_label_event_serializer.rb +22 -4
- data/app/serializers/spree/api/v3/stock_level_serializer.rb +1 -7
- data/app/serializers/spree/api/v3/stock_location_serializer.rb +8 -1
- data/app/serializers/spree/api/v3/stock_movement_serializer.rb +1 -3
- data/app/serializers/spree/api/v3/stock_receipt_event_serializer.rb +20 -4
- data/app/serializers/spree/api/v3/stock_transfer_serializer.rb +1 -7
- data/app/serializers/spree/api/v3/store_credit_event_serializer.rb +2 -13
- data/app/serializers/spree/api/v3/store_credit_serializer.rb +3 -27
- data/app/serializers/spree/api/v3/supplier_event_serializer.rb +6 -4
- data/app/serializers/spree/api/v3/tax_line_serializer.rb +11 -23
- data/app/serializers/spree/api/v3/variant_serializer.rb +10 -24
- data/app/serializers/spree/api/v3/wishlist_item_serializer.rb +1 -11
- data/app/serializers/spree/api/v3/wishlist_serializer.rb +2 -6
- 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/app/subscribers/spree/webhook_event_subscriber.rb +3 -10
- data/config/initializers/pagy.rb +1 -1
- data/config/initializers/typelizer.rb +7 -9
- data/config/locales/ar.yml +15 -0
- data/config/locales/be.yml +15 -0
- data/config/locales/bg.yml +15 -0
- data/config/locales/ca.yml +15 -0
- data/config/locales/cs.yml +15 -0
- data/config/locales/da.yml +15 -0
- data/config/locales/de-CH.yml +11 -0
- data/config/locales/de.yml +15 -0
- data/config/locales/el.yml +15 -0
- data/config/locales/en.yml +5 -40
- data/config/locales/es-CL.yml +10 -0
- data/config/locales/es-EC.yml +11 -0
- data/config/locales/es-MX.yml +12 -0
- data/config/locales/es.yml +15 -0
- data/config/locales/et.yml +15 -0
- data/config/locales/fa.yml +15 -0
- data/config/locales/fi.yml +15 -0
- data/config/locales/fr.yml +15 -0
- data/config/locales/hu.yml +15 -0
- data/config/locales/id.yml +15 -0
- data/config/locales/it.yml +15 -0
- data/config/locales/ja.yml +15 -0
- data/config/locales/km.yml +15 -0
- data/config/locales/ko.yml +15 -0
- data/config/locales/ku.yml +15 -0
- data/config/locales/lt.yml +15 -0
- data/config/locales/lv.yml +15 -0
- data/config/locales/nb.yml +15 -0
- data/config/locales/ne.yml +15 -0
- data/config/locales/nl.yml +15 -0
- data/config/locales/pl.yml +15 -0
- data/config/locales/pt-BR.yml +13 -0
- data/config/locales/pt.yml +15 -0
- data/config/locales/ro.yml +15 -0
- data/config/locales/ru.yml +15 -0
- data/config/locales/sk.yml +15 -0
- data/config/locales/sl-SI.yml +15 -0
- data/config/locales/sv.yml +15 -0
- data/config/locales/th.yml +15 -0
- data/config/locales/tr.yml +15 -0
- data/config/locales/uk.yml +15 -0
- data/config/locales/vi.yml +15 -0
- data/config/locales/zh-CN.yml +15 -0
- data/config/locales/zh-TW.yml +15 -0
- data/config/routes.rb +54 -102
- data/lib/spree/api/configuration.rb +5 -0
- data/lib/spree/api/dependencies.rb +54 -274
- 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 +127 -81
- 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 +39 -0
- data/lib/spree/api/webhook_event_types.rb +140 -0
- data/lib/spree/api.rb +0 -2
- data/lib/tasks/filters.rake +12 -0
- data/lib/typelizer/open_enums.rb +10 -0
- metadata +125 -40
- 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
- data/config/i18n-tasks.yml +0 -40
- data/config/initializers/alba.rb +0 -5
|
@@ -9,9 +9,15 @@ module Spree
|
|
|
9
9
|
# broad customer access.
|
|
10
10
|
scoped_resource :store_credits
|
|
11
11
|
|
|
12
|
+
request_params :customer_store_credit do |body|
|
|
13
|
+
body.attribute :amount, :decimal, required: true, on: :create, example: '50.00'
|
|
14
|
+
body.attribute :currency, :currency, required: true, on: :create, only: :create, example: 'USD'
|
|
15
|
+
body.attribute :memo, :string
|
|
16
|
+
end
|
|
17
|
+
|
|
12
18
|
# POST /api/v3/admin/customers/:customer_id/store_credits
|
|
13
19
|
def create
|
|
14
|
-
@resource = @parent.store_credits.new(
|
|
20
|
+
@resource = @parent.store_credits.new(store_credit_attributes)
|
|
15
21
|
@resource.created_by = try_spree_current_user
|
|
16
22
|
@resource.store ||= current_store
|
|
17
23
|
authorize_resource!(@resource, :create)
|
|
@@ -27,7 +33,7 @@ module Spree
|
|
|
27
33
|
def update
|
|
28
34
|
authorize_resource!(@resource)
|
|
29
35
|
|
|
30
|
-
if @resource.amount_used.positive? &&
|
|
36
|
+
if @resource.amount_used.positive? && store_credit_attributes.key?(:amount)
|
|
31
37
|
render_error(
|
|
32
38
|
code: 'store_credit_in_use',
|
|
33
39
|
message: 'Cannot change amount on a store credit that has already been used',
|
|
@@ -36,7 +42,7 @@ module Spree
|
|
|
36
42
|
return
|
|
37
43
|
end
|
|
38
44
|
|
|
39
|
-
if @resource.update(
|
|
45
|
+
if @resource.update(store_credit_attributes)
|
|
40
46
|
render json: serialize_resource(@resource.reload)
|
|
41
47
|
else
|
|
42
48
|
render_validation_error(@resource.errors)
|
|
@@ -62,10 +68,6 @@ module Spree
|
|
|
62
68
|
|
|
63
69
|
protected
|
|
64
70
|
|
|
65
|
-
def parent_association
|
|
66
|
-
:store_credits
|
|
67
|
-
end
|
|
68
|
-
|
|
69
71
|
# Customers are global; store credits belong to a store, so the
|
|
70
72
|
# nested collection is bound to the current store.
|
|
71
73
|
def scope
|
|
@@ -82,12 +84,8 @@ module Spree
|
|
|
82
84
|
|
|
83
85
|
private
|
|
84
86
|
|
|
85
|
-
def
|
|
86
|
-
params.permit(
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
def update_attrs
|
|
90
|
-
params.permit(:memo, :amount).to_h
|
|
87
|
+
def store_credit_attributes
|
|
88
|
+
params.permit(*declared_permitted_attributes).to_h
|
|
91
89
|
end
|
|
92
90
|
end
|
|
93
91
|
end
|
|
@@ -8,6 +8,11 @@ module Spree
|
|
|
8
8
|
|
|
9
9
|
include Spree::Api::V3::TaxIdentifierValidation
|
|
10
10
|
|
|
11
|
+
request_params :tax_identifier do |body|
|
|
12
|
+
body.include_attributes Spree::Api::V3::Admin::TaxIdentifierRequestSchema
|
|
13
|
+
body.require_attributes :kind, :value, on: :create
|
|
14
|
+
end
|
|
15
|
+
|
|
11
16
|
# Re-declaring the filter replaces the inherited options, so the
|
|
12
17
|
# standard actions have to be listed alongside the custom one.
|
|
13
18
|
before_action :set_resource, only: [:show, :update, :destroy, :validate]
|
|
@@ -33,7 +38,7 @@ module Spree
|
|
|
33
38
|
end
|
|
34
39
|
|
|
35
40
|
def permitted_params
|
|
36
|
-
params.permit(
|
|
41
|
+
params.permit(*declared_permitted_attributes)
|
|
37
42
|
end
|
|
38
43
|
end
|
|
39
44
|
end
|
|
@@ -7,6 +7,40 @@ module Spree
|
|
|
7
7
|
|
|
8
8
|
scoped_resource :customers
|
|
9
9
|
|
|
10
|
+
request_params :customer do |body|
|
|
11
|
+
body.attribute :email, :string, required: true, on: :create, example: 'new@example.com'
|
|
12
|
+
body.attribute :first_name, :string
|
|
13
|
+
body.attribute :last_name, :string
|
|
14
|
+
body.attribute :phone, :string
|
|
15
|
+
body.attribute :password, :string,
|
|
16
|
+
description: 'Optional: a customer created without one claims the account through a password reset.'
|
|
17
|
+
body.attribute :password_confirmation, :string,
|
|
18
|
+
description: 'Optional: a customer created without one claims the account through a password reset.'
|
|
19
|
+
body.attribute :selected_locale, :string
|
|
20
|
+
body.attribute :avatar_signed_id, :string, description: 'A `signed_id` from `files.upload()`.'
|
|
21
|
+
body.attribute :accepts_email_marketing, :boolean
|
|
22
|
+
body.attribute :internal_note, :string,
|
|
23
|
+
description: 'Rich text HTML. Reads come back as this plus `internal_note_html`.'
|
|
24
|
+
body.attribute :metadata, :hash
|
|
25
|
+
body.attribute :tags, :array, of: :string
|
|
26
|
+
body.attribute :customer_group_ids, :array, of: :id,
|
|
27
|
+
description: "Replaces the customer's group membership."
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
%i[bulk_add_to_groups bulk_remove_from_groups].each do |action|
|
|
31
|
+
request_params 'CustomerBulkGroupsParams', action: action do |body|
|
|
32
|
+
body.attribute :ids, :array, of: :id, required: true, example: %w[cus_UkLWZg9DAJ cus_QrLWXg9CAJ]
|
|
33
|
+
body.attribute :customer_group_ids, :array, of: :id,
|
|
34
|
+
required: true,
|
|
35
|
+
example: %w[cg_UkLWZg9DAJ],
|
|
36
|
+
description: 'Groups from other stores are ignored.'
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
%i[bulk_add_tags bulk_remove_tags].each do |action|
|
|
41
|
+
request_params('BulkTagsParams', action: action) { |body| body.include_attributes Spree::Api::V3::Admin::BulkTagsRequestSchema }
|
|
42
|
+
end
|
|
43
|
+
|
|
10
44
|
# Re-declaring a `before_action` for the same method REPLACES the
|
|
11
45
|
# inherited registration rather than adding to it, so the inherited
|
|
12
46
|
# actions have to be repeated here or show/update/destroy silently
|
|
@@ -51,7 +85,7 @@ module Spree
|
|
|
51
85
|
rescue Spree::Core::DestroyWithOrdersError => e
|
|
52
86
|
render_error(
|
|
53
87
|
code: 'customer_has_orders',
|
|
54
|
-
message: e.message.presence ||
|
|
88
|
+
message: e.message.presence || I18n.t('spree.error_user_destroy_with_orders'),
|
|
55
89
|
status: :unprocessable_content
|
|
56
90
|
)
|
|
57
91
|
end
|
|
@@ -108,7 +142,7 @@ module Spree
|
|
|
108
142
|
if @resource.anonymized?
|
|
109
143
|
return render_error(
|
|
110
144
|
code: ERROR_CODES[:validation_error],
|
|
111
|
-
message:
|
|
145
|
+
message: I18n.t('spree.data_request_errors.already_anonymized'),
|
|
112
146
|
status: :unprocessable_content
|
|
113
147
|
)
|
|
114
148
|
end
|
|
@@ -258,13 +292,7 @@ module Spree
|
|
|
258
292
|
end
|
|
259
293
|
|
|
260
294
|
def permitted_params
|
|
261
|
-
params.permit(
|
|
262
|
-
*model_additional_permitted_attributes,
|
|
263
|
-
:email, :first_name, :last_name, :phone,
|
|
264
|
-
:password, :password_confirmation, :selected_locale,
|
|
265
|
-
:avatar, :accepts_email_marketing, :internal_note,
|
|
266
|
-
metadata: {}, tags: [], customer_group_ids: []
|
|
267
|
-
)
|
|
295
|
+
params.permit(*permitted_attributes)
|
|
268
296
|
end
|
|
269
297
|
|
|
270
298
|
# Authorises bulk group mutation, decodes prefixed IDs, then dispatches
|
|
@@ -11,6 +11,14 @@ module Spree
|
|
|
11
11
|
class DataRequestsController < ResourceController
|
|
12
12
|
scoped_resource :customers
|
|
13
13
|
|
|
14
|
+
request_params 'DataRequestCreateParams', action: :create do |body|
|
|
15
|
+
body.attribute :customer_id, :id, required: true
|
|
16
|
+
body.attribute :kind, :string,
|
|
17
|
+
required: true,
|
|
18
|
+
choices: Spree::DataRequest::KINDS,
|
|
19
|
+
description: "`access` asks for a copy of the customer's personal data; `erasure` asks for it to be erased."
|
|
20
|
+
end
|
|
21
|
+
|
|
14
22
|
def create
|
|
15
23
|
authorize! :create, Spree::DataRequest
|
|
16
24
|
|
|
@@ -15,7 +15,7 @@ module Spree
|
|
|
15
15
|
type: klass.api_type,
|
|
16
16
|
name: klass.human_name,
|
|
17
17
|
description: klass.human_description,
|
|
18
|
-
|
|
18
|
+
schema: klass.preference_json_schema,
|
|
19
19
|
# Association-backed config (e.g. `product_ids`) a rule accepts
|
|
20
20
|
# beyond its preferences, so admin UIs can render the right
|
|
21
21
|
# editor without hardcoding rule types.
|
|
@@ -8,6 +8,18 @@ module Spree
|
|
|
8
8
|
class RulesController < ResourceController
|
|
9
9
|
scoped_resource :delivery_methods
|
|
10
10
|
|
|
11
|
+
request_params :delivery_method_rule do |body|
|
|
12
|
+
body.attribute :type, :string,
|
|
13
|
+
required: true,
|
|
14
|
+
only: :create,
|
|
15
|
+
example: 'excluded_products_rule',
|
|
16
|
+
description: 'A rule kind from the delivery method rule types endpoint.'
|
|
17
|
+
body.attribute :active, :boolean, description: 'Defaults to true on create.'
|
|
18
|
+
body.attribute :preferences, :hash, description: "Values for the rule kind's preference schema."
|
|
19
|
+
body.attribute :product_ids, :array, of: :id,
|
|
20
|
+
description: 'Products an association-backed rule (`excluded_products_rule`) applies to. An empty list clears them.'
|
|
21
|
+
end
|
|
22
|
+
|
|
11
23
|
def create
|
|
12
24
|
rule_class = Spree.delivery_method_rules.detect do |klass|
|
|
13
25
|
klass.api_type == params[:type].to_s
|
|
@@ -16,8 +28,8 @@ module Spree
|
|
|
16
28
|
if rule_class.nil?
|
|
17
29
|
return render_error(
|
|
18
30
|
code: ERROR_CODES[:validation_error],
|
|
19
|
-
message:
|
|
20
|
-
status: :
|
|
31
|
+
message: I18n.t('spree.errors.messages.invalid_delivery_method_rule'),
|
|
32
|
+
status: :unprocessable_content
|
|
21
33
|
)
|
|
22
34
|
end
|
|
23
35
|
|
|
@@ -62,7 +74,7 @@ module Spree
|
|
|
62
74
|
end
|
|
63
75
|
|
|
64
76
|
def permitted_params
|
|
65
|
-
params.permit(*
|
|
77
|
+
params.permit(*permitted_attributes)
|
|
66
78
|
end
|
|
67
79
|
|
|
68
80
|
private
|
|
@@ -86,11 +98,7 @@ module Spree
|
|
|
86
98
|
end
|
|
87
99
|
|
|
88
100
|
def assign_rule_preferences(rule)
|
|
89
|
-
(permitted_params[:preferences]
|
|
90
|
-
next unless rule.has_preference?(key)
|
|
91
|
-
|
|
92
|
-
rule.set_preference(key, value)
|
|
93
|
-
end
|
|
101
|
+
rule.assign_preferences(permitted_params[:preferences]) if permitted_params[:preferences]
|
|
94
102
|
end
|
|
95
103
|
|
|
96
104
|
# Association-backed rule config (ExcludedProductsRule). Products are
|
|
@@ -5,6 +5,88 @@ module Spree
|
|
|
5
5
|
class DeliveryMethodsController < ResourceController
|
|
6
6
|
scoped_resource :delivery_methods
|
|
7
7
|
|
|
8
|
+
# A single POST/PATCH can ship eligibility rules and carrier service
|
|
9
|
+
# rows alongside the basics; `DeliveryMethod#rules=` / `#services=`
|
|
10
|
+
# reconcile to the desired set, so the dashboard saves the whole
|
|
11
|
+
# sheet in one round-trip.
|
|
12
|
+
request_params :delivery_method do |body|
|
|
13
|
+
body.attribute :name, :string, required: true, on: :create, example: 'Express'
|
|
14
|
+
body.attribute :admin_name, :string, nullable: true
|
|
15
|
+
body.attribute :code, :string, nullable: true
|
|
16
|
+
body.attribute :fulfillment_provider, :string,
|
|
17
|
+
example: 'manual',
|
|
18
|
+
description: 'Fulfillment provider shorthand (see the fulfillment providers endpoint), e.g. `manual`.'
|
|
19
|
+
body.attribute :pickup_point_provider, :string, nullable: true
|
|
20
|
+
body.attribute :rate_provider, :string,
|
|
21
|
+
nullable: true,
|
|
22
|
+
description: 'Rate provider shorthand (see the rate providers endpoint), e.g. `easy_post`. Omit or send null for the built-in provider, which prices through the method\'s calculator.'
|
|
23
|
+
body.attribute :storefront_visible, :boolean
|
|
24
|
+
body.attribute :available_to_sellers, :boolean,
|
|
25
|
+
description: "Marketplace only: whether a seller's packages may be quoted by this method. Off by default, and refused on a method that belongs to a seller."
|
|
26
|
+
body.attribute :tracking_url, :string, nullable: true
|
|
27
|
+
body.attribute :estimated_transit_business_days_min, :integer, nullable: true
|
|
28
|
+
body.attribute :estimated_transit_business_days_max, :integer, nullable: true
|
|
29
|
+
body.attribute :tax_category_id, :id,
|
|
30
|
+
nullable: true,
|
|
31
|
+
description: 'Prefixed tax category ID (`taxcat_...`), or null to clear.'
|
|
32
|
+
body.attribute :markup_flat, :decimal,
|
|
33
|
+
nullable: true,
|
|
34
|
+
description: 'Method-level flat handling fee added on top of provider-quoted rates.'
|
|
35
|
+
body.attribute :markup_percent, :decimal,
|
|
36
|
+
nullable: true,
|
|
37
|
+
description: 'Method-level percentage handling fee added on top of provider-quoted rates. Ignored for calculator-priced methods.'
|
|
38
|
+
body.attribute :delivery_profile_id, :id,
|
|
39
|
+
example: 'fp_86Rf07xd4z',
|
|
40
|
+
description: 'Delivery profile this method belongs to (`fp_...`); defaults to the store default profile.'
|
|
41
|
+
body.attribute :delivery_origin_group_id, :id,
|
|
42
|
+
description: "Origin group offering this method (`og_...`); defaults to the zone's group, else the profile's default group."
|
|
43
|
+
body.attribute :delivery_zone_id, :id,
|
|
44
|
+
nullable: true,
|
|
45
|
+
description: "Delivery zone narrowing destinations (`dz_...`), or null for no restriction. Must belong to the method's profile."
|
|
46
|
+
body.attribute :stock_location_ids, :array, of: :id,
|
|
47
|
+
description: 'Pickup locations (`sloc_...`); replaces the full set.'
|
|
48
|
+
body.attribute :calculator, :object,
|
|
49
|
+
description: "How the method prices a shipment: a type from the calculators endpoint and its preferences, matching that type's `schema`." do |calculator|
|
|
50
|
+
calculator.attribute :type, :string, example: 'flat_rate'
|
|
51
|
+
calculator.attribute :preferences, :hash, example: { amount: '12.5' }
|
|
52
|
+
end
|
|
53
|
+
# Permitted by `rule_attributes`, which adds the association-backed
|
|
54
|
+
# config each registered rule kind declares.
|
|
55
|
+
body.attribute :rules, :array,
|
|
56
|
+
permit: false,
|
|
57
|
+
description: 'Eligibility rules. Replaces the full set: omitted rules are removed.' do |rule|
|
|
58
|
+
rule.attribute :id, :id
|
|
59
|
+
rule.attribute :type, :string, description: 'A rule kind from the delivery method rule types endpoint.'
|
|
60
|
+
rule.attribute :active, :boolean
|
|
61
|
+
rule.attribute :preferences, :hash
|
|
62
|
+
rule.attribute :product_ids, :array, of: :id,
|
|
63
|
+
description: 'Products an association-backed rule (`excluded_products_rule`) applies to.'
|
|
64
|
+
end
|
|
65
|
+
body.attribute :services, :array,
|
|
66
|
+
as: 'DeliveryMethodServiceParams',
|
|
67
|
+
description: 'Carrier service rows: which provider services this method offers. Replaces the full set: omitted rows are removed; no rows means every service the provider returns is offered.' do |service|
|
|
68
|
+
service.attribute :id, :id, description: 'Prefixed row ID (`dms_...`) when updating an existing row.'
|
|
69
|
+
service.attribute :carrier, :string,
|
|
70
|
+
required: true,
|
|
71
|
+
example: 'UPS',
|
|
72
|
+
description: "Carrier identifier as the provider's API knows it."
|
|
73
|
+
service.attribute :service, :string,
|
|
74
|
+
required: true,
|
|
75
|
+
example: 'Ground',
|
|
76
|
+
description: "Service identifier as the provider's API knows it."
|
|
77
|
+
service.attribute :label, :string,
|
|
78
|
+
nullable: true,
|
|
79
|
+
description: 'Display label shown to customers instead of the carrier-derived name.'
|
|
80
|
+
service.attribute :markup_flat, :decimal,
|
|
81
|
+
nullable: true,
|
|
82
|
+
description: 'Overrides the method-level flat markup for this service.'
|
|
83
|
+
service.attribute :markup_percent, :decimal,
|
|
84
|
+
nullable: true,
|
|
85
|
+
description: 'Overrides the method-level percentage markup for this service.'
|
|
86
|
+
service.attribute :position, :integer
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
8
90
|
# GET /api/v3/admin/delivery_methods/calculators
|
|
9
91
|
# Registered delivery calculator classes with their preference
|
|
10
92
|
# schemas, so admin UIs can render configuration forms.
|
|
@@ -15,7 +97,7 @@ module Spree
|
|
|
15
97
|
{
|
|
16
98
|
type: calculator_class.api_type,
|
|
17
99
|
name: calculator_class.description,
|
|
18
|
-
|
|
100
|
+
schema: calculator_class.preference_json_schema
|
|
19
101
|
}
|
|
20
102
|
end
|
|
21
103
|
|
|
@@ -31,9 +113,8 @@ module Spree
|
|
|
31
113
|
|
|
32
114
|
data = Spree.fulfillment_providers.map do |provider_class|
|
|
33
115
|
{
|
|
34
|
-
type: provider_class.
|
|
116
|
+
type: provider_class.api_type,
|
|
35
117
|
name: provider_class.provider_name,
|
|
36
|
-
integration_class: provider_class.integration_class,
|
|
37
118
|
integration_type: integration_api_type(provider_class),
|
|
38
119
|
available: provider_class.available_for_store?(current_store),
|
|
39
120
|
digital: provider_class.digital?,
|
|
@@ -61,9 +142,8 @@ module Spree
|
|
|
61
142
|
catalog = provider_class.service_catalog(integration)
|
|
62
143
|
|
|
63
144
|
{
|
|
64
|
-
type: provider_class.
|
|
145
|
+
type: provider_class.api_type,
|
|
65
146
|
name: provider_class.provider_name,
|
|
66
|
-
integration_class: provider_class.integration_class,
|
|
67
147
|
integration_type: integration_api_type(provider_class),
|
|
68
148
|
available: provider_class.available_for_store?(current_store),
|
|
69
149
|
requires_address: provider_class.requires_address?,
|
|
@@ -76,15 +156,15 @@ module Spree
|
|
|
76
156
|
}
|
|
77
157
|
end
|
|
78
158
|
|
|
79
|
-
render json: { data: data, default: Spree::DeliveryMethod::DEFAULT_RATE_PROVIDER }
|
|
159
|
+
render json: { data: data, default: Spree::ApiTyped.api_type_for(Spree::DeliveryMethod::DEFAULT_RATE_PROVIDER) }
|
|
80
160
|
end
|
|
81
161
|
|
|
82
162
|
def create
|
|
83
163
|
@resource = model_class.new(assignable_params)
|
|
84
164
|
authorize_resource!(@resource, :create)
|
|
85
|
-
|
|
165
|
+
@resource.assign_calculator_attributes(permitted_params[:calculator])
|
|
86
166
|
|
|
87
|
-
if @resource.
|
|
167
|
+
if @resource.save
|
|
88
168
|
render json: serialize_resource(@resource), status: :created
|
|
89
169
|
else
|
|
90
170
|
render_validation_error(@resource.errors)
|
|
@@ -92,10 +172,12 @@ module Spree
|
|
|
92
172
|
end
|
|
93
173
|
|
|
94
174
|
def update
|
|
95
|
-
|
|
96
|
-
|
|
175
|
+
saved = save_atomically do
|
|
176
|
+
@resource.assign_attributes(assignable_params)
|
|
177
|
+
@resource.assign_calculator_attributes(permitted_params[:calculator])
|
|
178
|
+
end
|
|
97
179
|
|
|
98
|
-
if
|
|
180
|
+
if saved
|
|
99
181
|
render json: serialize_resource(@resource)
|
|
100
182
|
else
|
|
101
183
|
render_validation_error(@resource.errors)
|
|
@@ -120,23 +202,8 @@ module Spree
|
|
|
120
202
|
Spree.api.admin_delivery_method_serializer
|
|
121
203
|
end
|
|
122
204
|
|
|
123
|
-
# A single POST/PATCH can ship eligibility rules and carrier service
|
|
124
|
-
# rows alongside the basics; `DeliveryMethod#rules=` / `#services=`
|
|
125
|
-
# reconcile to the desired set, so the dashboard saves the whole
|
|
126
|
-
# sheet in one round-trip.
|
|
127
205
|
def permitted_params
|
|
128
|
-
params.permit(
|
|
129
|
-
*model_additional_permitted_attributes,
|
|
130
|
-
:name, :admin_name, :code, :fulfillment_provider,
|
|
131
|
-
:pickup_point_provider, :rate_provider, :storefront_visible, :tracking_url,
|
|
132
|
-
:available_to_sellers,
|
|
133
|
-
:estimated_transit_business_days_min, :estimated_transit_business_days_max,
|
|
134
|
-
:tax_category_id, :calculator_type, :markup_flat, :markup_percent,
|
|
135
|
-
:delivery_profile_id, :delivery_origin_group_id, :delivery_zone_id,
|
|
136
|
-
stock_location_ids: [], calculator_preferences: {},
|
|
137
|
-
rules: rule_attributes,
|
|
138
|
-
services: [:id, :carrier, :service, :label, :markup_flat, :markup_percent, :position]
|
|
139
|
-
)
|
|
206
|
+
params.permit(*permitted_attributes, rules: rule_attributes)
|
|
140
207
|
end
|
|
141
208
|
|
|
142
209
|
def rule_attributes
|
|
@@ -160,7 +227,7 @@ module Spree
|
|
|
160
227
|
|
|
161
228
|
# Resolves prefixed-ID params to records; calculator handled separately.
|
|
162
229
|
def assignable_params
|
|
163
|
-
attributes = permitted_params.except(:tax_category_id, :delivery_profile_id, :delivery_origin_group_id, :delivery_zone_id, :stock_location_ids, :
|
|
230
|
+
attributes = permitted_params.except(:tax_category_id, :delivery_profile_id, :delivery_origin_group_id, :delivery_zone_id, :stock_location_ids, :calculator)
|
|
164
231
|
if params.key?(:tax_category_id)
|
|
165
232
|
attributes[:tax_category] = params[:tax_category_id].present? ? Spree::TaxCategory.accessible_by(current_ability, :show).find_by_prefix_id!(params[:tax_category_id]) : nil
|
|
166
233
|
end
|
|
@@ -202,40 +269,6 @@ module Spree
|
|
|
202
269
|
where(id: decode_prefixed_ids(ids)).
|
|
203
270
|
pluck(:id)
|
|
204
271
|
end
|
|
205
|
-
|
|
206
|
-
def assign_calculator(delivery_method)
|
|
207
|
-
calculator_type = permitted_params[:calculator_type]
|
|
208
|
-
preferences = permitted_params[:calculator_preferences]
|
|
209
|
-
|
|
210
|
-
if calculator_type.present? && delivery_method.calculator&.class&.api_type != calculator_type
|
|
211
|
-
selected_calculator_class = Spree::DeliveryMethod.calculators.find do |klass|
|
|
212
|
-
klass.api_type == calculator_type
|
|
213
|
-
end
|
|
214
|
-
unless selected_calculator_class
|
|
215
|
-
delivery_method.errors.add(:calculator_type, :invalid)
|
|
216
|
-
return
|
|
217
|
-
end
|
|
218
|
-
|
|
219
|
-
delivery_method.calculator = selected_calculator_class.new
|
|
220
|
-
end
|
|
221
|
-
|
|
222
|
-
return if preferences.blank?
|
|
223
|
-
|
|
224
|
-
# A payload may carry preferences without naming a calculator —
|
|
225
|
-
# editing the amount on a method that already has one, or creating
|
|
226
|
-
# with the default. The model only builds the default calculator
|
|
227
|
-
# at validation, so without this the preferences land on nothing
|
|
228
|
-
# and the amount the merchant typed is silently replaced by a free
|
|
229
|
-
# rate.
|
|
230
|
-
delivery_method.ensure_calculator
|
|
231
|
-
return if delivery_method.calculator.nil?
|
|
232
|
-
|
|
233
|
-
preferences.each do |key, value|
|
|
234
|
-
next unless delivery_method.calculator.has_preference?(key)
|
|
235
|
-
|
|
236
|
-
delivery_method.calculator.set_preference(key, value)
|
|
237
|
-
end
|
|
238
|
-
end
|
|
239
272
|
end
|
|
240
273
|
end
|
|
241
274
|
end
|
|
@@ -10,6 +10,13 @@ module Spree
|
|
|
10
10
|
class OriginGroupsController < ResourceController
|
|
11
11
|
scoped_resource :settings
|
|
12
12
|
|
|
13
|
+
request_params 'DeliveryOriginGroupParams' do |body|
|
|
14
|
+
body.attribute :name, :string, nullable: true, example: 'EU warehouse'
|
|
15
|
+
body.attribute :position, :integer
|
|
16
|
+
body.attribute :stock_location_ids, :array, of: :id,
|
|
17
|
+
description: 'Prefixed stock location IDs (`sloc_...`); replaces the full set. Empty means every store location.'
|
|
18
|
+
end
|
|
19
|
+
|
|
13
20
|
def create
|
|
14
21
|
@resource = scope.new(assignable_params)
|
|
15
22
|
authorize_resource!(@resource, :create)
|
|
@@ -46,7 +53,7 @@ module Spree
|
|
|
46
53
|
end
|
|
47
54
|
|
|
48
55
|
def permitted_params
|
|
49
|
-
params.permit(*
|
|
56
|
+
params.permit(*permitted_attributes)
|
|
50
57
|
end
|
|
51
58
|
|
|
52
59
|
def collection_includes
|
|
@@ -9,18 +9,25 @@ module Spree
|
|
|
9
9
|
class DeliveryProfilesController < ResourceController
|
|
10
10
|
scoped_resource :settings
|
|
11
11
|
|
|
12
|
+
request_params :delivery_profile do |body|
|
|
13
|
+
body.attribute :name, :string, required: true, on: :create, example: 'Oversized'
|
|
14
|
+
body.attribute :kind, :string,
|
|
15
|
+
example: 'shipping',
|
|
16
|
+
description: 'Registered profile kind (`shipping`, `digital`, extension kinds) from the kinds endpoint. Read on create only; defaults to shipping.'
|
|
17
|
+
body.attribute :default, :boolean,
|
|
18
|
+
description: 'Promotes this profile to the store default; the previous default is demoted.'
|
|
19
|
+
body.attribute :position, :integer
|
|
20
|
+
body.attribute :stock_location_ids, :array, of: :id,
|
|
21
|
+
description: 'Prefixed stock location IDs (`sloc_...`); replaces the full set. Empty means every store location.'
|
|
22
|
+
end
|
|
23
|
+
|
|
12
24
|
# GET /api/v3/admin/delivery_profiles/kinds
|
|
13
25
|
# Registered profile kinds, so admin UIs offer extension-added
|
|
14
26
|
# kinds without hardcoding the built-ins.
|
|
15
27
|
def kinds
|
|
16
28
|
authorize! :create, model_class
|
|
17
29
|
|
|
18
|
-
data = Spree.delivery_profile_types.map
|
|
19
|
-
{
|
|
20
|
-
type: profile_class.to_s,
|
|
21
|
-
kind: profile_class.api_type
|
|
22
|
-
}
|
|
23
|
-
end
|
|
30
|
+
data = Spree.delivery_profile_types.map { |profile_class| { kind: profile_class.api_type } }
|
|
24
31
|
|
|
25
32
|
render json: { data: data }
|
|
26
33
|
end
|
|
@@ -63,7 +70,7 @@ module Spree
|
|
|
63
70
|
end
|
|
64
71
|
|
|
65
72
|
def permitted_params
|
|
66
|
-
params.permit(*
|
|
73
|
+
params.permit(*permitted_attributes)
|
|
67
74
|
end
|
|
68
75
|
|
|
69
76
|
def collection_includes
|
|
@@ -8,6 +8,26 @@ module Spree
|
|
|
8
8
|
class DeliveryZonesController < ResourceController
|
|
9
9
|
scoped_resource :settings
|
|
10
10
|
|
|
11
|
+
request_params :delivery_zone do |body|
|
|
12
|
+
body.attribute :name, :string, required: true, on: :create, example: 'US North-East'
|
|
13
|
+
body.attribute :description, :string, nullable: true
|
|
14
|
+
body.attribute :delivery_profile_id, :id,
|
|
15
|
+
description: 'Delivery profile this zone belongs to (`fp_...`); defaults to the store default profile.'
|
|
16
|
+
body.attribute :delivery_origin_group_id, :id,
|
|
17
|
+
description: 'Origin group this zone belongs to (`og_...`).'
|
|
18
|
+
body.attribute :members, :array,
|
|
19
|
+
as: 'DeliveryZoneMemberParams',
|
|
20
|
+
description: "Replaces the zone's full member set atomically." do |member|
|
|
21
|
+
member.attribute :member_type, :string, required: true, choices: Spree::DeliveryZoneMember::MEMBER_TYPES
|
|
22
|
+
member.attribute :country_code, :country, example: 'US'
|
|
23
|
+
member.attribute :state_code, :string,
|
|
24
|
+
description: 'A subdivision code or name. Without `country_code` the country is inferred when only one country matches.'
|
|
25
|
+
member.attribute :postal_code_prefix, :string
|
|
26
|
+
member.attribute :postal_code_from, :string
|
|
27
|
+
member.attribute :postal_code_to, :string
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
11
31
|
def create
|
|
12
32
|
@resource = model_class.new(zone_params)
|
|
13
33
|
authorize_resource!(@resource, :create)
|
|
@@ -50,11 +70,7 @@ module Spree
|
|
|
50
70
|
end
|
|
51
71
|
|
|
52
72
|
def permitted_params
|
|
53
|
-
params.permit(
|
|
54
|
-
*model_additional_permitted_attributes,
|
|
55
|
-
:name, :description, :delivery_profile_id, :delivery_origin_group_id,
|
|
56
|
-
members: [:member_type, :country_code, :state_code, :postal_code_prefix, :postal_code_from, :postal_code_to]
|
|
57
|
-
)
|
|
73
|
+
params.permit(*permitted_attributes)
|
|
58
74
|
end
|
|
59
75
|
|
|
60
76
|
def collection_includes
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
module EmailTemplates
|
|
6
|
+
# The draft of an editable email template: saved in any state, while
|
|
7
|
+
# customers keep receiving the published version.
|
|
8
|
+
class DraftsController < Admin::BaseController
|
|
9
|
+
include Spree::Api::V3::Admin::EmailTemplateLookup
|
|
10
|
+
|
|
11
|
+
request_params 'EmailTemplateDraftParams' do |body|
|
|
12
|
+
body.include_attributes Spree::Api::V3::Admin::EmailTemplateLanguageRequestSchema
|
|
13
|
+
body.attribute :subject, :string, nullable: true, example: 'Your order {{ order.number }} is confirmed'
|
|
14
|
+
body.attribute :body, :string,
|
|
15
|
+
example: '<mj-section><mj-column><mj-text>Thanks, {{ order.customer_name }}!</mj-text></mj-column></mj-section>'
|
|
16
|
+
body.attribute :lock_version, :integer,
|
|
17
|
+
nullable: true,
|
|
18
|
+
example: 0,
|
|
19
|
+
description: 'The `lock_version` the draft was loaded with, or null when there was no draft; a save from an older copy is refused with 409. Omit it to save without checking.'
|
|
20
|
+
body.attribute :rebase, :boolean,
|
|
21
|
+
description: "Marks the draft as based on Spree's current default, after reviewing what changed in it."
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# PUT /api/v3/admin/email_templates/:email_template_id/draft
|
|
25
|
+
#
|
|
26
|
+
# Send the `lock_version` the draft was loaded with: a save made from
|
|
27
|
+
# an older copy is refused with 409, naming who saved last. `rebase`
|
|
28
|
+
# marks the draft as based on Spree's current default.
|
|
29
|
+
def update
|
|
30
|
+
authorize! :update, Spree::EmailTemplate
|
|
31
|
+
|
|
32
|
+
result = Spree.email_template_save_draft_workflow.call(
|
|
33
|
+
store: current_store, key: email_template.key, locale: language, actor: current_actor,
|
|
34
|
+
attributes: params.permit(*declared_permitted_attributes).to_h.symbolize_keys
|
|
35
|
+
)
|
|
36
|
+
render_email_template_result(result)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# DELETE /api/v3/admin/email_templates/:email_template_id/draft
|
|
40
|
+
def destroy
|
|
41
|
+
authorize! :update, Spree::EmailTemplate
|
|
42
|
+
|
|
43
|
+
result = Spree.email_template_discard_draft_workflow.call(
|
|
44
|
+
store: current_store, key: email_template.key, locale: language, lock_version: params[:lock_version].presence
|
|
45
|
+
)
|
|
46
|
+
render_email_template_result(result)
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
module EmailTemplates
|
|
6
|
+
class PreviewsController < Admin::BaseController
|
|
7
|
+
include Spree::Api::V3::Admin::EmailTemplateLookup
|
|
8
|
+
|
|
9
|
+
request_params 'EmailTemplatePreviewParams' do |body|
|
|
10
|
+
body.include_attributes Spree::Api::V3::Admin::EmailTemplatePreviewRequestSchema
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
before_action :authorize_sample_data!
|
|
14
|
+
|
|
15
|
+
# POST /api/v3/admin/email_templates/:email_template_id/preview
|
|
16
|
+
#
|
|
17
|
+
# Renders the template with sample data built from the store's latest
|
|
18
|
+
# matching record, or the one `record_id` names. An unsaved `subject`
|
|
19
|
+
# and `body` take the place of the current version. Returns the
|
|
20
|
+
# rendered email and the variables it was rendered with.
|
|
21
|
+
def create
|
|
22
|
+
authorize! :update, Spree::EmailTemplate
|
|
23
|
+
|
|
24
|
+
preview = build_preview
|
|
25
|
+
preview.call
|
|
26
|
+
|
|
27
|
+
render json: Spree.api.admin_email_template_preview_serializer.new(preview, params: serializer_params).to_h
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|