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,59 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Seller
|
|
5
|
+
# One of the seller's own ways to ship, or a marketplace method the
|
|
6
|
+
# operator shares with them.
|
|
7
|
+
#
|
|
8
|
+
# Declared on top of the store serializer rather than subclassed from
|
|
9
|
+
# the admin one, like every serializer on this branch. What it leaves
|
|
10
|
+
# out is deliberate: `rate_provider`, `fulfillment_provider` and
|
|
11
|
+
# `pickup_point_provider` are fixed for a seller's method
|
|
12
|
+
# (docs/plans/6.0-multi-vendor-marketplace.md, Decision 13), so a
|
|
13
|
+
# seller neither sets them nor needs to read them.
|
|
14
|
+
#
|
|
15
|
+
# `editable` is what the panel renders a shared marketplace method
|
|
16
|
+
# read-only by — a seller sees the operator's method so they know what
|
|
17
|
+
# their goods can already ship with, and cannot change it.
|
|
18
|
+
class DeliveryMethodSerializer < V3::DeliveryMethodSerializer
|
|
19
|
+
typelize admin_name: [:string, nullable: true],
|
|
20
|
+
storefront_visible: :boolean,
|
|
21
|
+
tracking_url: [:string, nullable: true],
|
|
22
|
+
editable: :boolean,
|
|
23
|
+
delivery_profile_id: [:string, nullable: true],
|
|
24
|
+
delivery_zone_id: [:string, nullable: true],
|
|
25
|
+
calculator_type: [:string, nullable: true],
|
|
26
|
+
calculator_preferences: ['Record<string, unknown>', nullable: true]
|
|
27
|
+
|
|
28
|
+
attributes :admin_name, :storefront_visible, :tracking_url,
|
|
29
|
+
created_at: :iso8601, updated_at: :iso8601
|
|
30
|
+
|
|
31
|
+
many :delivery_method_rules, key: :rules, resource: proc { Spree.api.seller_delivery_method_rule_serializer }
|
|
32
|
+
|
|
33
|
+
# False for a marketplace method the operator shares — it is listed
|
|
34
|
+
# here so the seller can see what already ships their goods, and the
|
|
35
|
+
# API refuses to write it.
|
|
36
|
+
attribute :editable do |record|
|
|
37
|
+
record.seller_id.present?
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
attribute :delivery_profile_id do |record|
|
|
41
|
+
record.delivery_profile&.prefixed_id
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
attribute :delivery_zone_id do |record|
|
|
45
|
+
record.delivery_zone&.prefixed_id
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
attribute :calculator_type do |record|
|
|
49
|
+
record.calculator&.class&.api_type
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
attribute :calculator_preferences do |record|
|
|
53
|
+
record.calculator.respond_to?(:serialized_preferences) ? record.calculator.serialized_preferences : record.calculator&.preferences
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Seller
|
|
5
|
+
# A delivery profile as a seller picks it: a name, and whether it is
|
|
6
|
+
# the one a product lands on when they pick none.
|
|
7
|
+
#
|
|
8
|
+
# Declared rather than subclassed from the admin serializer, like every
|
|
9
|
+
# serializer on this branch: which warehouses and methods sit behind a
|
|
10
|
+
# profile is the marketplace's configuration, not a seller's to read.
|
|
11
|
+
class DeliveryProfileSerializer < BaseSerializer
|
|
12
|
+
typelize name: :string, default: :boolean, digital: :boolean
|
|
13
|
+
|
|
14
|
+
attributes :name, :default
|
|
15
|
+
|
|
16
|
+
# Whether this profile's goods are delivered digitally. A seller's
|
|
17
|
+
# own method ships by hand, so a digital profile can carry a product
|
|
18
|
+
# but never one of their methods — the method form filters its
|
|
19
|
+
# picker on this rather than letting the save fail on a provider
|
|
20
|
+
# field the seller cannot see.
|
|
21
|
+
attribute :digital, &:digital?
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Seller
|
|
5
|
+
# A priced service one of this seller's parcels could be carried by.
|
|
6
|
+
#
|
|
7
|
+
# Declared rather than subclassed from the store's rate, which expands
|
|
8
|
+
# the delivery method in full: a seller picks between quotes by name
|
|
9
|
+
# and price, and the method behind one is the operator's arrangement.
|
|
10
|
+
class DeliveryRateSerializer < V3::BaseSerializer
|
|
11
|
+
typelize name: :string,
|
|
12
|
+
selected: :boolean,
|
|
13
|
+
cost: :string,
|
|
14
|
+
display_cost: :string,
|
|
15
|
+
total: :string,
|
|
16
|
+
display_total: :string,
|
|
17
|
+
carrier: [:string, nullable: true],
|
|
18
|
+
service_level: [:string, nullable: true],
|
|
19
|
+
estimated_delivery_date: [:string, nullable: true]
|
|
20
|
+
|
|
21
|
+
attributes :name, :selected, :cost, :total,
|
|
22
|
+
:carrier, :service_level, :estimated_delivery_date
|
|
23
|
+
|
|
24
|
+
attribute :display_cost do |delivery_rate|
|
|
25
|
+
delivery_rate.display_cost.to_s
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
attribute :display_total do |delivery_rate|
|
|
29
|
+
delivery_rate.display_total.to_s
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Seller
|
|
5
|
+
class DeliverySerializer < V3::DeliverySerializer
|
|
6
|
+
typelize shipping_label_id: [:string, nullable: true]
|
|
7
|
+
|
|
8
|
+
attributes created_at: :iso8601, updated_at: :iso8601
|
|
9
|
+
|
|
10
|
+
attribute :shipping_label_id do |delivery|
|
|
11
|
+
delivery.shipping_label&.prefixed_id
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Seller
|
|
5
|
+
# A destination a seller can narrow their own method to.
|
|
6
|
+
#
|
|
7
|
+
# Declared rather than subclassed, like every serializer on this
|
|
8
|
+
# branch. No members: the picker names the zone the marketplace drew,
|
|
9
|
+
# and which countries and postal ranges make it up is the
|
|
10
|
+
# marketplace's own configuration.
|
|
11
|
+
class DeliveryZoneSerializer < BaseSerializer
|
|
12
|
+
typelize name: :string, description: [:string, nullable: true],
|
|
13
|
+
delivery_profile_id: :string
|
|
14
|
+
|
|
15
|
+
attributes :name, :description
|
|
16
|
+
|
|
17
|
+
# What the panel filters the picker by, so a zone is only offered
|
|
18
|
+
# under the profile it belongs to.
|
|
19
|
+
attribute :delivery_profile_id do |record|
|
|
20
|
+
record.delivery_profile&.prefixed_id
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Spree
|
|
4
|
+
module Api
|
|
5
|
+
module V3
|
|
6
|
+
module Seller
|
|
7
|
+
# One line of an exchange — what came back and what goes out in its
|
|
8
|
+
# place. Both variants expand through the seller's own serializer.
|
|
9
|
+
class ExchangeLineItemSerializer < V3::ExchangeLineItemSerializer
|
|
10
|
+
typelize name: [:string, nullable: true],
|
|
11
|
+
new_variant_name: [:string, nullable: true]
|
|
12
|
+
|
|
13
|
+
attribute :name do |line|
|
|
14
|
+
line.line_item&.name || line.original_variant&.name
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
attribute :new_variant_name do |line|
|
|
18
|
+
line.new_variant&.name
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
one :original_variant, resource: proc { Spree.api.seller_variant_serializer },
|
|
22
|
+
if: proc { expand?('original_variant') }
|
|
23
|
+
one :new_variant, resource: proc { Spree.api.seller_variant_serializer },
|
|
24
|
+
if: proc { expand?('new_variant') }
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Spree
|
|
4
|
+
module Api
|
|
5
|
+
module V3
|
|
6
|
+
module Seller
|
|
7
|
+
# An exchange 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.
|
|
11
|
+
class ExchangeSerializer < V3::ExchangeSerializer
|
|
12
|
+
typelize memo: [:string, nullable: true],
|
|
13
|
+
stock_location_id: [:string, nullable: true]
|
|
14
|
+
|
|
15
|
+
attributes :memo
|
|
16
|
+
|
|
17
|
+
attribute :stock_location_id do |exchange|
|
|
18
|
+
exchange.stock_location&.prefixed_id
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
many :exchange_line_items,
|
|
22
|
+
resource: proc { Spree.api.seller_exchange_line_item_serializer },
|
|
23
|
+
if: proc { expand?('exchange_line_items') }
|
|
24
|
+
|
|
25
|
+
one :reason, resource: proc { Spree.api.seller_reason_serializer }, if: proc { expand?('reason') }
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Seller
|
|
5
|
+
# Seller API serializer for {Spree::Export}.
|
|
6
|
+
#
|
|
7
|
+
# Mirrors the operator's, pointed at the seller branch's own download
|
|
8
|
+
# endpoint: the bytes are streamed by that action rather than handed
|
|
9
|
+
# over as a pre-signed ActiveStorage URL, so the seller's own session
|
|
10
|
+
# is what authorizes every download.
|
|
11
|
+
#
|
|
12
|
+
# `user_id` is inherited but names the seller's own staff member, and
|
|
13
|
+
# the marketplace's `results_url` is not exposed — a seller reads the
|
|
14
|
+
# file, not the operator's bookkeeping about it.
|
|
15
|
+
class ExportSerializer < V3::ExportSerializer
|
|
16
|
+
typelize done: :boolean,
|
|
17
|
+
download_url: [:string, nullable: true],
|
|
18
|
+
filename: [:string, nullable: true],
|
|
19
|
+
byte_size: [:number, nullable: true]
|
|
20
|
+
|
|
21
|
+
attribute(:done) { |export| export.done? }
|
|
22
|
+
|
|
23
|
+
# Safe-nav on `blob` — `attachment.attached?` can stay true while a
|
|
24
|
+
# background job purges the underlying blob (e.g. retention sweeps).
|
|
25
|
+
attribute :filename do |export|
|
|
26
|
+
export.attachment.blob&.filename&.to_s if export.done?
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
attribute :byte_size do |export|
|
|
30
|
+
export.attachment.blob&.byte_size if export.done?
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
attribute :download_url do |export|
|
|
34
|
+
next nil unless export.done?
|
|
35
|
+
|
|
36
|
+
Spree::Core::Engine.routes.url_helpers.download_api_v3_seller_export_path(
|
|
37
|
+
id: export.prefixed_id
|
|
38
|
+
)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Seller
|
|
5
|
+
# One line inside a parcel: what to pick and how many.
|
|
6
|
+
#
|
|
7
|
+
# Two ids, because the two things a seller does with a parcel address
|
|
8
|
+
# its contents differently: a partial dispatch names line items, and
|
|
9
|
+
# splitting names the variant being moved.
|
|
10
|
+
class FulfillmentItemSerializer < V3::BaseSerializer
|
|
11
|
+
typelize quantity: :number,
|
|
12
|
+
line_item_id: [:string, nullable: true],
|
|
13
|
+
variant_id: [:string, nullable: true],
|
|
14
|
+
name: [:string, nullable: true],
|
|
15
|
+
sku: [:string, nullable: true],
|
|
16
|
+
options_text: [:string, nullable: true]
|
|
17
|
+
|
|
18
|
+
attributes :quantity
|
|
19
|
+
|
|
20
|
+
attribute :line_item_id do |item|
|
|
21
|
+
item.line_item&.prefixed_id
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
attribute :variant_id do |item|
|
|
25
|
+
item.variant&.prefixed_id
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
attribute :name do |item|
|
|
29
|
+
item.line_item&.name
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
attribute :sku do |item|
|
|
33
|
+
item.variant&.sku
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
attribute :options_text do |item|
|
|
37
|
+
item.line_item&.options_text
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Seller
|
|
5
|
+
# A parcel this seller owes on one of their orders.
|
|
6
|
+
#
|
|
7
|
+
# Declared rather than subclassed from the store's fulfillment, whose
|
|
8
|
+
# stock location serializer is the store's own — the location a seller
|
|
9
|
+
# cares about is their own shelf, named here rather than expanded.
|
|
10
|
+
#
|
|
11
|
+
# The delivery rates quoted for this parcel are here, because a seller
|
|
12
|
+
# picking from a different shelf needs to see what that origin can be
|
|
13
|
+
# carried by. A rate carries only its name and its price, so nothing
|
|
14
|
+
# about the operator's arrangements comes with it.
|
|
15
|
+
class FulfillmentSerializer < V3::BaseSerializer
|
|
16
|
+
typelize number: :string,
|
|
17
|
+
status: [:string, enum: Spree::Fulfillment.statuses, enum_type_name: 'FulfillmentStatus'],
|
|
18
|
+
tracking: [:string, nullable: true],
|
|
19
|
+
tracking_url: [:string, nullable: true],
|
|
20
|
+
fulfillment_type: [:string, nullable: true],
|
|
21
|
+
delivery_method_name: [:string, nullable: true],
|
|
22
|
+
stock_location_name: [:string, nullable: true],
|
|
23
|
+
stock_location_id: [:string, nullable: true],
|
|
24
|
+
selected_delivery_rate_id: [:string, nullable: true]
|
|
25
|
+
|
|
26
|
+
attributes :number, :status, :tracking, :tracking_url,
|
|
27
|
+
fulfilled_at: :iso8601, delivered_at: :iso8601, created_at: :iso8601, updated_at: :iso8601
|
|
28
|
+
|
|
29
|
+
typelize delivered_at: [:string, nullable: true]
|
|
30
|
+
|
|
31
|
+
# Null until the parcel actually ships, which is most of its life.
|
|
32
|
+
typelize fulfilled_at: [:string, nullable: true]
|
|
33
|
+
|
|
34
|
+
attribute :fulfillment_type do |fulfillment|
|
|
35
|
+
fulfillment.fulfillment_type.presence || (fulfillment.digital? ? 'digital' : 'shipping')
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# How it travels and where it leaves from, as names rather than
|
|
39
|
+
# expanded records: a seller reads them, never edits them here.
|
|
40
|
+
attribute :delivery_method_name do |fulfillment|
|
|
41
|
+
fulfillment.delivery_method&.name
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
attribute :stock_location_name do |fulfillment|
|
|
45
|
+
fulfillment.stock_location&.name
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# The id as well as the name, so a seller moving the parcel to
|
|
49
|
+
# another of their shelves can see which one it is on now.
|
|
50
|
+
attribute :stock_location_id do |fulfillment|
|
|
51
|
+
fulfillment.stock_location&.prefixed_id
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# Deliberately not `items`: the store's fulfillment answers with a
|
|
55
|
+
# manifest under that name, and the shared OpenAPI patch rewrites it
|
|
56
|
+
# to that shape — a seller's rows would be documented as somebody
|
|
57
|
+
# else's. These are the persisted fulfillment items, so they say so.
|
|
58
|
+
many :fulfillment_items,
|
|
59
|
+
resource: proc { Spree.api.seller_fulfillment_item_serializer }
|
|
60
|
+
|
|
61
|
+
# The consignments and labels on this parcel — what a seller adds
|
|
62
|
+
# when they ship it themselves.
|
|
63
|
+
attribute :selected_delivery_rate_id do |fulfillment|
|
|
64
|
+
fulfillment.selected_delivery_rate&.prefixed_id
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# What this parcel could be carried by from where it currently sits.
|
|
68
|
+
many :delivery_rates, resource: proc { Spree.api.seller_delivery_rate_serializer }
|
|
69
|
+
|
|
70
|
+
many :deliveries, resource: proc { Spree.api.seller_delivery_serializer }
|
|
71
|
+
many :shipping_labels, key: :labels, resource: proc { Spree.api.seller_shipping_label_serializer }
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Seller
|
|
5
|
+
# How one schema field of a seller's import maps onto a column of
|
|
6
|
+
# their CSV. The `complete_mapping` endpoint accepts exactly these
|
|
7
|
+
# attribute names back (read/write symmetry).
|
|
8
|
+
class ImportMappingSerializer < V3::BaseSerializer
|
|
9
|
+
typelize schema_field: :string,
|
|
10
|
+
file_column: [:string, nullable: true],
|
|
11
|
+
required: :boolean
|
|
12
|
+
|
|
13
|
+
attributes :schema_field, :file_column
|
|
14
|
+
|
|
15
|
+
attribute :required, &:required?
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Seller
|
|
5
|
+
# One row of a seller's import. Adds the raw CSV row (`data`) so the
|
|
6
|
+
# failure report can show the values that were rejected.
|
|
7
|
+
class ImportRowSerializer < V3::ImportRowSerializer
|
|
8
|
+
typelize data: 'Record<string, string | null>'
|
|
9
|
+
|
|
10
|
+
attribute :data do |row|
|
|
11
|
+
row.data_json
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Seller
|
|
5
|
+
# One of a seller's CSV imports, as their panel's wizard reads it: the
|
|
6
|
+
# mapping payload while `mapping`, the poll counters afterwards.
|
|
7
|
+
#
|
|
8
|
+
# Declared from the store base rather than the admin serializer, like
|
|
9
|
+
# every serializer on this branch — the two are parallel, and an admin
|
|
10
|
+
# serializer gaining an operator-only field would otherwise leak it
|
|
11
|
+
# here. The fields below are the wizard's own working data (what the
|
|
12
|
+
# seller uploaded, how its columns map, how many rows have landed), so
|
|
13
|
+
# they are restated rather than inherited.
|
|
14
|
+
class ImportSerializer < V3::ImportSerializer
|
|
15
|
+
typelize completed_rows_count: :number,
|
|
16
|
+
failed_rows_count: :number,
|
|
17
|
+
processing_errors: [:string, nullable: true],
|
|
18
|
+
preferred_delimiter: :string,
|
|
19
|
+
schema_fields: 'Array<{ name: string; label: string; required: boolean }>',
|
|
20
|
+
csv_headers: [:string, multi: true],
|
|
21
|
+
sample_row: 'Record<string, string | null>',
|
|
22
|
+
original_filename: [:string, nullable: true],
|
|
23
|
+
original_byte_size: [:number, nullable: true],
|
|
24
|
+
original_file_url: [:string, nullable: true]
|
|
25
|
+
|
|
26
|
+
attributes :processing_errors, :preferred_delimiter
|
|
27
|
+
|
|
28
|
+
# The file the seller uploaded. `original_file_url` is this branch's
|
|
29
|
+
# own streaming endpoint (JWT-authenticated), not a signed
|
|
30
|
+
# ActiveStorage URL — the panel's `/api/*` proxy would not carry one.
|
|
31
|
+
attribute :original_filename do |import|
|
|
32
|
+
import.attachment.blob&.filename&.to_s if import.attachment.attached?
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
attribute :original_byte_size do |import|
|
|
36
|
+
import.attachment.blob&.byte_size if import.attachment.attached?
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
attribute :original_file_url do |import|
|
|
40
|
+
next nil unless import.attachment.attached?
|
|
41
|
+
|
|
42
|
+
Spree::Core::Engine.routes.url_helpers.download_api_v3_seller_import_path(
|
|
43
|
+
id: import.prefixed_id
|
|
44
|
+
)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
attribute :completed_rows_count do |import|
|
|
48
|
+
import.rows_status_counts['completed'] || 0
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
attribute :failed_rows_count do |import|
|
|
52
|
+
import.rows_status_counts['failed'] || 0
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
attribute :schema_fields do |import|
|
|
56
|
+
import.schema_fields.map do |field|
|
|
57
|
+
{ name: field[:name], label: field[:label], required: field[:required].present? }
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# Mapping-state only: these read the attached blob, which the 2s
|
|
62
|
+
# processing poll must never do.
|
|
63
|
+
attribute :csv_headers do |import|
|
|
64
|
+
import.mapping? ? (import.csv_headers || []) : []
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
attribute :sample_row do |import|
|
|
68
|
+
import.mapping? ? import.sample_row : {}
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
many :mappings,
|
|
72
|
+
resource: proc { Spree.api.seller_import_mapping_serializer }
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Seller
|
|
5
|
+
class InvitationSerializer < V3::BaseSerializer
|
|
6
|
+
typelize email: :string, status: [:string, enum: Spree::Invitation.statuses, enum_type_name: 'InvitationStatus'],
|
|
7
|
+
expires_at: [:string, nullable: true],
|
|
8
|
+
accepted_at: [:string, nullable: true],
|
|
9
|
+
acceptance_url: :string
|
|
10
|
+
|
|
11
|
+
attributes :email,
|
|
12
|
+
created_at: :iso8601, expires_at: :iso8601, accepted_at: :iso8601
|
|
13
|
+
|
|
14
|
+
attribute :status do |invitation|
|
|
15
|
+
invitation.status.to_s
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
attribute :acceptance_url do |invitation|
|
|
19
|
+
if Spree::Config[:seller_panel_url].present? || Spree::Config[:dashboard_url].present?
|
|
20
|
+
Rails.application.routes.url_helpers.admin_invitation_acceptance_url(invitation)
|
|
21
|
+
else
|
|
22
|
+
"/accept-invitation/#{invitation.prefixed_id}?token=#{invitation.token}"
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Seller
|
|
5
|
+
# A file on a seller's own product.
|
|
6
|
+
#
|
|
7
|
+
# Declared from the store base rather than the admin serializer, like
|
|
8
|
+
# every serializer on this branch. What a seller needs is the file, how
|
|
9
|
+
# it is cropped, and which variants it belongs to.
|
|
10
|
+
class MediaSerializer < V3::MediaSerializer
|
|
11
|
+
typelize position: :number,
|
|
12
|
+
variant_ids: [:string, multi: true],
|
|
13
|
+
focal_point_x: [:number, nullable: true],
|
|
14
|
+
focal_point_y: [:number, nullable: true]
|
|
15
|
+
|
|
16
|
+
attributes :position, :focal_point_x, :focal_point_y,
|
|
17
|
+
created_at: :iso8601, updated_at: :iso8601
|
|
18
|
+
|
|
19
|
+
attribute :variant_ids do |media|
|
|
20
|
+
media.variants.map(&:prefixed_id)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Seller
|
|
5
|
+
# A line on one of this seller's orders — what to pick, how many, and
|
|
6
|
+
# what it sold for.
|
|
7
|
+
#
|
|
8
|
+
# Declared rather than subclassed from the store's line item: that one
|
|
9
|
+
# carries the associations a storefront needs (digital links, tax
|
|
10
|
+
# lines, the seller's own public profile), none of which help someone
|
|
11
|
+
# packing a box, and each of which would pull another serializer into
|
|
12
|
+
# this branch's generated types.
|
|
13
|
+
class OrderLineItemSerializer < V3::BaseSerializer
|
|
14
|
+
typelize name: :string,
|
|
15
|
+
sku: [:string, nullable: true],
|
|
16
|
+
options_text: [:string, nullable: true],
|
|
17
|
+
quantity: :number,
|
|
18
|
+
currency: :string,
|
|
19
|
+
variant_id: [:string, nullable: true],
|
|
20
|
+
thumbnail_url: [:string, nullable: true],
|
|
21
|
+
price: [:string, nullable: true], display_price: [:string, nullable: true],
|
|
22
|
+
total: [:string, nullable: true], display_total: [:string, nullable: true]
|
|
23
|
+
|
|
24
|
+
attributes :name, :options_text, :quantity, :currency
|
|
25
|
+
|
|
26
|
+
money_attributes :price, :display_price, :total, :display_total
|
|
27
|
+
|
|
28
|
+
attribute :variant_id do |line_item|
|
|
29
|
+
line_item.variant&.prefixed_id
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# How a seller finds the item on their own shelf.
|
|
33
|
+
attribute :sku do |line_item|
|
|
34
|
+
line_item.variant&.sku
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
attribute :thumbnail_url do |line_item|
|
|
38
|
+
image_url_for(line_item.thumbnail)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|