spree_api 5.6.1 → 6.0.0.beta1
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 +9 -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 +16 -7
- 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 +157 -32
- 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 +231 -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 +65 -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 +59 -16
- data/app/controllers/spree/api/v3/resource_controller.rb +154 -38
- 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/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 +1 -1
- 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 +29 -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 +35 -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 +19 -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 +131 -19
- 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 +0 -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 +59 -0
- data/app/serializers/spree/api/v3/admin/role_serializer.rb +24 -6
- data/app/serializers/spree/api/v3/admin/saved_report_serializer.rb +33 -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 +49 -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 +63 -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 +39 -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 +2 -7
- data/lib/spree/api/dependencies.rb +173 -227
- 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 +341 -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,51 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Spree
|
|
4
|
+
module Api
|
|
5
|
+
module V3
|
|
6
|
+
module Seller
|
|
7
|
+
# A return on one of this seller's orders.
|
|
8
|
+
#
|
|
9
|
+
# Built on the shared V3 serializer rather than the admin one, which
|
|
10
|
+
# expands the order and the customer behind it — a seller reads their
|
|
11
|
+
# own order's goods coming back, never the buyer's record.
|
|
12
|
+
#
|
|
13
|
+
# What it adds over the shared one is the pair of figures a seller
|
|
14
|
+
# needs to settle: what has already gone back, and what may still.
|
|
15
|
+
class ReturnSerializer < V3::ReturnSerializer
|
|
16
|
+
typelize memo: [:string, nullable: true],
|
|
17
|
+
stock_location_id: [:string, nullable: true],
|
|
18
|
+
refunded_total: :string,
|
|
19
|
+
refundable_total: :string,
|
|
20
|
+
display_refunded_total: :string
|
|
21
|
+
|
|
22
|
+
attributes :memo
|
|
23
|
+
|
|
24
|
+
attribute :stock_location_id do |return_record|
|
|
25
|
+
return_record.stock_location&.prefixed_id
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
attribute :refunded_total do |return_record|
|
|
29
|
+
return_record.refunded_total.to_s
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# What the refund dialog opens on — never more than this may be
|
|
33
|
+
# given back, whatever amount is typed.
|
|
34
|
+
attribute :refundable_total do |return_record|
|
|
35
|
+
return_record.refundable_total.to_s
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
attribute :display_refunded_total do |return_record|
|
|
39
|
+
return_record.display_refunded_total.to_s
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
many :return_line_items,
|
|
43
|
+
resource: proc { Spree.api.seller_return_line_item_serializer },
|
|
44
|
+
if: proc { expand?('return_line_items') }
|
|
45
|
+
|
|
46
|
+
one :reason, resource: proc { Spree.api.seller_reason_serializer }, if: proc { expand?('reason') }
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Seller
|
|
5
|
+
# The seller's view of a label on one of their parcels — the same
|
|
6
|
+
# facts the operator sees, downloaded through the seller branch.
|
|
7
|
+
class ShippingLabelSerializer < Admin::ShippingLabelSerializer
|
|
8
|
+
attribute :download_url do |shipping_label|
|
|
9
|
+
next nil unless shipping_label.file.attached? || shipping_label.file_pending?
|
|
10
|
+
|
|
11
|
+
next nil if shipping_label.owner.order.nil?
|
|
12
|
+
|
|
13
|
+
Spree::Core::Engine.routes.url_helpers.download_api_v3_seller_order_fulfillment_label_path(
|
|
14
|
+
order_id: shipping_label.owner.order.prefixed_id,
|
|
15
|
+
fulfillment_id: shipping_label.owner.prefixed_id,
|
|
16
|
+
id: shipping_label.prefixed_id
|
|
17
|
+
)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Seller
|
|
5
|
+
# What a seller holds of one variant at one of their locations.
|
|
6
|
+
class StockLevelSerializer < V3::StockLevelSerializer
|
|
7
|
+
typelize allocated_count: :number, available_count: :number
|
|
8
|
+
|
|
9
|
+
attributes created_at: :iso8601, updated_at: :iso8601
|
|
10
|
+
|
|
11
|
+
# Units promised to placed orders but not yet dispatched.
|
|
12
|
+
attribute :allocated_count do |stock_level|
|
|
13
|
+
stock_level.allocated_count.to_i
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
attribute :available_count do |stock_level|
|
|
17
|
+
stock_level.available_count.to_i
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
one :stock_location,
|
|
21
|
+
resource: proc { Spree.api.seller_stock_location_serializer },
|
|
22
|
+
if: proc { expand?('stock_location') }
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Seller
|
|
5
|
+
class StockLocationSerializer < V3::StockLocationSerializer
|
|
6
|
+
typelize address2: [:string, nullable: true], state_name: [:string, nullable: true],
|
|
7
|
+
phone: [:string, nullable: true], company: [:string, nullable: true],
|
|
8
|
+
active: :boolean, default: :boolean, kind: [:string, enum: Spree::StockLocation::KINDS, enum_type_name: 'StockLocationKind'],
|
|
9
|
+
returns_enabled: :boolean
|
|
10
|
+
|
|
11
|
+
attributes :address2, :state_name, :phone, :company, :active, :default, :kind,
|
|
12
|
+
:returns_enabled, created_at: :iso8601, updated_at: :iso8601
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Seller
|
|
5
|
+
class TaxIdentifierSerializer < V3::BaseSerializer
|
|
6
|
+
typelize kind: [:string, comment: 'Tax identifier kind, keyed to a registered validator. Built-in: eu_vat. Extensions may register more.'], value: :string,
|
|
7
|
+
validation_status: [:string, nullable: true, enum: Spree::TaxIdentifier::VALIDATION_STATUSES],
|
|
8
|
+
validated_at: [:string, nullable: true]
|
|
9
|
+
|
|
10
|
+
attributes :kind, :value, :validation_status, validated_at: :iso8601
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Seller
|
|
5
|
+
class TeamMemberSerializer < V3::BaseSerializer
|
|
6
|
+
typelize email: :string,
|
|
7
|
+
first_name: [:string, nullable: true],
|
|
8
|
+
last_name: [:string, nullable: true],
|
|
9
|
+
full_name: [:string, nullable: true],
|
|
10
|
+
avatar_url: [:string, nullable: true]
|
|
11
|
+
|
|
12
|
+
attributes :email, :first_name, :last_name, :full_name,
|
|
13
|
+
created_at: :iso8601
|
|
14
|
+
|
|
15
|
+
attribute :avatar_url do |user|
|
|
16
|
+
image_url_for(user.avatar)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Seller
|
|
5
|
+
# What one of this seller's orders earned them, as the seller reads it.
|
|
6
|
+
#
|
|
7
|
+
# Declared from the base rather than the admin serializer so nothing
|
|
8
|
+
# leaks by inheritance: the provider's metadata and the refund behind a
|
|
9
|
+
# reversal are the marketplace's, and there is one seller in play so
|
|
10
|
+
# naming them on every row would only repeat the header.
|
|
11
|
+
class TransferSerializer < V3::BaseSerializer
|
|
12
|
+
typelize kind: :string,
|
|
13
|
+
status: :string,
|
|
14
|
+
currency: :string,
|
|
15
|
+
provider: :string,
|
|
16
|
+
amount: :string,
|
|
17
|
+
settled_amount: 'string | null',
|
|
18
|
+
settled_currency: 'string | null',
|
|
19
|
+
converted: :boolean,
|
|
20
|
+
display_amount: :string,
|
|
21
|
+
reference: 'string | null',
|
|
22
|
+
order_id: 'string | null',
|
|
23
|
+
order_number: 'string | null',
|
|
24
|
+
payout_id: 'string | null',
|
|
25
|
+
reversed_from_id: 'string | null'
|
|
26
|
+
|
|
27
|
+
attributes :kind, :status, :currency, :provider, :reference,
|
|
28
|
+
created_at: :iso8601, updated_at: :iso8601
|
|
29
|
+
|
|
30
|
+
# A string, so the figure a seller is paid round-trips exactly.
|
|
31
|
+
attribute(:amount) { |transfer| transfer.amount&.to_s }
|
|
32
|
+
attribute(:display_amount) { |transfer| transfer.display_amount.to_s }
|
|
33
|
+
|
|
34
|
+
# What this seller's account received, when the provider converted
|
|
35
|
+
# on the way in. Null when it settled in the currency of the sale.
|
|
36
|
+
attribute(:settled_amount) { |transfer| transfer.settled_amount&.to_s }
|
|
37
|
+
attribute(:settled_currency) { |transfer| transfer.settled_currency }
|
|
38
|
+
attribute(:converted) { |transfer| transfer.converted? }
|
|
39
|
+
|
|
40
|
+
%i[order payout reversed_from].each do |association|
|
|
41
|
+
attribute(:"#{association}_id") { |transfer| transfer.public_send(association)&.prefixed_id }
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
attribute(:order_number) { |transfer| transfer.order&.number }
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Seller
|
|
5
|
+
# One variant of a seller's own product.
|
|
6
|
+
#
|
|
7
|
+
# Carries what a seller manages: the SKU and barcode, what it cost
|
|
8
|
+
# them, its weight and dimensions, its customs classification and what
|
|
9
|
+
# is on the shelf. No `tax_category_id` or `delivery_profile_id` —
|
|
10
|
+
# those are marketplace configuration and the seller cannot write them,
|
|
11
|
+
# so showing them would invite an edit that silently does nothing.
|
|
12
|
+
class VariantSerializer < V3::VariantSerializer
|
|
13
|
+
typelize position: :number,
|
|
14
|
+
cost_price: [:string, nullable: true],
|
|
15
|
+
cost_currency: [:string, nullable: true],
|
|
16
|
+
barcode: [:string, nullable: true],
|
|
17
|
+
available_stock: [:number, nullable: true],
|
|
18
|
+
total_on_hand: [:number, nullable: true],
|
|
19
|
+
preorderable: :boolean,
|
|
20
|
+
preorder_ships_at: [:string, nullable: true],
|
|
21
|
+
backorder_limit: [:number, nullable: true],
|
|
22
|
+
hs_code: [:string, nullable: true],
|
|
23
|
+
country_of_origin: [:string, nullable: true],
|
|
24
|
+
customs_description: [:string, nullable: true],
|
|
25
|
+
minimum_order_quantity: ['number | null'], order_multiple: ['number | null'],
|
|
26
|
+
purchase_unit: [:string, nullable: true, enum: Spree::Variant::PURCHASE_UNITS],
|
|
27
|
+
metadata: 'Record<string, unknown>'
|
|
28
|
+
|
|
29
|
+
attributes :metadata, :position, :cost_price, :cost_currency,
|
|
30
|
+
:barcode, :backorder_limit,
|
|
31
|
+
:hs_code, :country_of_origin, :customs_description,
|
|
32
|
+
preorder_ships_at: :iso8601,
|
|
33
|
+
created_at: :iso8601, updated_at: :iso8601
|
|
34
|
+
|
|
35
|
+
# The variant's own stored rules, not a buyer's resolved ones — a
|
|
36
|
+
# seller edits the row.
|
|
37
|
+
attribute :minimum_order_quantity, &:minimum_order_quantity
|
|
38
|
+
attribute :order_multiple, &:order_multiple
|
|
39
|
+
attribute :purchase_unit, &:purchase_unit
|
|
40
|
+
|
|
41
|
+
attribute :preorderable, &:preorderable?
|
|
42
|
+
|
|
43
|
+
attribute :available_stock do |variant|
|
|
44
|
+
variant.available_stock.to_i if variant.should_track_inventory?
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
attribute :total_on_hand do |variant|
|
|
48
|
+
variant.total_on_hand.to_i if variant.should_track_inventory?
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
one :primary_media,
|
|
52
|
+
resource: proc { Spree.api.seller_media_serializer },
|
|
53
|
+
if: proc { expand?('primary_media') }
|
|
54
|
+
|
|
55
|
+
many :gallery_media,
|
|
56
|
+
key: :media,
|
|
57
|
+
resource: proc { Spree.api.seller_media_serializer },
|
|
58
|
+
if: proc { expand?('media') }
|
|
59
|
+
|
|
60
|
+
many :prices,
|
|
61
|
+
resource: proc { Spree.api.price_serializer },
|
|
62
|
+
if: proc { expand?('prices') }
|
|
63
|
+
|
|
64
|
+
many :stock_levels,
|
|
65
|
+
resource: proc { Spree.api.seller_stock_level_serializer },
|
|
66
|
+
if: proc { expand?('stock_levels') }
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
# A seller as a shopper sees them: who they are and what they look like,
|
|
5
|
+
# nothing about how the marketplace runs them.
|
|
6
|
+
#
|
|
7
|
+
# Deliberately excluded, because none of it is the customer's business:
|
|
8
|
+
# `status` and `sellable` (operational state — a seller a shopper can
|
|
9
|
+
# reach is by definition sellable), the settlement and tax configuration,
|
|
10
|
+
# billing and contact addresses, team size, and every timestamp.
|
|
11
|
+
class SellerSerializer < BaseSerializer
|
|
12
|
+
typelize name: :string, slug: :string,
|
|
13
|
+
about: :string, about_html: :string,
|
|
14
|
+
logo_url: [:string, nullable: true],
|
|
15
|
+
square_logo_url: [:string, nullable: true],
|
|
16
|
+
cover_photo_url: [:string, nullable: true]
|
|
17
|
+
|
|
18
|
+
attributes :name, :slug
|
|
19
|
+
|
|
20
|
+
attribute :about do |seller|
|
|
21
|
+
Spree::RichTextHelper.to_plain_text(seller.about)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
attribute :about_html do |seller|
|
|
25
|
+
seller.about_html
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
attribute :logo_url do |seller|
|
|
29
|
+
image_url_for(seller.logo)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
attribute :square_logo_url do |seller|
|
|
33
|
+
image_url_for(seller.square_logo)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
attribute :cover_photo_url do |seller|
|
|
37
|
+
image_url_for(seller.cover_photo)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# The seller's published policies, on request. Behind the expand guard
|
|
41
|
+
# because a policy body is a whole legal document: a marketplace's
|
|
42
|
+
# seller listing would otherwise carry every seller's full text on
|
|
43
|
+
# every page. A product page reaches them as `expand=seller.policies`.
|
|
44
|
+
many :policies,
|
|
45
|
+
resource: proc { Spree.api.policy_serializer },
|
|
46
|
+
if: proc { expand?('policies') }
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
# Payload of the shipping_label.* events. Labels have no storefront
|
|
5
|
+
# serializer — a customer never sees one — so the event shape is
|
|
6
|
+
# declared here rather than found by convention.
|
|
7
|
+
class ShippingLabelEventSerializer < Admin::ShippingLabelSerializer
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -3,18 +3,18 @@
|
|
|
3
3
|
module Spree
|
|
4
4
|
module Api
|
|
5
5
|
module V3
|
|
6
|
-
class
|
|
6
|
+
class StockLevelSerializer < BaseSerializer
|
|
7
7
|
typelize count_on_hand: :number, backorderable: :boolean,
|
|
8
8
|
stock_location_id: [:string, nullable: true], variant_id: [:string, nullable: true]
|
|
9
9
|
|
|
10
10
|
attributes :count_on_hand, :backorderable
|
|
11
11
|
|
|
12
|
-
attribute :stock_location_id do |
|
|
13
|
-
|
|
12
|
+
attribute :stock_location_id do |stock_level|
|
|
13
|
+
stock_level.stock_location&.prefixed_id
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
-
attribute :variant_id do |
|
|
17
|
-
|
|
16
|
+
attribute :variant_id do |stock_level|
|
|
17
|
+
stock_level.variant&.prefixed_id
|
|
18
18
|
end
|
|
19
19
|
end
|
|
20
20
|
end
|
|
@@ -3,15 +3,19 @@ module Spree
|
|
|
3
3
|
module V3
|
|
4
4
|
class StockLocationSerializer < BaseSerializer
|
|
5
5
|
typelize name: :string, address1: [:string, nullable: true], city: [:string, nullable: true],
|
|
6
|
-
zipcode: [:string, nullable: true],
|
|
7
|
-
country_name: [:string, nullable: true],
|
|
8
|
-
state_text: [:string, nullable: true]
|
|
6
|
+
zipcode: [:string, nullable: true], country_code: [:string, nullable: true],
|
|
7
|
+
country_name: [:string, nullable: true], state_code: [:string, nullable: true],
|
|
8
|
+
state_text: [:string, nullable: true],
|
|
9
|
+
pickup_ready_in_minutes: [:number, nullable: true],
|
|
10
|
+
pickup_instructions: [:string, nullable: true]
|
|
9
11
|
|
|
10
|
-
|
|
11
|
-
stock_location.state&.abbr
|
|
12
|
-
end
|
|
12
|
+
attributes :name, :address1, :city, :zipcode, :country_code, :country_name, :state_code, :state_text
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
# Collection details the customer needs when choosing a counter: how
|
|
15
|
+
# long until the order is ready, and where to go. This serializer
|
|
16
|
+
# backs the pickup-locations endpoint, so without them the two
|
|
17
|
+
# merchant-configured fields would never reach the buyer.
|
|
18
|
+
attributes :pickup_ready_in_minutes, :pickup_instructions
|
|
15
19
|
end
|
|
16
20
|
end
|
|
17
21
|
end
|
|
@@ -4,24 +4,17 @@ module Spree
|
|
|
4
4
|
module Api
|
|
5
5
|
module V3
|
|
6
6
|
class StockMovementSerializer < BaseSerializer
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
# `kind` is nullable for the lifetime of 6.0: a legacy row on an
|
|
8
|
+
# install that has not run spree:migrate_stock_movements_to_typed_rows
|
|
9
|
+
# has no kind yet.
|
|
10
|
+
typelize quantity: :number, kind: [:string, nullable: true, enum: Spree::StockMovement::KINDS],
|
|
11
|
+
reason: [:string, nullable: true], stock_level_id: [:string, nullable: true]
|
|
10
12
|
|
|
11
|
-
attributes :quantity, :
|
|
13
|
+
attributes :quantity, :kind, :reason,
|
|
12
14
|
created_at: :iso8601, updated_at: :iso8601
|
|
13
15
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
Spree::Base.polymorphic_api_type(movement.originator_type)
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
attribute :originator_id do |movement|
|
|
20
|
-
movement.originator&.prefixed_id
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
attribute :stock_item_id do |movement|
|
|
24
|
-
movement.stock_item&.prefixed_id
|
|
16
|
+
attribute :stock_level_id do |movement|
|
|
17
|
+
movement.stock_level&.prefixed_id
|
|
25
18
|
end
|
|
26
19
|
end
|
|
27
20
|
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
# Payload of the stock_receipt.* events. Stock receipts have no
|
|
5
|
+
# storefront serializer, so the event shape is declared here rather than
|
|
6
|
+
# found by convention.
|
|
7
|
+
class StockReceiptEventSerializer < Admin::StockReceiptSerializer
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -4,13 +4,13 @@ module Spree
|
|
|
4
4
|
module Api
|
|
5
5
|
module V3
|
|
6
6
|
class StockTransferSerializer < BaseSerializer
|
|
7
|
-
#
|
|
8
|
-
#
|
|
9
|
-
#
|
|
10
|
-
typelize number:
|
|
7
|
+
# Both warehouses are required now: receiving from a supplier is a
|
|
8
|
+
# Spree::PurchaseOrder, not a transfer with a missing source
|
|
9
|
+
# (docs/plans/6.0-inventory-operations.md).
|
|
10
|
+
typelize number: :string,
|
|
11
11
|
reference: [:string, nullable: true],
|
|
12
|
-
source_location_id:
|
|
13
|
-
destination_location_id:
|
|
12
|
+
source_location_id: :string,
|
|
13
|
+
destination_location_id: :string
|
|
14
14
|
|
|
15
15
|
attributes :number, :reference,
|
|
16
16
|
created_at: :iso8601, updated_at: :iso8601
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
class StoreCreditEventSerializer < BaseSerializer
|
|
5
|
+
typelize action: :string,
|
|
6
|
+
display_action: [:string, nullable: true],
|
|
7
|
+
amount: :string,
|
|
8
|
+
display_amount: :string,
|
|
9
|
+
authorization_code: [:string, nullable: true]
|
|
10
|
+
|
|
11
|
+
attributes :action, :authorization_code
|
|
12
|
+
|
|
13
|
+
attribute :display_action do |event|
|
|
14
|
+
event.display_action
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
attribute :amount do |event|
|
|
18
|
+
event.amount.to_s
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
attribute :display_amount do |event|
|
|
22
|
+
event.display_amount.to_s
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
attributes created_at: :iso8601
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
# Payload of the supplier.* events. Suppliers have no storefront
|
|
5
|
+
# serializer — a customer never sees who the merchant buys from — so the
|
|
6
|
+
# event shape is declared here rather than found by convention.
|
|
7
|
+
class SupplierEventSerializer < Admin::SupplierSerializer
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -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') }
|