spree_api 5.6.1 → 6.0.0.beta2
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/LICENSE +28 -0
- data/Rakefile +1 -1
- data/app/controllers/concerns/spree/api/v3/address_params.rb +17 -0
- data/app/controllers/concerns/spree/api/v3/admin/product_listing.rb +46 -0
- data/app/controllers/concerns/spree/api/v3/admin/product_membership.rb +110 -0
- data/app/controllers/concerns/spree/api/v3/admin/receivable_actions.rb +68 -0
- data/app/controllers/concerns/spree/api/v3/admin/reporting_authorization.rb +27 -0
- data/app/controllers/concerns/spree/api/v3/admin/role_grant_guard.rb +69 -33
- data/app/controllers/concerns/spree/api/v3/admin/stock_receipt_actions.rb +86 -0
- data/app/controllers/concerns/spree/api/v3/admin/store_context.rb +97 -0
- data/app/controllers/concerns/spree/api/v3/admin/subclassed_resource.rb +12 -6
- data/app/controllers/concerns/spree/api/v3/admin/validation_details.rb +91 -0
- data/app/controllers/concerns/spree/api/v3/admin_authentication.rb +20 -5
- data/app/controllers/concerns/spree/api/v3/api_key_authentication.rb +41 -5
- data/app/controllers/concerns/spree/api/v3/authentication_strategies.rb +48 -0
- data/app/controllers/concerns/spree/api/v3/bulk_operations.rb +4 -6
- data/app/controllers/concerns/spree/api/v3/cart_resolvable.rb +52 -16
- data/app/controllers/concerns/spree/api/v3/company_address_writes.rb +37 -0
- data/app/controllers/concerns/spree/api/v3/current_password_confirmation.rb +41 -0
- data/app/controllers/concerns/spree/api/v3/direct_uploads.rb +35 -0
- data/app/controllers/concerns/spree/api/v3/error_handler.rb +53 -11
- data/app/controllers/concerns/spree/api/v3/idempotent.rb +10 -4
- data/app/controllers/concerns/spree/api/v3/items_payload.rb +54 -0
- data/app/controllers/concerns/spree/api/v3/jwt_authentication.rb +23 -3
- data/app/controllers/concerns/spree/api/v3/key_store_context.rb +31 -0
- data/app/controllers/concerns/spree/api/v3/locale_and_currency.rb +3 -3
- data/app/controllers/concerns/spree/api/v3/order_lock.rb +22 -3
- data/app/controllers/concerns/spree/api/v3/orders/claim_actions.rb +112 -0
- data/app/controllers/concerns/spree/api/v3/orders/delivery_actions.rb +105 -0
- data/app/controllers/concerns/spree/api/v3/orders/exchange_actions.rb +117 -0
- data/app/controllers/concerns/spree/api/v3/orders/fulfillment_actions.rb +157 -0
- data/app/controllers/concerns/spree/api/v3/orders/post_sale_actions.rb +76 -0
- data/app/controllers/concerns/spree/api/v3/orders/return_actions.rb +116 -0
- data/app/controllers/concerns/spree/api/v3/orders/shipping_label_actions.rb +128 -0
- data/app/controllers/concerns/spree/api/v3/params_normalizer.rb +7 -4
- data/app/controllers/concerns/spree/api/v3/permission_serialization.rb +42 -0
- data/app/controllers/concerns/spree/api/v3/rate_limit_headers.rb +40 -6
- data/app/controllers/concerns/spree/api/v3/scoped_authorization.rb +80 -26
- data/app/controllers/concerns/spree/api/v3/seller/auth_cookies.rb +62 -0
- data/app/controllers/concerns/spree/api/v3/seller/seller_context.rb +127 -0
- data/app/controllers/concerns/spree/api/v3/seller_authentication.rb +40 -0
- data/app/controllers/concerns/spree/api/v3/storefront_access.rb +38 -0
- data/app/controllers/concerns/spree/api/v3/streams_shipping_label.rb +37 -0
- data/app/controllers/concerns/spree/api/v3/tax_identifier_validation.rb +41 -0
- data/app/controllers/spree/api/v3/admin/admin_users_controller.rb +11 -14
- data/app/controllers/spree/api/v3/admin/allowed_origins_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/api_keys_controller.rb +18 -9
- data/app/controllers/spree/api/v3/admin/auth_controller.rb +138 -22
- data/app/controllers/spree/api/v3/admin/base_controller.rb +2 -0
- data/app/controllers/spree/api/v3/admin/catalog_assignments_controller.rb +27 -0
- data/app/controllers/spree/api/v3/admin/catalogs/base_controller.rb +29 -0
- data/app/controllers/spree/api/v3/admin/catalogs/order_minimums_controller.rb +40 -0
- data/app/controllers/spree/api/v3/admin/catalogs/products_controller.rb +107 -0
- data/app/controllers/spree/api/v3/admin/catalogs/quantity_rules_controller.rb +75 -0
- data/app/controllers/spree/api/v3/admin/catalogs_controller.rb +191 -0
- data/app/controllers/spree/api/v3/admin/categories/products_controller.rb +28 -41
- data/app/controllers/spree/api/v3/admin/categories_controller.rb +16 -7
- data/app/controllers/spree/api/v3/admin/channels_controller.rb +50 -2
- data/app/controllers/spree/api/v3/admin/claim_reasons_controller.rb +25 -0
- data/app/controllers/spree/api/v3/admin/claims_controller.rb +31 -0
- data/app/controllers/spree/api/v3/admin/collection_rules_controller.rb +40 -0
- data/app/controllers/spree/api/v3/admin/collections/products_controller.rb +101 -0
- data/app/controllers/spree/api/v3/admin/collections_controller.rb +56 -0
- data/app/controllers/spree/api/v3/admin/commission_lines_controller.rb +39 -0
- data/app/controllers/spree/api/v3/admin/commission_rates_controller.rb +174 -0
- data/app/controllers/spree/api/v3/admin/companies/addresses_controller.rb +65 -0
- data/app/controllers/spree/api/v3/admin/companies/base_controller.rb +29 -0
- data/app/controllers/spree/api/v3/admin/companies/invitations_controller.rb +56 -0
- data/app/controllers/spree/api/v3/admin/companies/memberships_controller.rb +66 -0
- data/app/controllers/spree/api/v3/admin/companies/tax_exemption_certificates_controller.rb +137 -0
- data/app/controllers/spree/api/v3/admin/companies/tax_identifiers_controller.rb +46 -0
- data/app/controllers/spree/api/v3/admin/companies_controller.rb +59 -0
- data/app/controllers/spree/api/v3/admin/concerns/external_references.rb +166 -0
- data/app/controllers/spree/api/v3/admin/consent_records_controller.rb +31 -0
- data/app/controllers/spree/api/v3/admin/countries_controller.rb +12 -4
- data/app/controllers/spree/api/v3/admin/custom_field_definitions_controller.rb +19 -4
- data/app/controllers/spree/api/v3/admin/custom_fields_controller.rb +5 -5
- data/app/controllers/spree/api/v3/admin/customer_groups_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/customers/addresses_controller.rb +4 -4
- data/app/controllers/spree/api/v3/admin/customers/base_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/customers/store_credits_controller.rb +2 -3
- data/app/controllers/spree/api/v3/admin/customers/tax_identifiers_controller.rb +43 -0
- data/app/controllers/spree/api/v3/admin/customers_controller.rb +190 -11
- data/app/controllers/spree/api/v3/admin/dashboard_controller.rb +24 -20
- data/app/controllers/spree/api/v3/admin/data_requests_controller.rb +60 -0
- data/app/controllers/spree/api/v3/admin/delivery_method_rules_controller.rb +54 -0
- data/app/controllers/spree/api/v3/admin/delivery_methods/rules_controller.rb +114 -0
- data/app/controllers/spree/api/v3/admin/delivery_methods_controller.rb +243 -0
- data/app/controllers/spree/api/v3/admin/delivery_profiles/origin_groups_controller.rb +80 -0
- data/app/controllers/spree/api/v3/admin/delivery_profiles_controller.rb +107 -0
- data/app/controllers/spree/api/v3/admin/delivery_zones_controller.rb +116 -0
- data/app/controllers/spree/api/v3/admin/digital_links_controller.rb +48 -0
- data/app/controllers/spree/api/v3/admin/direct_uploads_controller.rb +17 -3
- data/app/controllers/spree/api/v3/admin/exchanges_controller.rb +31 -0
- data/app/controllers/spree/api/v3/admin/exports_controller.rb +2 -2
- data/app/controllers/spree/api/v3/admin/gift_card_batches_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/gift_cards_controller.rb +3 -2
- data/app/controllers/spree/api/v3/admin/imports_controller.rb +71 -8
- data/app/controllers/spree/api/v3/admin/integrations_controller.rb +67 -0
- data/app/controllers/spree/api/v3/admin/invitation_acceptances_controller.rb +5 -5
- data/app/controllers/spree/api/v3/admin/invitations_controller.rb +5 -1
- data/app/controllers/spree/api/v3/admin/locales_controller.rb +3 -1
- data/app/controllers/spree/api/v3/admin/markets_controller.rb +9 -5
- data/app/controllers/spree/api/v3/admin/me_controller.rb +4 -30
- data/app/controllers/spree/api/v3/admin/media_controller.rb +88 -38
- data/app/controllers/spree/api/v3/admin/media_library_controller.rb +156 -0
- data/app/controllers/spree/api/v3/admin/option_types_controller.rb +1 -0
- data/app/controllers/spree/api/v3/admin/order_cancellation_reasons_controller.rb +25 -0
- data/app/controllers/spree/api/v3/admin/order_groups_controller.rb +43 -0
- data/app/controllers/spree/api/v3/admin/order_routing_rules_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/orders/claims_controller.rb +56 -0
- data/app/controllers/spree/api/v3/admin/orders/deliveries_controller.rb +66 -0
- data/app/controllers/spree/api/v3/admin/orders/discount_codes_controller.rb +86 -0
- data/app/controllers/spree/api/v3/admin/orders/discounts_controller.rb +99 -0
- data/app/controllers/spree/api/v3/admin/orders/exchanges_controller.rb +62 -0
- data/app/controllers/spree/api/v3/admin/orders/fees_controller.rb +83 -0
- data/app/controllers/spree/api/v3/admin/orders/fulfillments_controller.rb +45 -67
- data/app/controllers/spree/api/v3/admin/orders/items_controller.rb +40 -22
- data/app/controllers/spree/api/v3/admin/orders/labels_controller.rb +75 -0
- data/app/controllers/spree/api/v3/admin/orders/payments_controller.rb +36 -18
- data/app/controllers/spree/api/v3/admin/orders/refunds_controller.rb +39 -18
- data/app/controllers/spree/api/v3/admin/orders/returns_controller.rb +70 -0
- data/app/controllers/spree/api/v3/admin/orders/store_credits_controller.rb +2 -2
- data/app/controllers/spree/api/v3/admin/orders/tax_identifiers_controller.rb +41 -0
- data/app/controllers/spree/api/v3/admin/orders/tax_lines_controller.rb +32 -0
- data/app/controllers/spree/api/v3/admin/orders_controller.rb +164 -33
- data/app/controllers/spree/api/v3/admin/package_types_controller.rb +39 -0
- data/app/controllers/spree/api/v3/admin/password_resets_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/payment_methods_controller.rb +15 -4
- data/app/controllers/spree/api/v3/admin/payout_providers_controller.rb +27 -0
- data/app/controllers/spree/api/v3/admin/permissions_controller.rb +30 -0
- data/app/controllers/spree/api/v3/admin/policies_controller.rb +42 -0
- data/app/controllers/spree/api/v3/admin/price_lists/products_controller.rb +93 -0
- data/app/controllers/spree/api/v3/admin/price_lists_controller.rb +43 -29
- data/app/controllers/spree/api/v3/admin/prices_controller.rb +41 -4
- data/app/controllers/spree/api/v3/admin/product_types_controller.rb +93 -0
- data/app/controllers/spree/api/v3/admin/products/digital_assets_controller.rb +148 -0
- data/app/controllers/spree/api/v3/admin/products/variants_controller.rb +24 -3
- data/app/controllers/spree/api/v3/admin/products_controller.rb +149 -33
- data/app/controllers/spree/api/v3/admin/promotion_actions_controller.rb +6 -2
- data/app/controllers/spree/api/v3/admin/promotion_rules_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/promotions_controller.rb +1 -5
- data/app/controllers/spree/api/v3/admin/purchase_orders/stock_receipts_controller.rb +32 -0
- data/app/controllers/spree/api/v3/admin/purchase_orders_controller.rb +161 -0
- data/app/controllers/spree/api/v3/admin/refund_reasons_controller.rb +25 -0
- data/app/controllers/spree/api/v3/admin/reporting/saved_reports_controller.rb +45 -0
- data/app/controllers/spree/api/v3/admin/reporting_controller.rb +95 -0
- data/app/controllers/spree/api/v3/admin/resource_controller.rb +27 -10
- data/app/controllers/spree/api/v3/admin/return_reasons_controller.rb +25 -0
- data/app/controllers/spree/api/v3/admin/returns_controller.rb +31 -0
- data/app/controllers/spree/api/v3/admin/roles_controller.rb +50 -6
- data/app/controllers/spree/api/v3/admin/seller_payouts_controller.rb +83 -0
- data/app/controllers/spree/api/v3/admin/seller_requirement_submissions_controller.rb +139 -0
- data/app/controllers/spree/api/v3/admin/seller_requirements_controller.rb +115 -0
- data/app/controllers/spree/api/v3/admin/seller_transfers_controller.rb +36 -0
- data/app/controllers/spree/api/v3/admin/sellers/balances_controller.rb +44 -0
- data/app/controllers/spree/api/v3/admin/sellers/invitations_controller.rb +77 -0
- data/app/controllers/spree/api/v3/admin/sellers/payouts_controller.rb +107 -0
- data/app/controllers/spree/api/v3/admin/sellers/team_controller.rb +64 -0
- data/app/controllers/spree/api/v3/admin/sellers_controller.rb +197 -0
- data/app/controllers/spree/api/v3/admin/setup_controller.rb +239 -0
- data/app/controllers/spree/api/v3/admin/stock_levels_controller.rb +172 -0
- data/app/controllers/spree/api/v3/admin/stock_locations_controller.rb +3 -2
- data/app/controllers/spree/api/v3/admin/stock_movements_controller.rb +37 -0
- data/app/controllers/spree/api/v3/admin/stock_reservations_controller.rb +1 -1
- data/app/controllers/spree/api/v3/admin/stock_transfers/stock_receipts_controller.rb +31 -0
- data/app/controllers/spree/api/v3/admin/stock_transfers_controller.rb +134 -38
- data/app/controllers/spree/api/v3/admin/store_controller.rb +66 -0
- data/app/controllers/spree/api/v3/admin/store_credits/events_controller.rb +47 -0
- data/app/controllers/spree/api/v3/admin/store_credits_controller.rb +87 -0
- data/app/controllers/spree/api/v3/admin/suppliers_controller.rb +30 -0
- data/app/controllers/spree/api/v3/admin/tags_controller.rb +2 -2
- data/app/controllers/spree/api/v3/admin/tax_categories_controller.rb +4 -0
- data/app/controllers/spree/api/v3/admin/tax_providers_controller.rb +25 -0
- data/app/controllers/spree/api/v3/admin/tax_rates_controller.rb +33 -0
- data/app/controllers/spree/api/v3/admin/tracking_carriers_controller.rb +33 -0
- data/app/controllers/spree/api/v3/admin/translatable_resources_controller.rb +37 -9
- data/app/controllers/spree/api/v3/admin/translations_controller.rb +10 -5
- data/app/controllers/spree/api/v3/admin/translations_coverage_controller.rb +150 -0
- data/app/controllers/spree/api/v3/admin/variants_controller.rb +11 -4
- data/app/controllers/spree/api/v3/admin/webhook_endpoints_controller.rb +1 -1
- data/app/controllers/spree/api/v3/base_controller.rb +74 -16
- data/app/controllers/spree/api/v3/resource_controller.rb +170 -39
- data/app/controllers/spree/api/v3/seller/auth_controller.rb +169 -0
- data/app/controllers/spree/api/v3/seller/balances_controller.rb +35 -0
- data/app/controllers/spree/api/v3/seller/base_controller.rb +25 -0
- data/app/controllers/spree/api/v3/seller/claim_reasons_controller.rb +20 -0
- data/app/controllers/spree/api/v3/seller/countries_controller.rb +38 -0
- data/app/controllers/spree/api/v3/seller/delivery_methods_controller.rb +265 -0
- data/app/controllers/spree/api/v3/seller/delivery_profiles_controller.rb +65 -0
- data/app/controllers/spree/api/v3/seller/delivery_zones_controller.rb +41 -0
- data/app/controllers/spree/api/v3/seller/direct_uploads_controller.rb +21 -0
- data/app/controllers/spree/api/v3/seller/exports_controller.rb +195 -0
- data/app/controllers/spree/api/v3/seller/import_rows_controller.rb +49 -0
- data/app/controllers/spree/api/v3/seller/imports_controller.rb +317 -0
- data/app/controllers/spree/api/v3/seller/invitation_acceptances_controller.rb +152 -0
- data/app/controllers/spree/api/v3/seller/invitations_controller.rb +71 -0
- data/app/controllers/spree/api/v3/seller/me_controller.rb +72 -0
- data/app/controllers/spree/api/v3/seller/onboarding_controller.rb +111 -0
- data/app/controllers/spree/api/v3/seller/order_cancellation_reasons_controller.rb +25 -0
- data/app/controllers/spree/api/v3/seller/orders/base_controller.rb +44 -0
- data/app/controllers/spree/api/v3/seller/orders/claims_controller.rb +45 -0
- data/app/controllers/spree/api/v3/seller/orders/deliveries_controller.rb +38 -0
- data/app/controllers/spree/api/v3/seller/orders/exchanges_controller.rb +50 -0
- data/app/controllers/spree/api/v3/seller/orders/fulfillments_controller.rb +79 -0
- data/app/controllers/spree/api/v3/seller/orders/labels_controller.rb +55 -0
- data/app/controllers/spree/api/v3/seller/orders/notes_controller.rb +82 -0
- data/app/controllers/spree/api/v3/seller/orders/returns_controller.rb +44 -0
- data/app/controllers/spree/api/v3/seller/orders_controller.rb +199 -0
- data/app/controllers/spree/api/v3/seller/package_types_controller.rb +100 -0
- data/app/controllers/spree/api/v3/seller/password_resets_controller.rb +155 -0
- data/app/controllers/spree/api/v3/seller/payouts_controller.rb +47 -0
- data/app/controllers/spree/api/v3/seller/policies_controller.rb +57 -0
- data/app/controllers/spree/api/v3/seller/product_types_controller.rb +35 -0
- data/app/controllers/spree/api/v3/seller/products_controller.rb +394 -0
- data/app/controllers/spree/api/v3/seller/profile_controller.rb +137 -0
- data/app/controllers/spree/api/v3/seller/reasons_controller.rb +45 -0
- data/app/controllers/spree/api/v3/seller/requirement_submissions_controller.rb +95 -0
- data/app/controllers/spree/api/v3/seller/resource_controller.rb +75 -0
- data/app/controllers/spree/api/v3/seller/return_reasons_controller.rb +20 -0
- data/app/controllers/spree/api/v3/seller/stock_locations_controller.rb +56 -0
- data/app/controllers/spree/api/v3/seller/tax_identifiers_controller.rb +48 -0
- data/app/controllers/spree/api/v3/seller/team_controller.rb +103 -0
- data/app/controllers/spree/api/v3/seller/tracking_carriers_controller.rb +35 -0
- data/app/controllers/spree/api/v3/seller/transfers_controller.rb +43 -0
- data/app/controllers/spree/api/v3/store/account/companies_controller.rb +42 -0
- data/app/controllers/spree/api/v3/store/auth_controller.rb +21 -34
- data/app/controllers/spree/api/v3/store/base_controller.rb +4 -0
- data/app/controllers/spree/api/v3/store/carts/discount_codes_controller.rb +24 -2
- data/app/controllers/spree/api/v3/store/carts/fulfillments_controller.rb +41 -15
- data/app/controllers/spree/api/v3/store/carts/items_controller.rb +53 -20
- data/app/controllers/spree/api/v3/store/carts/payment_sessions_controller.rb +36 -20
- data/app/controllers/spree/api/v3/store/carts/po_documents_controller.rb +111 -0
- data/app/controllers/spree/api/v3/store/carts/store_credits_controller.rb +2 -2
- data/app/controllers/spree/api/v3/store/carts/tax_identifiers_controller.rb +96 -0
- data/app/controllers/spree/api/v3/store/carts_controller.rb +57 -12
- data/app/controllers/spree/api/v3/store/categories_controller.rb +6 -3
- data/app/controllers/spree/api/v3/store/collections/products_controller.rb +59 -0
- data/app/controllers/spree/api/v3/store/collections_controller.rb +36 -0
- data/app/controllers/spree/api/v3/store/companies/addresses_controller.rb +81 -0
- data/app/controllers/spree/api/v3/store/companies/base_controller.rb +24 -0
- data/app/controllers/spree/api/v3/store/companies/invitations_controller.rb +50 -0
- data/app/controllers/spree/api/v3/store/companies/members_controller.rb +66 -0
- data/app/controllers/spree/api/v3/store/companies/orders_controller.rb +28 -0
- data/app/controllers/spree/api/v3/store/companies_controller.rb +47 -0
- data/app/controllers/spree/api/v3/store/company_invitations_controller.rb +90 -0
- data/app/controllers/spree/api/v3/store/countries_controller.rb +8 -6
- data/app/controllers/spree/api/v3/store/customer/addresses_controller.rb +3 -1
- data/app/controllers/spree/api/v3/store/customer/data_requests_controller.rb +78 -0
- data/app/controllers/spree/api/v3/store/customer/digital_links_controller.rb +52 -0
- data/app/controllers/spree/api/v3/store/customer/orders_controller.rb +6 -0
- data/app/controllers/spree/api/v3/store/customer/password_resets_controller.rb +7 -3
- data/app/controllers/spree/api/v3/store/customer/payment_setup_sessions_controller.rb +3 -3
- data/app/controllers/spree/api/v3/store/customer/store_credits_controller.rb +0 -3
- data/app/controllers/spree/api/v3/store/customer/tax_identifiers_controller.rb +91 -0
- data/app/controllers/spree/api/v3/store/customers_controller.rb +26 -31
- data/app/controllers/spree/api/v3/store/data_feeds_controller.rb +11 -0
- data/app/controllers/spree/api/v3/store/data_request_downloads_controller.rb +58 -0
- data/app/controllers/spree/api/v3/store/delivery_methods_controller.rb +108 -0
- data/app/controllers/spree/api/v3/store/digital_links_controller.rb +105 -0
- data/app/controllers/spree/api/v3/store/markets/countries_controller.rb +5 -9
- data/app/controllers/spree/api/v3/store/markets_controller.rb +4 -4
- data/app/controllers/spree/api/v3/store/newsletter_subscribers_controller.rb +8 -9
- data/app/controllers/spree/api/v3/store/orders/claims_controller.rb +94 -0
- data/app/controllers/spree/api/v3/store/orders/returns_controller.rb +116 -0
- data/app/controllers/spree/api/v3/store/orders/tax_identifiers_controller.rb +46 -0
- data/app/controllers/spree/api/v3/store/orders_controller.rb +12 -15
- data/app/controllers/spree/api/v3/store/products/filters_controller.rb +10 -3
- data/app/controllers/spree/api/v3/store/products_controller.rb +25 -6
- data/app/controllers/spree/api/v3/store/resource_controller.rb +2 -0
- data/app/controllers/spree/api/v3/store/sellers_controller.rb +43 -0
- data/app/controllers/spree/api/v3/store/wishlist_items_controller.rb +9 -6
- data/app/controllers/spree/api/v3/store/wishlists_controller.rb +3 -3
- data/app/controllers/spree/api/v3/webhooks/fulfillments_controller.rb +88 -0
- data/app/controllers/spree/api/v3/webhooks/payments_controller.rb +5 -2
- data/app/controllers/spree/api/v3/webhooks/payouts_controller.rb +61 -0
- data/app/models/spree/api/data_request_urls.rb +25 -0
- data/app/models/spree/api/digital_link_urls.rb +26 -0
- data/app/serializers/spree/api/v3/address_serializer.rb +17 -5
- data/app/serializers/spree/api/v3/admin/actor_serializer.rb +28 -0
- data/app/serializers/spree/api/v3/admin/address_serializer.rb +27 -4
- data/app/serializers/spree/api/v3/admin/admin_user_serializer.rb +13 -10
- data/app/serializers/spree/api/v3/admin/api_key_serializer.rb +15 -2
- data/app/serializers/spree/api/v3/admin/applied_promotion_serializer.rb +15 -0
- data/app/serializers/spree/api/v3/admin/cart_serializer.rb +34 -0
- data/app/serializers/spree/api/v3/admin/catalog_assignment_serializer.rb +32 -0
- data/app/serializers/spree/api/v3/admin/catalog_order_minimum_serializer.rb +23 -0
- data/app/serializers/spree/api/v3/admin/catalog_price_serializer.rb +48 -0
- data/app/serializers/spree/api/v3/admin/catalog_price_tier_serializer.rb +23 -0
- data/app/serializers/spree/api/v3/admin/catalog_product_serializer.rb +57 -0
- data/app/serializers/spree/api/v3/admin/catalog_product_term_serializer.rb +38 -0
- data/app/serializers/spree/api/v3/admin/catalog_quantity_rule_serializer.rb +37 -0
- data/app/serializers/spree/api/v3/admin/catalog_serializer.rb +46 -0
- data/app/serializers/spree/api/v3/admin/category_serializer.rb +3 -2
- data/app/serializers/spree/api/v3/admin/channel_serializer.rb +15 -1
- data/app/serializers/spree/api/v3/admin/claim_line_item_serializer.rb +16 -0
- data/app/serializers/spree/api/v3/admin/claim_reason_serializer.rb +21 -0
- data/app/serializers/spree/api/v3/admin/claim_serializer.rb +28 -0
- data/app/serializers/spree/api/v3/admin/collection_rule_serializer.rb +22 -0
- data/app/serializers/spree/api/v3/admin/collection_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/admin/commission_line_serializer.rb +67 -0
- data/app/serializers/spree/api/v3/admin/commission_rate_serializer.rb +69 -0
- data/app/serializers/spree/api/v3/admin/commission_rule_serializer.rb +61 -0
- data/app/serializers/spree/api/v3/admin/company_invitation_serializer.rb +15 -0
- data/app/serializers/spree/api/v3/admin/company_membership_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/admin/company_serializer.rb +37 -0
- data/app/serializers/spree/api/v3/admin/concerns/external_references_attribute.rb +33 -0
- data/app/serializers/spree/api/v3/admin/consent_record_serializer.rb +28 -0
- data/app/serializers/spree/api/v3/admin/country_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/admin/credit_card_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/admin/custom_field_definition_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/admin/custom_field_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/admin/customer_serializer.rb +23 -22
- data/app/serializers/spree/api/v3/admin/dashboard_counter_serializer.rb +24 -0
- data/app/serializers/spree/api/v3/admin/data_request_serializer.rb +36 -0
- data/app/serializers/spree/api/v3/admin/delivery_method_rule_serializer.rb +32 -0
- data/app/serializers/spree/api/v3/admin/delivery_method_serializer.rb +66 -1
- data/app/serializers/spree/api/v3/admin/delivery_method_service_serializer.rb +15 -0
- data/app/serializers/spree/api/v3/admin/delivery_origin_group_serializer.rb +34 -0
- data/app/serializers/spree/api/v3/admin/delivery_profile_serializer.rb +65 -0
- data/app/serializers/spree/api/v3/admin/delivery_rate_serializer.rb +10 -1
- data/app/serializers/spree/api/v3/admin/delivery_serializer.rb +20 -0
- data/app/serializers/spree/api/v3/admin/delivery_zone_member_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/admin/delivery_zone_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/admin/digital_asset_serializer.rb +59 -0
- data/app/serializers/spree/api/v3/admin/discount_serializer.rb +3 -4
- data/app/serializers/spree/api/v3/admin/exchange_line_item_serializer.rb +16 -0
- data/app/serializers/spree/api/v3/admin/exchange_serializer.rb +34 -0
- data/app/serializers/spree/api/v3/admin/export_serializer.rb +20 -1
- data/app/serializers/spree/api/v3/admin/fee_serializer.rb +14 -0
- data/app/serializers/spree/api/v3/admin/freight_summary_line_serializer.rb +46 -0
- data/app/serializers/spree/api/v3/admin/freight_summary_serializer.rb +16 -0
- data/app/serializers/spree/api/v3/admin/fulfillment_item_serializer.rb +39 -0
- data/app/serializers/spree/api/v3/admin/fulfillment_serializer.rb +31 -9
- data/app/serializers/spree/api/v3/admin/gift_card_serializer.rb +2 -3
- data/app/serializers/spree/api/v3/admin/import_serializer.rb +15 -2
- data/app/serializers/spree/api/v3/admin/integration_serializer.rb +32 -0
- data/app/serializers/spree/api/v3/admin/invitation_serializer.rb +4 -4
- data/app/serializers/spree/api/v3/admin/line_item_serializer.rb +46 -5
- data/app/serializers/spree/api/v3/admin/market_serializer.rb +5 -1
- data/app/serializers/spree/api/v3/admin/media_serializer.rb +50 -2
- data/app/serializers/spree/api/v3/admin/membership_product_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/admin/order_cancellation_reason_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/admin/order_group_serializer.rb +50 -0
- data/app/serializers/spree/api/v3/admin/order_routing_rule_serializer.rb +2 -6
- data/app/serializers/spree/api/v3/admin/order_serializer.rb +126 -31
- data/app/serializers/spree/api/v3/admin/package_type_serializer.rb +53 -0
- data/app/serializers/spree/api/v3/admin/payment_method_serializer.rb +8 -2
- data/app/serializers/spree/api/v3/admin/payment_serializer.rb +6 -0
- data/app/serializers/spree/api/v3/admin/payment_split_serializer.rb +41 -0
- data/app/serializers/spree/api/v3/admin/permission_serializer.rb +39 -0
- data/app/serializers/spree/api/v3/admin/policy_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/admin/price_adjustment_tier_serializer.rb +22 -0
- data/app/serializers/spree/api/v3/admin/price_list_product_serializer.rb +32 -0
- data/app/serializers/spree/api/v3/admin/price_list_serializer.rb +20 -8
- data/app/serializers/spree/api/v3/admin/price_rule_serializer.rb +2 -12
- data/app/serializers/spree/api/v3/admin/price_serializer.rb +3 -0
- data/app/serializers/spree/api/v3/admin/product_serializer.rb +54 -8
- data/app/serializers/spree/api/v3/admin/product_submission_serializer.rb +39 -0
- data/app/serializers/spree/api/v3/admin/product_type_custom_field_definition_serializer.rb +44 -0
- data/app/serializers/spree/api/v3/admin/product_type_serializer.rb +34 -0
- data/app/serializers/spree/api/v3/admin/promotion_action_serializer.rb +6 -12
- data/app/serializers/spree/api/v3/admin/promotion_rule_serializer.rb +17 -15
- data/app/serializers/spree/api/v3/admin/purchase_order_item_serializer.rb +80 -0
- data/app/serializers/spree/api/v3/admin/purchase_order_serializer.rb +94 -0
- data/app/serializers/spree/api/v3/admin/refund_reason_serializer.rb +27 -0
- data/app/serializers/spree/api/v3/admin/refund_serializer.rb +6 -5
- data/app/serializers/spree/api/v3/admin/reporting_result_serializer.rb +72 -0
- data/app/serializers/spree/api/v3/admin/return_line_item_serializer.rb +16 -0
- data/app/serializers/spree/api/v3/admin/return_reason_serializer.rb +21 -0
- data/app/serializers/spree/api/v3/admin/return_serializer.rb +58 -0
- data/app/serializers/spree/api/v3/admin/role_serializer.rb +24 -6
- data/app/serializers/spree/api/v3/admin/saved_report_serializer.rb +32 -0
- data/app/serializers/spree/api/v3/admin/seller_balance_serializer.rb +37 -0
- data/app/serializers/spree/api/v3/admin/seller_payout_serializer.rb +46 -0
- data/app/serializers/spree/api/v3/admin/seller_requirement_serializer.rb +68 -0
- data/app/serializers/spree/api/v3/admin/seller_requirement_status_serializer.rb +48 -0
- data/app/serializers/spree/api/v3/admin/seller_requirement_submission_serializer.rb +57 -0
- data/app/serializers/spree/api/v3/admin/seller_serializer.rb +92 -0
- data/app/serializers/spree/api/v3/admin/seller_team_member_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/admin/seller_transfer_serializer.rb +53 -0
- data/app/serializers/spree/api/v3/admin/shipping_label_serializer.rb +82 -0
- data/app/serializers/spree/api/v3/admin/state_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/admin/stock_level_serializer.rb +65 -0
- data/app/serializers/spree/api/v3/admin/stock_location_serializer.rb +20 -4
- data/app/serializers/spree/api/v3/admin/stock_movement_serializer.rb +116 -0
- data/app/serializers/spree/api/v3/admin/stock_receipt_item_serializer.rb +57 -0
- data/app/serializers/spree/api/v3/admin/stock_receipt_serializer.rb +48 -0
- data/app/serializers/spree/api/v3/admin/stock_reservation_serializer.rb +5 -5
- data/app/serializers/spree/api/v3/admin/stock_transfer_item_serializer.rb +57 -0
- data/app/serializers/spree/api/v3/admin/stock_transfer_serializer.rb +36 -16
- data/app/serializers/spree/api/v3/admin/store_credit_event_serializer.rb +32 -0
- data/app/serializers/spree/api/v3/admin/store_credit_serializer.rb +42 -7
- data/app/serializers/spree/api/v3/admin/store_serializer.rb +65 -1
- data/app/serializers/spree/api/v3/admin/supplier_serializer.rb +39 -0
- data/app/serializers/spree/api/v3/admin/tax_exemption_certificate_serializer.rb +67 -0
- data/app/serializers/spree/api/v3/admin/tax_identifier_serializer.rb +43 -0
- data/app/serializers/spree/api/v3/admin/tax_line_serializer.rb +21 -0
- data/app/serializers/spree/api/v3/admin/tax_rate_serializer.rb +49 -0
- data/app/serializers/spree/api/v3/admin/variant_serializer.rb +49 -8
- data/app/serializers/spree/api/v3/applied_promotion_serializer.rb +23 -0
- data/app/serializers/spree/api/v3/base_serializer.rb +61 -2
- data/app/serializers/spree/api/v3/cart_serializer.rb +90 -12
- data/app/serializers/spree/api/v3/category_serializer.rb +3 -3
- data/app/serializers/spree/api/v3/claim_line_item_serializer.rb +50 -0
- data/app/serializers/spree/api/v3/claim_reason_serializer.rb +20 -0
- data/app/serializers/spree/api/v3/claim_serializer.rb +62 -0
- data/app/serializers/spree/api/v3/collection_serializer.rb +41 -0
- data/app/serializers/spree/api/v3/company_invitation_serializer.rb +28 -0
- data/app/serializers/spree/api/v3/company_membership_serializer.rb +28 -0
- data/app/serializers/spree/api/v3/company_serializer.rb +33 -0
- data/app/serializers/spree/api/v3/custom_field_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/customer_serializer.rb +9 -1
- data/app/serializers/spree/api/v3/data_request_event_serializer.rb +30 -0
- data/app/serializers/spree/api/v3/data_request_serializer.rb +40 -0
- data/app/serializers/spree/api/v3/delivery_method_serializer.rb +12 -2
- data/app/serializers/spree/api/v3/delivery_rate_serializer.rb +34 -17
- data/app/serializers/spree/api/v3/delivery_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/delivery_zone_member_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/delivery_zone_serializer.rb +13 -0
- data/app/serializers/spree/api/v3/digital_asset_serializer.rb +23 -0
- data/app/serializers/spree/api/v3/digital_link_serializer.rb +6 -2
- data/app/serializers/spree/api/v3/discount_serializer.rb +21 -7
- data/app/serializers/spree/api/v3/exchange_line_item_serializer.rb +53 -0
- data/app/serializers/spree/api/v3/exchange_serializer.rb +61 -0
- data/app/serializers/spree/api/v3/fee_serializer.rb +27 -0
- data/app/serializers/spree/api/v3/freight_summary_serializer.rb +38 -0
- data/app/serializers/spree/api/v3/fulfillment_serializer.rb +28 -15
- data/app/serializers/spree/api/v3/gift_card_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/import_row_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/import_serializer.rb +18 -4
- data/app/serializers/spree/api/v3/invitation_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/line_item_serializer.rb +18 -1
- data/app/serializers/spree/api/v3/market_serializer.rb +2 -2
- data/app/serializers/spree/api/v3/{asset_serializer.rb → media_event_serializer.rb} +4 -4
- data/app/serializers/spree/api/v3/media_serializer.rb +48 -7
- data/app/serializers/spree/api/v3/newsletter_subscriber_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/option_type_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/order_group_serializer.rb +60 -0
- data/app/serializers/spree/api/v3/order_serializer.rb +58 -6
- data/app/serializers/spree/api/v3/payment_method_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/payment_serializer.rb +2 -6
- data/app/serializers/spree/api/v3/payment_session_serializer.rb +10 -3
- data/app/serializers/spree/api/v3/payment_setup_session_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/policy_serializer.rb +7 -2
- data/app/serializers/spree/api/v3/product_filter_option_serializer.rb +1 -1
- data/app/serializers/spree/api/v3/product_serializer.rb +42 -10
- data/app/serializers/spree/api/v3/product_type_serializer.rb +17 -0
- data/app/serializers/spree/api/v3/purchase_order_event_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/refund_serializer.rb +9 -3
- data/app/serializers/spree/api/v3/return_line_item_serializer.rb +42 -0
- data/app/serializers/spree/api/v3/return_reason_serializer.rb +20 -0
- data/app/serializers/spree/api/v3/return_serializer.rb +62 -0
- data/app/serializers/spree/api/v3/seller/balance_serializer.rb +35 -0
- data/app/serializers/spree/api/v3/seller/claim_line_item_serializer.rb +21 -0
- data/app/serializers/spree/api/v3/seller/claim_serializer.rb +25 -0
- data/app/serializers/spree/api/v3/seller/delivery_method_rule_serializer.rb +32 -0
- data/app/serializers/spree/api/v3/seller/delivery_method_serializer.rb +59 -0
- data/app/serializers/spree/api/v3/seller/delivery_profile_serializer.rb +26 -0
- data/app/serializers/spree/api/v3/seller/delivery_rate_serializer.rb +35 -0
- data/app/serializers/spree/api/v3/seller/delivery_serializer.rb +17 -0
- data/app/serializers/spree/api/v3/seller/delivery_zone_serializer.rb +26 -0
- data/app/serializers/spree/api/v3/seller/exchange_line_item_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/seller/exchange_serializer.rb +30 -0
- data/app/serializers/spree/api/v3/seller/export_serializer.rb +44 -0
- data/app/serializers/spree/api/v3/seller/fulfillment_item_serializer.rb +43 -0
- data/app/serializers/spree/api/v3/seller/fulfillment_serializer.rb +76 -0
- data/app/serializers/spree/api/v3/seller/import_mapping_serializer.rb +20 -0
- data/app/serializers/spree/api/v3/seller/import_row_serializer.rb +17 -0
- data/app/serializers/spree/api/v3/seller/import_serializer.rb +77 -0
- data/app/serializers/spree/api/v3/seller/invitation_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/seller/media_serializer.rb +26 -0
- data/app/serializers/spree/api/v3/seller/order_line_item_serializer.rb +44 -0
- data/app/serializers/spree/api/v3/seller/order_serializer.rb +119 -0
- data/app/serializers/spree/api/v3/seller/package_type_serializer.rb +52 -0
- data/app/serializers/spree/api/v3/seller/payment_split_serializer.rb +34 -0
- data/app/serializers/spree/api/v3/seller/payout_serializer.rb +36 -0
- data/app/serializers/spree/api/v3/seller/policy_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/seller/product_serializer.rb +60 -0
- data/app/serializers/spree/api/v3/seller/product_submission_serializer.rb +30 -0
- data/app/serializers/spree/api/v3/seller/product_type_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/seller/profile_serializer.rb +77 -0
- data/app/serializers/spree/api/v3/seller/reason_serializer.rb +24 -0
- data/app/serializers/spree/api/v3/seller/requirement_custom_field_serializer.rb +36 -0
- data/app/serializers/spree/api/v3/seller/requirement_status_serializer.rb +62 -0
- data/app/serializers/spree/api/v3/seller/requirement_submission_serializer.rb +33 -0
- data/app/serializers/spree/api/v3/seller/return_line_item_serializer.rb +24 -0
- data/app/serializers/spree/api/v3/seller/return_serializer.rb +51 -0
- data/app/serializers/spree/api/v3/seller/shipping_label_serializer.rb +23 -0
- data/app/serializers/spree/api/v3/seller/stock_level_serializer.rb +27 -0
- data/app/serializers/spree/api/v3/seller/stock_location_serializer.rb +17 -0
- data/app/serializers/spree/api/v3/seller/tax_identifier_serializer.rb +15 -0
- data/app/serializers/spree/api/v3/seller/team_member_serializer.rb +22 -0
- data/app/serializers/spree/api/v3/seller/transfer_serializer.rb +49 -0
- data/app/serializers/spree/api/v3/seller/variant_serializer.rb +71 -0
- data/app/serializers/spree/api/v3/seller_serializer.rb +50 -0
- data/app/serializers/spree/api/v3/shipping_label_event_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/{stock_item_serializer.rb → stock_level_serializer.rb} +5 -5
- data/app/serializers/spree/api/v3/stock_location_serializer.rb +11 -7
- data/app/serializers/spree/api/v3/stock_movement_serializer.rb +8 -15
- data/app/serializers/spree/api/v3/stock_receipt_event_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/stock_transfer_serializer.rb +6 -6
- data/app/serializers/spree/api/v3/store_credit_event_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/supplier_event_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/tax_identifier_serializer.rb +15 -0
- data/app/serializers/spree/api/v3/tax_line_serializer.rb +37 -0
- data/app/serializers/spree/api/v3/variant_serializer.rb +52 -2
- data/app/serializers/spree/api/v3/wishlist_item_serializer.rb +6 -6
- data/app/serializers/spree/api/v3/wishlist_serializer.rb +1 -1
- data/app/services/spree/api/v3/filters_aggregator.rb +14 -12
- data/app/services/spree/webhooks/deliver_webhook.rb +62 -26
- data/app/subscribers/spree/webhook_event_subscriber.rb +9 -5
- data/config/brakeman.ignore +1 -1
- data/config/initializers/typelizer.rb +51 -4
- data/config/locales/en.yml +5 -0
- data/config/routes.rb +730 -22
- data/lib/spree/api/configuration.rb +19 -19
- data/lib/spree/api/dependencies.rb +174 -227
- data/lib/spree/api/engine.rb +6 -0
- data/lib/spree/api/openapi/schema_helper.rb +179 -13
- data/lib/spree/api/testing_support/v3/base.rb +45 -15
- data/lib/spree/api.rb +10 -4
- data/lib/typelizer/open_enums.rb +35 -0
- metadata +342 -27
- data/app/controllers/spree/api/v3/admin/orders/adjustments_controller.rb +0 -25
- data/app/controllers/spree/api/v3/admin/stock_items_controller.rb +0 -42
- data/app/controllers/spree/api/v3/admin/store_credit_categories_controller.rb +0 -21
- data/app/controllers/spree/api/v3/store/digitals_controller.rb +0 -38
- data/app/serializers/spree/api/v3/admin/adjustment_serializer.rb +0 -24
- data/app/serializers/spree/api/v3/admin/dashboard_analytics_serializer.rb +0 -143
- data/app/serializers/spree/api/v3/admin/reimbursement_serializer.rb +0 -15
- data/app/serializers/spree/api/v3/admin/return_authorization_serializer.rb +0 -19
- data/app/serializers/spree/api/v3/admin/stock_item_serializer.rb +0 -34
- data/app/serializers/spree/api/v3/admin/store_credit_category_serializer.rb +0 -19
- data/app/serializers/spree/api/v3/customer_return_serializer.rb +0 -17
- data/app/serializers/spree/api/v3/digital_serializer.rb +0 -17
- data/app/serializers/spree/api/v3/reimbursement_serializer.rb +0 -27
- data/app/serializers/spree/api/v3/report_serializer.rb +0 -34
- data/app/serializers/spree/api/v3/return_authorization_serializer.rb +0 -31
- data/app/serializers/spree/api/v3/return_item_serializer.rb +0 -53
- data/app/serializers/spree/api/v3/shipping_category_serializer.rb +0 -11
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
# The buyer's own tax registration. Deliberately just the kind and the
|
|
5
|
+
# number: the validation verdict is the platform's bookkeeping, and showing
|
|
6
|
+
# a customer that their number came back unverified invites support
|
|
7
|
+
# tickets about a check they cannot influence.
|
|
8
|
+
class TaxIdentifierSerializer < BaseSerializer
|
|
9
|
+
typelize kind: [:string, comment: 'Tax identifier kind, keyed to a registered validator. Built-in: eu_vat. Extensions may register more.'], value: :string
|
|
10
|
+
|
|
11
|
+
attributes :kind, :value
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
# A single tax charge (typed row) on a line item, fulfillment or fee.
|
|
5
|
+
class TaxLineSerializer < BaseSerializer
|
|
6
|
+
typelize label: :string, rate: :string, included: :boolean,
|
|
7
|
+
amount: [:string, nullable: true], display_amount: [:string, nullable: true],
|
|
8
|
+
tax_rate_id: [:string, nullable: true], line_item_id: [:string, nullable: true],
|
|
9
|
+
fulfillment_id: [:string, nullable: true], fee_id: [:string, nullable: true]
|
|
10
|
+
|
|
11
|
+
attributes :label, :included
|
|
12
|
+
|
|
13
|
+
attribute :rate do |record|
|
|
14
|
+
record.rate&.to_s
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
attribute :tax_rate_id do |record|
|
|
18
|
+
record.tax_rate&.prefixed_id
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
attribute :line_item_id do |record|
|
|
22
|
+
record.line_item&.prefixed_id
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
attribute :fulfillment_id do |record|
|
|
26
|
+
record.fulfillment&.prefixed_id
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
attribute :fee_id do |record|
|
|
30
|
+
record.fee&.prefixed_id
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
money_attributes :amount, :display_amount
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -10,8 +10,12 @@ module Spree
|
|
|
10
10
|
purchasable: :boolean, in_stock: :boolean, backorderable: :boolean, preorder: :boolean,
|
|
11
11
|
preorder_ships_at: [:string, nullable: true],
|
|
12
12
|
weight: [:number, nullable: true], height: [:number, nullable: true], width: [:number, nullable: true], depth: [:number, nullable: true],
|
|
13
|
+
weight_unit: [:string, enum: Spree::Variant::WEIGHT_UNITS], dimensions_unit: [:string, enum: Spree::Variant::DIMENSION_UNITS],
|
|
13
14
|
price: 'Price',
|
|
14
|
-
original_price: ['Price', nullable: true]
|
|
15
|
+
original_price: ['Price', nullable: true],
|
|
16
|
+
minimum_order_quantity: :number, order_multiple: :number,
|
|
17
|
+
purchase_unit: [:string, enum: Spree::Variant::PURCHASE_UNITS], units_per_carton: ['number | null'],
|
|
18
|
+
seller_id: [:string, nullable: true]
|
|
15
19
|
|
|
16
20
|
attribute :product_id do |variant|
|
|
17
21
|
variant.product&.prefixed_id
|
|
@@ -62,6 +66,37 @@ module Spree
|
|
|
62
66
|
variant.depth&.to_f
|
|
63
67
|
end
|
|
64
68
|
|
|
69
|
+
# Resolved, not the raw columns: a variant that states no unit of its
|
|
70
|
+
# own is measured in the store's, so the numbers above are meaningless
|
|
71
|
+
# without this. Always present for the same reason the quantity rules
|
|
72
|
+
# below are — a caller should not have to fetch the store to read a
|
|
73
|
+
# weight.
|
|
74
|
+
attribute :weight_unit, &:weight_unit
|
|
75
|
+
|
|
76
|
+
attribute :dimensions_unit, &:dimensions_unit
|
|
77
|
+
|
|
78
|
+
# The buyer's RESOLVED rules — their catalog terms over the variant's
|
|
79
|
+
# base — so a storefront draws the right stepper without knowing
|
|
80
|
+
# which of the two answered. Always present: an unrestricted variant
|
|
81
|
+
# reads 1 and 1, which is a valid stepper rather than a special case.
|
|
82
|
+
attribute :minimum_order_quantity do |variant|
|
|
83
|
+
quantity_rule_for(variant).minimum
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
attribute :order_multiple do |variant|
|
|
87
|
+
quantity_rule_for(variant).multiple
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# What the buyer is quoted in. Stored quantities stay units at every
|
|
91
|
+
# level; this only says how to present them.
|
|
92
|
+
attribute :purchase_unit do |variant|
|
|
93
|
+
variant.purchase_unit.presence || 'unit'
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
attribute :units_per_carton do |variant|
|
|
97
|
+
variant.units_per_carton
|
|
98
|
+
end
|
|
99
|
+
|
|
65
100
|
# Price object - calculated price with price list resolution
|
|
66
101
|
attribute :price do |variant|
|
|
67
102
|
price = price_for(variant)
|
|
@@ -79,6 +114,21 @@ module Spree
|
|
|
79
114
|
end
|
|
80
115
|
end
|
|
81
116
|
|
|
117
|
+
# Who sells this variant — one answer, resolved on the model, so a
|
|
118
|
+
# storefront never learns whether it came from the product (an owned
|
|
119
|
+
# listing) or the row itself (a master shared by several sellers). Nil
|
|
120
|
+
# is first-party. Shoppers comparing offers on one page group by this,
|
|
121
|
+
# so it is a plain attribute rather than an expand.
|
|
122
|
+
attribute :seller_id do |variant|
|
|
123
|
+
variant.resolved_seller&.prefixed_id
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
one :seller,
|
|
127
|
+
resource: proc { Spree.api.seller_serializer },
|
|
128
|
+
if: proc { expand?('seller') } do |variant|
|
|
129
|
+
variant.resolved_seller
|
|
130
|
+
end
|
|
131
|
+
|
|
82
132
|
# Conditional associations
|
|
83
133
|
one :primary_media,
|
|
84
134
|
resource: proc { Spree.api.media_serializer },
|
|
@@ -91,7 +141,7 @@ module Spree
|
|
|
91
141
|
|
|
92
142
|
many :option_values, resource: proc { Spree.api.option_value_serializer }
|
|
93
143
|
|
|
94
|
-
many :
|
|
144
|
+
many :storefront_custom_fields,
|
|
95
145
|
key: :custom_fields,
|
|
96
146
|
resource: proc { Spree.api.custom_field_serializer },
|
|
97
147
|
if: proc { expand?('custom_fields') }
|
|
@@ -5,16 +5,16 @@ module Spree
|
|
|
5
5
|
typelize variant_id: :string, wishlist_id: :string, quantity: :number,
|
|
6
6
|
product_id: :string
|
|
7
7
|
|
|
8
|
-
attribute :variant_id do |
|
|
9
|
-
|
|
8
|
+
attribute :variant_id do |wishlist_item|
|
|
9
|
+
wishlist_item.variant&.prefixed_id
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
-
attribute :product_id do |
|
|
13
|
-
|
|
12
|
+
attribute :product_id do |wishlist_item|
|
|
13
|
+
wishlist_item.product&.prefixed_id
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
-
attribute :wishlist_id do |
|
|
17
|
-
|
|
16
|
+
attribute :wishlist_id do |wishlist_item|
|
|
17
|
+
wishlist_item.wishlist&.prefixed_id
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
attributes :quantity
|
|
@@ -4,13 +4,15 @@ module Spree
|
|
|
4
4
|
class FiltersAggregator
|
|
5
5
|
# @param scope [ActiveRecord::Relation] Base product scope (fully filtered, including option values)
|
|
6
6
|
# @param currency [String] Currency for price range
|
|
7
|
-
# @param category [Spree::Category, nil] Optional category
|
|
7
|
+
# @param category [Spree::Category, nil] Optional category — drives the child-category facet only (NOT default_sort)
|
|
8
|
+
# @param sort_order [String, nil] Optional grouping sort_order (space format, e.g. a collection's 'price asc') that drives default_sort
|
|
8
9
|
# @param option_value_ids [Array<String>] Currently selected option value prefixed IDs (for disjunctive facet counts)
|
|
9
10
|
# @param scope_before_options [ActiveRecord::Relation] Scope before option value filters (for disjunctive counts)
|
|
10
|
-
def initialize(scope:, currency:, category: nil, option_value_ids: [], scope_before_options: nil)
|
|
11
|
+
def initialize(scope:, currency:, category: nil, sort_order: nil, option_value_ids: [], scope_before_options: nil)
|
|
11
12
|
@scope = scope
|
|
12
13
|
@currency = currency
|
|
13
14
|
@category = category
|
|
15
|
+
@sort_order = sort_order
|
|
14
16
|
@option_value_ids = option_value_ids
|
|
15
17
|
@scope_before_options = scope_before_options || scope
|
|
16
18
|
end
|
|
@@ -19,7 +21,7 @@ module Spree
|
|
|
19
21
|
{
|
|
20
22
|
filters: build_filters,
|
|
21
23
|
sort_options: sort_options,
|
|
22
|
-
default_sort: to_api_sort(@
|
|
24
|
+
default_sort: to_api_sort(@sort_order || 'manual'),
|
|
23
25
|
total_count: @scope.distinct.count
|
|
24
26
|
}
|
|
25
27
|
end
|
|
@@ -36,7 +38,7 @@ module Spree
|
|
|
36
38
|
end
|
|
37
39
|
|
|
38
40
|
def sort_options
|
|
39
|
-
Spree::
|
|
41
|
+
Spree::Collection::SORT_ORDERS.map { |id| { id: to_api_sort(id), label: nil } }
|
|
40
42
|
end
|
|
41
43
|
|
|
42
44
|
# Converts internal sort format ('price asc') to API format ('price', '-price')
|
|
@@ -93,7 +95,7 @@ module Spree
|
|
|
93
95
|
Spree::OptionValue
|
|
94
96
|
.where(option_type_id: type_ids)
|
|
95
97
|
.order(:position)
|
|
96
|
-
.pluck(:id, :option_type_id, :name, :
|
|
98
|
+
.pluck(:id, :option_type_id, :name, :label, :position, :color_code)
|
|
97
99
|
end
|
|
98
100
|
return [] if ov_rows.empty?
|
|
99
101
|
|
|
@@ -143,15 +145,15 @@ module Spree
|
|
|
143
145
|
.count("#{var_table}.product_id")
|
|
144
146
|
end
|
|
145
147
|
|
|
146
|
-
# Load translated
|
|
147
|
-
# Returns { option_value_id =>
|
|
148
|
+
# Load translated labels for option values.
|
|
149
|
+
# Returns { option_value_id => translated_label } or empty hash when using the content locale.
|
|
148
150
|
def load_option_value_translations(ov_ids)
|
|
149
151
|
locale = Spree::Current.locale || I18n.locale.to_s
|
|
150
152
|
return {} if locale.to_s == Spree::Current.content_locale
|
|
151
153
|
|
|
152
154
|
Spree::OptionValue::Translation
|
|
153
155
|
.where(spree_option_value_id: ov_ids, locale: locale)
|
|
154
|
-
.pluck(:spree_option_value_id, :
|
|
156
|
+
.pluck(:spree_option_value_id, :label)
|
|
155
157
|
.to_h
|
|
156
158
|
end
|
|
157
159
|
|
|
@@ -163,17 +165,17 @@ module Spree
|
|
|
163
165
|
rows = ov_rows_by_type[option_type.id]
|
|
164
166
|
next if rows.blank?
|
|
165
167
|
|
|
166
|
-
# rows: [id, option_type_id, name,
|
|
167
|
-
options = rows.filter_map do |id, _, name,
|
|
168
|
+
# rows: [id, option_type_id, name, label, position, color_code]
|
|
169
|
+
options = rows.filter_map do |id, _, name, label, position, color_code|
|
|
168
170
|
count = counts[id] || 0
|
|
169
171
|
next if count.zero?
|
|
170
172
|
|
|
171
|
-
|
|
173
|
+
display_label = ov_translations[id] || label
|
|
172
174
|
|
|
173
175
|
{
|
|
174
176
|
id: encode_prefixed_id(:optval, id),
|
|
175
177
|
name: name,
|
|
176
|
-
label:
|
|
178
|
+
label: display_label,
|
|
177
179
|
position: position,
|
|
178
180
|
color_code: color_code,
|
|
179
181
|
image_url: image_urls[id],
|
|
@@ -12,38 +12,66 @@ module Spree
|
|
|
12
12
|
new(delivery: delivery, secret_key: secret_key).call
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
+
# Callables invoked with (headers, delivery) before every webhook POST —
|
|
16
|
+
# merge into the hash to add outbound headers (e.g. W3C trace context
|
|
17
|
+
# propagation). Registrations live on a reloadable class: register from
|
|
18
|
+
# a `config.to_prepare` block so they survive code reloads.
|
|
19
|
+
#
|
|
20
|
+
# @return [Array<#call>] the mutable decorator list
|
|
21
|
+
def self.header_decorators
|
|
22
|
+
@header_decorators ||= []
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# @param delivery [Spree::WebhookDelivery] the pending delivery to send
|
|
26
|
+
# @param secret_key [String] endpoint secret used to sign the payload
|
|
15
27
|
def initialize(delivery:, secret_key:)
|
|
16
28
|
@delivery = delivery
|
|
17
29
|
@secret_key = secret_key
|
|
18
30
|
end
|
|
19
31
|
|
|
32
|
+
# Sends the webhook and records the outcome on the delivery. Transport
|
|
33
|
+
# failures are captured on the record rather than raised, so a broken
|
|
34
|
+
# endpoint never breaks the caller.
|
|
35
|
+
#
|
|
36
|
+
# @return [Spree::WebhookDelivery] the completed delivery
|
|
20
37
|
def call
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
38
|
+
ActiveSupport::Notifications.instrument(
|
|
39
|
+
'deliver.spree_webhooks',
|
|
40
|
+
event_name: @delivery.event_name,
|
|
41
|
+
url_host: url_host
|
|
42
|
+
) do |payload|
|
|
43
|
+
start_time = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
|
44
|
+
|
|
45
|
+
begin
|
|
46
|
+
response = make_request
|
|
47
|
+
execution_time = ((Process.clock_gettime(Process::CLOCK_MONOTONIC) - start_time) * 1000).round
|
|
48
|
+
|
|
49
|
+
payload[:response_code] = response.code.to_i
|
|
50
|
+
@delivery.complete!(
|
|
51
|
+
response_code: response.code.to_i,
|
|
52
|
+
execution_time: execution_time,
|
|
53
|
+
response_body: response.body.to_s.truncate(10_000)
|
|
54
|
+
)
|
|
55
|
+
rescue Net::OpenTimeout, Net::ReadTimeout => e
|
|
56
|
+
execution_time = ((Process.clock_gettime(Process::CLOCK_MONOTONIC) - start_time) * 1000).round
|
|
57
|
+
Rails.error.report(e, context: { webhook_delivery_id: @delivery.id, url: @delivery.url })
|
|
58
|
+
payload[:error_type] = 'timeout'
|
|
59
|
+
@delivery.complete!(
|
|
60
|
+
execution_time: execution_time,
|
|
61
|
+
error_type: 'timeout',
|
|
62
|
+
request_errors: e.message
|
|
63
|
+
)
|
|
64
|
+
rescue StandardError => e
|
|
65
|
+
execution_time = ((Process.clock_gettime(Process::CLOCK_MONOTONIC) - start_time) * 1000).round
|
|
66
|
+
Rails.error.report(e, context: { webhook_delivery_id: @delivery.id, url: @delivery.url })
|
|
67
|
+
payload[:error_type] = 'connection_error'
|
|
68
|
+
@delivery.complete!(
|
|
69
|
+
execution_time: execution_time,
|
|
70
|
+
error_type: 'connection_error',
|
|
71
|
+
request_errors: e.message
|
|
72
|
+
)
|
|
73
|
+
end
|
|
74
|
+
end
|
|
47
75
|
end
|
|
48
76
|
|
|
49
77
|
private
|
|
@@ -56,6 +84,8 @@ module Spree
|
|
|
56
84
|
'X-Spree-Webhook-Timestamp' => webhook_timestamp.to_s,
|
|
57
85
|
'X-Spree-Webhook-Event' => @delivery.event_name
|
|
58
86
|
}
|
|
87
|
+
self.class.header_decorators.each { |decorator| decorator.call(headers, @delivery) }
|
|
88
|
+
|
|
59
89
|
body = payload_json
|
|
60
90
|
http_options = { open_timeout: TIMEOUT, read_timeout: TIMEOUT, verify_mode: ssl_verify_mode }
|
|
61
91
|
|
|
@@ -89,6 +119,12 @@ module Spree
|
|
|
89
119
|
@webhook_timestamp ||= Time.current.to_i
|
|
90
120
|
end
|
|
91
121
|
|
|
122
|
+
def url_host
|
|
123
|
+
URI.parse(@delivery.url).host
|
|
124
|
+
rescue URI::InvalidURIError
|
|
125
|
+
nil
|
|
126
|
+
end
|
|
127
|
+
|
|
92
128
|
def ssl_verify_mode
|
|
93
129
|
if Spree::Api::Config.webhooks_verify_ssl
|
|
94
130
|
OpenSSL::SSL::VERIFY_PEER
|
|
@@ -12,15 +12,19 @@ module Spree
|
|
|
12
12
|
#
|
|
13
13
|
# @example
|
|
14
14
|
# # Webhooks are automatically delivered when events are published
|
|
15
|
-
# Spree::Events.publish('order.
|
|
15
|
+
# Spree::Events.publish('order.placed', order: order)
|
|
16
16
|
#
|
|
17
17
|
class WebhookEventSubscriber < Spree::Subscriber
|
|
18
18
|
subscribes_to '*'
|
|
19
19
|
|
|
20
|
-
# Admin auth events carry live credentials (password reset
|
|
21
|
-
# no legitimate external consumer — core delivers those
|
|
22
|
-
# Never forward them to webhook endpoints, including '*'
|
|
23
|
-
|
|
20
|
+
# Admin and seller auth events carry live credentials (password reset
|
|
21
|
+
# tokens) and have no legitimate external consumer — core delivers those
|
|
22
|
+
# emails itself. Never forward them to webhook endpoints, including '*'
|
|
23
|
+
# subscriptions.
|
|
24
|
+
NON_DELIVERABLE_EVENTS = %w[
|
|
25
|
+
admin_user.password_reset_requested
|
|
26
|
+
seller_user.password_reset_requested
|
|
27
|
+
].freeze
|
|
24
28
|
|
|
25
29
|
def handle(event)
|
|
26
30
|
return unless Spree::Api::Config.webhooks_enabled
|
data/config/brakeman.ignore
CHANGED
|
@@ -23,9 +23,10 @@ Rails.application.config.after_initialize do
|
|
|
23
23
|
# Serializers that exist only for Admin API or events — no Store API controller
|
|
24
24
|
store_excluded = %w[
|
|
25
25
|
Asset CartPromotion OrderPromotion
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
TaxCategory
|
|
26
|
+
StockLevel StockMovement StockTransfer
|
|
27
|
+
Report Export Import ImportRow
|
|
28
|
+
TaxCategory Exchange ExchangeLineItem
|
|
29
|
+
SupplierEvent PurchaseOrderEvent StockReceiptEvent
|
|
29
30
|
].to_set
|
|
30
31
|
|
|
31
32
|
# Store SDK — no prefix, package provides namespace
|
|
@@ -33,7 +34,7 @@ Rails.application.config.after_initialize do
|
|
|
33
34
|
c.output_dir = api_root.join('../../packages/sdk/src/types/generated')
|
|
34
35
|
c.reject_class = ->(serializer:) {
|
|
35
36
|
name = serializer.name.to_s
|
|
36
|
-
name.include?('::Admin::') ||
|
|
37
|
+
name.include?('::Admin::') || name.include?('::Seller::') ||
|
|
37
38
|
store_excluded.include?(name.sub(/\ASpree::Api::V3::/, '').sub(/Serializer\z/, ''))
|
|
38
39
|
}
|
|
39
40
|
c.serializer_name_mapper = ->(serializer) {
|
|
@@ -53,5 +54,51 @@ Rails.application.config.after_initialize do
|
|
|
53
54
|
.sub(/Serializer\z/, '')
|
|
54
55
|
}
|
|
55
56
|
end
|
|
57
|
+
|
|
58
|
+
# Seller SDK — the seller panel's own branch.
|
|
59
|
+
#
|
|
60
|
+
# Emits every `::Seller::` serializer PLUS the store-level serializers a
|
|
61
|
+
# seller serializer nests. Seller serializers extend store ones (a
|
|
62
|
+
# seller's product renders its media, variants and categories through the
|
|
63
|
+
# public shapes — those are exactly what a seller may see of their own
|
|
64
|
+
# record), so the referenced types have to exist in this package too. Admin
|
|
65
|
+
# avoids the same problem by shipping an admin twin of every store
|
|
66
|
+
# serializer it references; the seller branch is deliberately thinner and
|
|
67
|
+
# borrows the store shapes as-is.
|
|
68
|
+
#
|
|
69
|
+
# Store-level names are emitted only when a seller serializer reaches
|
|
70
|
+
# them — the `store_nested_for_seller` set — so this package does not
|
|
71
|
+
# grow into a second copy of the whole store SDK.
|
|
72
|
+
#
|
|
73
|
+
# A name the seller branch declares itself must NOT be listed here: both
|
|
74
|
+
# map to the same bare type name, so listing it emits the export twice and
|
|
75
|
+
# the package stops compiling. Media and Variant are declared on the seller
|
|
76
|
+
# branch; Category and CustomField are not, but the store product
|
|
77
|
+
# serializer this branch inherits references them, so their types still
|
|
78
|
+
# have to exist in the package.
|
|
79
|
+
store_nested_for_seller = %w[
|
|
80
|
+
Address Category CustomField OptionType OptionValue Price PriceHistory Seller
|
|
81
|
+
].to_set
|
|
82
|
+
|
|
83
|
+
config.writer(:seller) do |c|
|
|
84
|
+
c.output_dir = api_root.join('../../packages/seller-sdk/src/types/generated')
|
|
85
|
+
c.reject_class = ->(serializer:) {
|
|
86
|
+
name = serializer.name.to_s
|
|
87
|
+
# Everything on the seller branch is in.
|
|
88
|
+
next false if name.include?('::Seller::')
|
|
89
|
+
# Nothing from the admin branch, ever.
|
|
90
|
+
next true if name.include?('::Admin::')
|
|
91
|
+
|
|
92
|
+
# A store-level serializer is in only if a seller serializer nests it.
|
|
93
|
+
bare = name.sub(/\ASpree::Api::V3::/, '').sub(/Serializer\z/, '')
|
|
94
|
+
!store_nested_for_seller.include?(bare)
|
|
95
|
+
}
|
|
96
|
+
c.serializer_name_mapper = ->(serializer) {
|
|
97
|
+
serializer.name.to_s
|
|
98
|
+
.sub(/\ASpree::Api::V3::Seller::/, '')
|
|
99
|
+
.sub(/\ASpree::Api::V3::/, '')
|
|
100
|
+
.sub(/Serializer\z/, '')
|
|
101
|
+
}
|
|
102
|
+
end
|
|
56
103
|
end
|
|
57
104
|
end
|
data/config/locales/en.yml
CHANGED
|
@@ -10,9 +10,14 @@ en:
|
|
|
10
10
|
invalid_taxonomy_id: Invalid taxonomy id.
|
|
11
11
|
must_specify_api_key: You must specify an API key.
|
|
12
12
|
errors:
|
|
13
|
+
automatic_collection_curation: Products of an automatic collection are managed by its rules and can't be curated manually
|
|
13
14
|
channel_inactive: The channel this API key is bound to is not active.
|
|
14
15
|
channel_mismatch: The requested channel does not match the channel this API key is bound to.
|
|
15
16
|
guest_checkout_not_allowed: You must be signed in to complete checkout.
|
|
17
|
+
media_not_deleted: "The file could not be deleted. Nothing was changed."
|
|
18
|
+
media_in_use: "This file is still in use (%{places}). Pass detach=true to remove it everywhere and delete it, or clear those places first."
|
|
19
|
+
media_url_import_requires_product: Importing media from a URL needs a product to import it into. Upload the file instead, or post it to a product's media.
|
|
20
|
+
store_mismatch: The requested store does not match the store this API key belongs to.
|
|
16
21
|
storefront_login_required: Authentication required to access this store.
|
|
17
22
|
negative_quantity: quantity is negative
|
|
18
23
|
newsletter_unsubscribe_token_invalid: Newsletter unsubscribe token is invalid or has expired.
|