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,119 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Seller
|
|
5
|
+
# An order placed with this seller.
|
|
6
|
+
#
|
|
7
|
+
# Built from the base rather than the store serializer: that one is
|
|
8
|
+
# written for the shopper who placed the order, and carries payments —
|
|
9
|
+
# how the customer paid the marketplace is not the seller's business.
|
|
10
|
+
# What they are owed overall is still the commission ledger; this
|
|
11
|
+
# carries only what this one sale was charged.
|
|
12
|
+
#
|
|
13
|
+
# The addresses are here because the seller is merchant of record for
|
|
14
|
+
# their child order (docs/plans/6.0-multi-vendor-marketplace.md): the
|
|
15
|
+
# shipping address to post the parcel, the billing address because the
|
|
16
|
+
# invoice for that sale is theirs to issue. Both marketplace platforms
|
|
17
|
+
# we surveyed give a seller the same two.
|
|
18
|
+
#
|
|
19
|
+
# The buyer's email is not. A seller reaching the customer about a
|
|
20
|
+
# delivery has the phone on the shipping address; an email address is
|
|
21
|
+
# the one contact detail that lets a marketplace's customer be taken
|
|
22
|
+
# off it, and it is not needed to pack, post or invoice.
|
|
23
|
+
class OrderSerializer < V3::BaseSerializer
|
|
24
|
+
typelize number: :string,
|
|
25
|
+
customer_note: [:string, nullable: true],
|
|
26
|
+
currency: :string,
|
|
27
|
+
total_quantity: :number,
|
|
28
|
+
fulfillment_status: [:string, nullable: true, enum: Spree::Order::FULFILLMENT_STATUSES],
|
|
29
|
+
payment_status: [:string, nullable: true, enum: Spree::Order::PAYMENT_STATUSES],
|
|
30
|
+
status: [:string, enum: Spree::Order::STATUSES],
|
|
31
|
+
item_total: [:string, nullable: true], display_item_total: [:string, nullable: true],
|
|
32
|
+
delivery_total: [:string, nullable: true], display_delivery_total: [:string, nullable: true],
|
|
33
|
+
discount_total: [:string, nullable: true], display_discount_total: [:string, nullable: true],
|
|
34
|
+
adjustment_total: [:string, nullable: true], display_adjustment_total: [:string, nullable: true],
|
|
35
|
+
included_tax_total: [:string, nullable: true], display_included_tax_total: [:string, nullable: true],
|
|
36
|
+
additional_tax_total: [:string, nullable: true], display_additional_tax_total: [:string, nullable: true],
|
|
37
|
+
tax_total: [:string, nullable: true], display_tax_total: [:string, nullable: true],
|
|
38
|
+
total: [:string, nullable: true], display_total: [:string, nullable: true],
|
|
39
|
+
payment_total: [:string, nullable: true], display_payment_total: [:string, nullable: true],
|
|
40
|
+
amount_due: [:string, nullable: true], display_amount_due: [:string, nullable: true],
|
|
41
|
+
commission_amount_total: [:string, nullable: true],
|
|
42
|
+
display_commission_amount_total: [:string, nullable: true],
|
|
43
|
+
commission_tax_total: [:string, nullable: true],
|
|
44
|
+
display_commission_tax_total: [:string, nullable: true],
|
|
45
|
+
commission_total: [:string, nullable: true],
|
|
46
|
+
display_commission_total: [:string, nullable: true],
|
|
47
|
+
canceled_at: [:string, nullable: true],
|
|
48
|
+
cancel_reason_name: [:string, nullable: true],
|
|
49
|
+
cancel_note: [:string, nullable: true],
|
|
50
|
+
internal_note: [:string, nullable: true],
|
|
51
|
+
internal_note_html: [:string, nullable: true]
|
|
52
|
+
|
|
53
|
+
attributes :number, :customer_note, :currency, :total_quantity,
|
|
54
|
+
:status, :fulfillment_status, :payment_status,
|
|
55
|
+
completed_at: :iso8601, created_at: :iso8601, updated_at: :iso8601
|
|
56
|
+
|
|
57
|
+
# The seller's own working note. A marketplace basket is split into
|
|
58
|
+
# one order per seller, so this row — and the note on it — is theirs
|
|
59
|
+
# alone; it is never the operator's note about the whole sale.
|
|
60
|
+
attribute :internal_note do |order|
|
|
61
|
+
Spree::RichTextHelper.to_plain_text(order.internal_note).presence
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
attribute :internal_note_html do |order|
|
|
65
|
+
order.internal_note.presence
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# What this seller is owed for the goods, and what the buyer paid for
|
|
69
|
+
# them. Deliberately not the whole money surface: gift cards, store
|
|
70
|
+
# credit and the payment breakdown belong to the marketplace.
|
|
71
|
+
money_attributes :item_total, :display_item_total,
|
|
72
|
+
:delivery_total, :display_delivery_total,
|
|
73
|
+
:discount_total, :display_discount_total,
|
|
74
|
+
:adjustment_total, :display_adjustment_total,
|
|
75
|
+
:included_tax_total, :display_included_tax_total,
|
|
76
|
+
:additional_tax_total, :display_additional_tax_total,
|
|
77
|
+
:tax_total, :display_tax_total,
|
|
78
|
+
:total, :display_total,
|
|
79
|
+
:payment_total, :display_payment_total,
|
|
80
|
+
:amount_due, :display_amount_due
|
|
81
|
+
|
|
82
|
+
# What the marketplace charged the seller on this sale, and the tax
|
|
83
|
+
# on that charge. The ledger remains where a seller sees what they
|
|
84
|
+
# are owed overall, but the tax belongs on the order itself: the
|
|
85
|
+
# commission is a B2B supply from the platform, so this is the
|
|
86
|
+
# seller's input tax to reclaim, and it has to be attributable to
|
|
87
|
+
# the sale that produced it.
|
|
88
|
+
money_attributes :commission_amount_total, :display_commission_amount_total,
|
|
89
|
+
:commission_tax_total, :display_commission_tax_total,
|
|
90
|
+
:commission_total, :display_commission_total
|
|
91
|
+
|
|
92
|
+
# Why the sale was called off, when it was. The reason is the
|
|
93
|
+
# marketplace's vocabulary, so it is rendered as a name rather than
|
|
94
|
+
# an id a seller has nothing else to do with.
|
|
95
|
+
attribute :canceled_at do |order|
|
|
96
|
+
order.canceled_at&.iso8601
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
attribute :cancel_reason_name do |order|
|
|
100
|
+
order.cancel_reason&.name
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
attributes :cancel_note
|
|
104
|
+
|
|
105
|
+
many :line_items, key: :items, resource: proc { Spree.api.seller_order_line_item_serializer }
|
|
106
|
+
# This order's share of the basket's payment, on request: the order
|
|
107
|
+
# page reads it, the list never does. Empty on an order that did not
|
|
108
|
+
# split — a single-seller basket keeps the payment on the order
|
|
109
|
+
# itself, and that payment stays the marketplace's.
|
|
110
|
+
many :payment_splits, resource: proc { Spree.api.seller_payment_split_serializer },
|
|
111
|
+
if: proc { expand?('payment_splits') }
|
|
112
|
+
many :fulfillments, resource: proc { Spree.api.seller_fulfillment_serializer }
|
|
113
|
+
one :shipping_address, resource: proc { Spree.api.address_serializer }
|
|
114
|
+
one :billing_address, resource: proc { Spree.api.address_serializer }
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Seller
|
|
5
|
+
# What a seller packs their goods into: their own boxes, cartons and
|
|
6
|
+
# pallets, and the marketplace's shared packaging they may also use.
|
|
7
|
+
#
|
|
8
|
+
# Declared on `BaseSerializer` rather than on a store twin because
|
|
9
|
+
# there is none — a shopper never picks their packaging, so package
|
|
10
|
+
# types exist on the back-office surfaces only.
|
|
11
|
+
#
|
|
12
|
+
# `editable` is what the panel renders a marketplace row read-only by,
|
|
13
|
+
# mirroring the seller's delivery method serializer: a seller sees the
|
|
14
|
+
# operator's cartons so they know what they can pack into, and the API
|
|
15
|
+
# refuses to write them (docs/plans/6.0-seller-package-types.md).
|
|
16
|
+
class PackageTypeSerializer < V3::BaseSerializer
|
|
17
|
+
typelize name: :string,
|
|
18
|
+
kind: [:string, enum: Spree::PackageType::KINDS],
|
|
19
|
+
length: [:string, nullable: true],
|
|
20
|
+
width: [:string, nullable: true],
|
|
21
|
+
height: [:string, nullable: true],
|
|
22
|
+
dimensions_unit: [:string, enum: Spree::Variant::DIMENSION_UNITS],
|
|
23
|
+
weight: [:string, nullable: true],
|
|
24
|
+
max_weight: [:string, nullable: true],
|
|
25
|
+
weight_unit: [:string, enum: Spree::Variant::WEIGHT_UNITS],
|
|
26
|
+
volume: [:string, nullable: true],
|
|
27
|
+
default: :boolean,
|
|
28
|
+
editable: :boolean,
|
|
29
|
+
metadata: ['Record<string, unknown> | null']
|
|
30
|
+
|
|
31
|
+
attributes :name, :kind, :length, :width, :height, :weight, :max_weight,
|
|
32
|
+
:default, :metadata
|
|
33
|
+
|
|
34
|
+
attributes created_at: :iso8601, updated_at: :iso8601
|
|
35
|
+
|
|
36
|
+
# Both units read through their fallbacks, so a row that never set
|
|
37
|
+
# one still tells the seller what its numbers mean.
|
|
38
|
+
attribute :dimensions_unit, &:dimensions_unit
|
|
39
|
+
attribute :weight_unit, &:weight_unit
|
|
40
|
+
|
|
41
|
+
attribute :volume, &:volume
|
|
42
|
+
|
|
43
|
+
# False for a marketplace row: listed so the seller knows what they
|
|
44
|
+
# can pack into, and not theirs to change.
|
|
45
|
+
attribute :editable do |package_type|
|
|
46
|
+
package_type.seller_id.present?
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Seller
|
|
5
|
+
# This order's share of the payment the buyer made for the whole
|
|
6
|
+
# basket (Spree::PaymentSplit), as the seller reads it.
|
|
7
|
+
#
|
|
8
|
+
# Amounts only. Which payment it is a share of, how the buyer paid and
|
|
9
|
+
# what the gateway said are the marketplace's — the seller's question
|
|
10
|
+
# is how much of their order was captured, refunded, and can still be
|
|
11
|
+
# refunded.
|
|
12
|
+
class PaymentSplitSerializer < V3::BaseSerializer
|
|
13
|
+
AMOUNTS = %i[authorized_amount captured_amount refunded_amount claimed_amount
|
|
14
|
+
net_captured_amount refundable_amount].freeze
|
|
15
|
+
|
|
16
|
+
typelize currency: :string,
|
|
17
|
+
authorized_amount: :string, display_authorized_amount: :string,
|
|
18
|
+
captured_amount: :string, display_captured_amount: :string,
|
|
19
|
+
refunded_amount: :string, display_refunded_amount: :string,
|
|
20
|
+
claimed_amount: :string, display_claimed_amount: :string,
|
|
21
|
+
net_captured_amount: :string, display_net_captured_amount: :string,
|
|
22
|
+
refundable_amount: :string, display_refundable_amount: :string
|
|
23
|
+
|
|
24
|
+
attributes :currency, created_at: :iso8601
|
|
25
|
+
|
|
26
|
+
AMOUNTS.each do |amount|
|
|
27
|
+
attribute(amount) { |split| split.public_send(amount).to_s }
|
|
28
|
+
attribute(:"display_#{amount}") { |split| split.public_send(:"display_#{amount}").to_s }
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Seller
|
|
5
|
+
# One settlement to this seller, as the seller reads it.
|
|
6
|
+
class PayoutSerializer < V3::BaseSerializer
|
|
7
|
+
typelize status: :string,
|
|
8
|
+
currency: :string,
|
|
9
|
+
provider: :string,
|
|
10
|
+
amount: :string,
|
|
11
|
+
display_amount: :string,
|
|
12
|
+
reference: 'string | null',
|
|
13
|
+
period_start: 'string | null',
|
|
14
|
+
period_end: 'string | null',
|
|
15
|
+
transfers_count: :number
|
|
16
|
+
|
|
17
|
+
attributes :status, :currency, :provider, :reference,
|
|
18
|
+
period_start: :iso8601, period_end: :iso8601,
|
|
19
|
+
created_at: :iso8601, updated_at: :iso8601
|
|
20
|
+
|
|
21
|
+
attribute(:amount) { |payout| payout.amount&.to_s }
|
|
22
|
+
attribute(:display_amount) { |payout| payout.display_amount.to_s }
|
|
23
|
+
|
|
24
|
+
# How many earnings this settlement covers. Read from a count the
|
|
25
|
+
# controller made for the whole page when there is one; a single
|
|
26
|
+
# payout read falls back to asking for its own.
|
|
27
|
+
attribute(:transfers_count) do |payout, params|
|
|
28
|
+
counts = params && params[:transfer_counts]
|
|
29
|
+
|
|
30
|
+
counts ? counts.fetch(payout.id, 0) : payout.transfers.count
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Seller
|
|
5
|
+
# A seller's own product.
|
|
6
|
+
#
|
|
7
|
+
# Read and write have to name the same fields: the panel loads a
|
|
8
|
+
# product into a form and sends it back, so anything the controller
|
|
9
|
+
# accepts but this withholds would be blanked on save. The reverse
|
|
10
|
+
# matters too — how a product is filed (categories, collections, tags)
|
|
11
|
+
# is the marketplace's own merchandising, so it is neither written nor
|
|
12
|
+
# read here. The type and the delivery profile are: a seller picks
|
|
13
|
+
# both from the marketplace's list
|
|
14
|
+
# (docs/plans/6.0-multi-vendor-marketplace.md, Decision 13).
|
|
15
|
+
class ProductSerializer < V3::ProductSerializer
|
|
16
|
+
typelize status: [:string, enum: Spree::Product.statuses, enum_type_name: 'ProductStatus'], metadata: 'Record<string, unknown>',
|
|
17
|
+
product_type_id: [:string, nullable: true],
|
|
18
|
+
delivery_profile_id: [:string, nullable: true],
|
|
19
|
+
submission: ['ProductSubmission', nullable: true]
|
|
20
|
+
|
|
21
|
+
attributes :status, :metadata, created_at: :iso8601, updated_at: :iso8601
|
|
22
|
+
|
|
23
|
+
attribute :product_type_id do |product|
|
|
24
|
+
product.product_type&.prefixed_id
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
attribute :delivery_profile_id do |product|
|
|
28
|
+
product.delivery_profile&.prefixed_id
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
many :variants,
|
|
32
|
+
resource: proc { Spree.api.seller_variant_serializer },
|
|
33
|
+
if: proc { expand?('variants') }
|
|
34
|
+
|
|
35
|
+
one :default_variant,
|
|
36
|
+
resource: proc { Spree.api.seller_variant_serializer },
|
|
37
|
+
if: proc { expand?('default_variant') }
|
|
38
|
+
|
|
39
|
+
many :gallery_media,
|
|
40
|
+
key: :media,
|
|
41
|
+
resource: proc { Spree.api.seller_media_serializer },
|
|
42
|
+
if: proc { expand?('media') }
|
|
43
|
+
|
|
44
|
+
many :option_types,
|
|
45
|
+
resource: proc { Spree.api.option_type_serializer },
|
|
46
|
+
if: proc { expand?('option_types') }
|
|
47
|
+
|
|
48
|
+
# Why the marketplace sent this back, so the panel can show it
|
|
49
|
+
# against a rejected listing without a second request. Expanded
|
|
50
|
+
# rather than always sent — it is a per-product query, and the
|
|
51
|
+
# products list has no use for it.
|
|
52
|
+
one :latest_submission,
|
|
53
|
+
key: :submission,
|
|
54
|
+
resource: proc { Spree.api.product_submission_serializer },
|
|
55
|
+
if: proc { expand?('submission') }
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Seller
|
|
5
|
+
# The marketplace's answer on a listing, as the seller sees it.
|
|
6
|
+
#
|
|
7
|
+
# The reviewer's identity is deliberately absent: a seller needs to
|
|
8
|
+
# know what to change, not which member of the marketplace's staff
|
|
9
|
+
# decided (docs/plans/6.0-seller-product-submission.md).
|
|
10
|
+
class ProductSubmissionSerializer < BaseSerializer
|
|
11
|
+
typelize status: [:string, enum: Spree::ProductSubmission.statuses, enum_type_name: 'ProductSubmissionStatus'],
|
|
12
|
+
product_id: :string,
|
|
13
|
+
review_note: [:string, nullable: true],
|
|
14
|
+
reviewed_at: [:string, nullable: true]
|
|
15
|
+
|
|
16
|
+
attributes :status, :review_note,
|
|
17
|
+
reviewed_at: :iso8601,
|
|
18
|
+
created_at: :iso8601
|
|
19
|
+
|
|
20
|
+
# Carried for the event payload, which is this serializer's other
|
|
21
|
+
# job: a subscriber holding only the submission id would have to
|
|
22
|
+
# fetch the row back to learn which product was decided on.
|
|
23
|
+
attribute :product_id do |submission|
|
|
24
|
+
submission.product&.prefixed_id
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Seller
|
|
5
|
+
# A product type as a seller sees it: something to list against, and
|
|
6
|
+
# what picking it will bring.
|
|
7
|
+
#
|
|
8
|
+
# The option types are carried as **labels**, not as ids the client
|
|
9
|
+
# then resolves. The operator's form looks them up against the option
|
|
10
|
+
# types page it already loads, but a seller manages no option-type
|
|
11
|
+
# vocabulary and has no such endpoint — sending ids alone would leave
|
|
12
|
+
# the form unable to name them, and the warning it exists to show
|
|
13
|
+
# would silently never appear.
|
|
14
|
+
#
|
|
15
|
+
# No `category_ids` (filing is the operator's, so a seller would be
|
|
16
|
+
# shown a consequence they never see) and no `products_count` or
|
|
17
|
+
# custom field schema, which describe how the operator maintains the
|
|
18
|
+
# type rather than what listing against it does.
|
|
19
|
+
class ProductTypeSerializer < V3::ProductTypeSerializer
|
|
20
|
+
typelize option_type_labels: [:string, multi: true]
|
|
21
|
+
|
|
22
|
+
attribute :option_type_labels do |product_type|
|
|
23
|
+
product_type.option_types.map { |option_type| option_type.label.presence || option_type.name }.compact
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Seller
|
|
5
|
+
class ProfileSerializer < V3::SellerSerializer
|
|
6
|
+
typelize status: [:string, enum: Spree::Seller.statuses, enum_type_name: 'SellerStatus'],
|
|
7
|
+
legal_name: [:string, nullable: true],
|
|
8
|
+
registration_number: [:string, nullable: true],
|
|
9
|
+
contact_email: [:string, nullable: true],
|
|
10
|
+
billing_email: [:string, nullable: true],
|
|
11
|
+
tax_remittance: :string,
|
|
12
|
+
payouts_schedule_interval: [:string, nullable: true],
|
|
13
|
+
minimum_payout_amount: [:string, nullable: true],
|
|
14
|
+
holiday_mode_until: [:string, nullable: true],
|
|
15
|
+
terms_accepted_at: [:string, nullable: true],
|
|
16
|
+
on_holiday: :boolean, sellable: :boolean,
|
|
17
|
+
products_count: :number,
|
|
18
|
+
default_currency: :string,
|
|
19
|
+
supported_currencies: [:string, multi: true],
|
|
20
|
+
preferred_timezone: [:string, nullable: true]
|
|
21
|
+
|
|
22
|
+
attributes :preferred_timezone,
|
|
23
|
+
:status, :legal_name, :registration_number,
|
|
24
|
+
:contact_email, :billing_email,
|
|
25
|
+
:tax_remittance, :payouts_schedule_interval,
|
|
26
|
+
holiday_mode_until: :iso8601,
|
|
27
|
+
terms_accepted_at: :iso8601,
|
|
28
|
+
created_at: :iso8601
|
|
29
|
+
|
|
30
|
+
attribute :minimum_payout_amount do |seller|
|
|
31
|
+
seller.minimum_payout_amount&.to_s
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Rebound from the inherited store declaration to this branch's own
|
|
35
|
+
# serializer: a seller reading their own profile gets the seller
|
|
36
|
+
# shape of a policy (with `created_at`), which is what the seller
|
|
37
|
+
# SDK's generated type and this branch's OpenAPI schema promise.
|
|
38
|
+
_attributes.delete(:policies)
|
|
39
|
+
many :policies,
|
|
40
|
+
resource: proc { Spree.api.seller_policy_serializer },
|
|
41
|
+
if: proc { expand?('policies') }
|
|
42
|
+
|
|
43
|
+
attribute :on_holiday do |seller|
|
|
44
|
+
seller.on_holiday?
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
attribute :sellable do |seller|
|
|
48
|
+
seller.sellable?
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# What this seller prices in. Theirs by way of the marketplace: a
|
|
52
|
+
# seller has no currency of their own, so the store's is the answer
|
|
53
|
+
# to "what does this amount mean".
|
|
54
|
+
attribute :default_currency do |seller|
|
|
55
|
+
seller.store&.default_currency
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
attribute :supported_currencies do |seller|
|
|
59
|
+
seller.store&.supported_currencies_list&.map(&:iso_code) || []
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
attribute :products_count do |seller|
|
|
63
|
+
seller.products.count
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
one :billing_address,
|
|
67
|
+
resource: proc { Spree.api.address_serializer },
|
|
68
|
+
if: proc { |seller| seller.billing_address.present? }
|
|
69
|
+
|
|
70
|
+
one :returns_address,
|
|
71
|
+
resource: proc { Spree.api.address_serializer },
|
|
72
|
+
if: proc { |seller| seller.returns_address.present? }
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Spree
|
|
4
|
+
module Api
|
|
5
|
+
module V3
|
|
6
|
+
module Seller
|
|
7
|
+
# One entry of a marketplace-owned vocabulary — why goods came back,
|
|
8
|
+
# or what went wrong with a delivery.
|
|
9
|
+
#
|
|
10
|
+
# One serializer for both, unlike the store and admin branches, which
|
|
11
|
+
# keep ReturnReason and ClaimReason apart so Typelizer emits a concrete
|
|
12
|
+
# type per endpoint. Here the two endpoints answer the same shape — a
|
|
13
|
+
# name and whether it is still offered — and the panel renders them
|
|
14
|
+
# through one picker, so a single `Reason` type is what the client
|
|
15
|
+
# actually wants. Read-only, so nothing here is writable.
|
|
16
|
+
class ReasonSerializer < V3::BaseSerializer
|
|
17
|
+
typelize name: :string, active: :boolean
|
|
18
|
+
|
|
19
|
+
attributes :name, :active
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Seller
|
|
5
|
+
class RequirementCustomFieldSerializer
|
|
6
|
+
include Alba::Resource
|
|
7
|
+
include Typelizer::DSL
|
|
8
|
+
|
|
9
|
+
typelize id: :string, key: :string, label: :string,
|
|
10
|
+
field_type: Spree::CustomField::FIELD_TYPE_TOKENS,
|
|
11
|
+
value: :any
|
|
12
|
+
|
|
13
|
+
attribute :id do |pair|
|
|
14
|
+
pair[:definition].prefixed_id
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
attribute :key do |pair|
|
|
18
|
+
pair[:definition].full_key
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
attribute :label do |pair|
|
|
22
|
+
pair[:definition].label
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
attribute :field_type do |pair|
|
|
26
|
+
pair[:definition].field_type
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
attribute :value do |pair|
|
|
30
|
+
pair[:custom_field]&.serialize_value
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Seller
|
|
5
|
+
class RequirementStatusSerializer
|
|
6
|
+
include Alba::Resource
|
|
7
|
+
include Typelizer::DSL
|
|
8
|
+
|
|
9
|
+
typelize id: :string, kind: [:string, comment: 'Requirement kind. Built-in: accept_terms, complete_profile, billing_address, returns_address, delivery_method, package_type, minimum_products, payout_account, required_custom_fields, policy, attestation, operator_review, document. Extensions may register more.'], name: :string,
|
|
10
|
+
description: [:string, nullable: true],
|
|
11
|
+
required: :boolean, position: :number, status: [:string, enum: Spree::SellerRequirementStatus::STATUSES],
|
|
12
|
+
blocking: :boolean, action_url: [:string, nullable: true],
|
|
13
|
+
blocker: ['{ state: string; message: string | null } | null'],
|
|
14
|
+
accepts_submissions: :boolean, requires_file: :boolean,
|
|
15
|
+
accepted_content_types: [:string, multi: true],
|
|
16
|
+
required_policy_name: [:string, nullable: true],
|
|
17
|
+
terms_html: [:string, nullable: true]
|
|
18
|
+
|
|
19
|
+
attributes :id, :kind, :name, :description, :required, :position, :status, :action_url, :blocker
|
|
20
|
+
|
|
21
|
+
attribute :blocking do |status|
|
|
22
|
+
status.blocking?
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
attribute :accepts_submissions do |status|
|
|
26
|
+
status.requirement.class.accepts_submissions?
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
attribute :requires_file do |status|
|
|
30
|
+
status.requirement.class.requires_file?
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
attribute :accepted_content_types do |status|
|
|
34
|
+
status.requirement.accepted_content_types
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# The document this line asks for, so the panel can offer to create
|
|
38
|
+
# exactly that policy. Null for every other kind.
|
|
39
|
+
attribute :required_policy_name do |status|
|
|
40
|
+
status.required_policy_name
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# The marketplace terms this line asks the seller to accept. Null
|
|
44
|
+
# for every other kind, and null while nothing has been written.
|
|
45
|
+
attribute :terms_html do |status|
|
|
46
|
+
status.terms_html
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
one :submission,
|
|
50
|
+
resource: proc { Spree.api.seller_requirement_submission_serializer },
|
|
51
|
+
if: proc { |status| status.submission.present? }
|
|
52
|
+
|
|
53
|
+
many :custom_fields,
|
|
54
|
+
resource: proc { Spree.api.seller_requirement_custom_field_serializer },
|
|
55
|
+
if: proc { |status| status.custom_fields.any? } do |status|
|
|
56
|
+
status.custom_fields
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Seller
|
|
5
|
+
class RequirementSubmissionSerializer < V3::BaseSerializer
|
|
6
|
+
typelize status: [:string, enum: Spree::SellerRequirementSubmission.statuses, enum_type_name: 'SellerRequirementSubmissionStatus'], note: [:string, nullable: true],
|
|
7
|
+
review_note: [:string, nullable: true],
|
|
8
|
+
reference: [:string, nullable: true],
|
|
9
|
+
reviewed_at: [:string, nullable: true],
|
|
10
|
+
file_url: [:string, nullable: true],
|
|
11
|
+
file_name: [:string, nullable: true]
|
|
12
|
+
|
|
13
|
+
attributes :status, :note, :review_note, :reference,
|
|
14
|
+
reviewed_at: :iso8601,
|
|
15
|
+
created_at: :iso8601,
|
|
16
|
+
updated_at: :iso8601
|
|
17
|
+
|
|
18
|
+
attribute :file_url do |submission|
|
|
19
|
+
next nil unless submission.file.attached?
|
|
20
|
+
|
|
21
|
+
Spree::Core::Engine.routes.url_helpers.download_api_v3_seller_requirement_submission_path(
|
|
22
|
+
id: submission.prefixed_id
|
|
23
|
+
)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
attribute :file_name do |submission|
|
|
27
|
+
submission.file.attached? ? submission.file.filename.to_s : nil
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Spree
|
|
4
|
+
module Api
|
|
5
|
+
module V3
|
|
6
|
+
module Seller
|
|
7
|
+
# One line of a return.
|
|
8
|
+
#
|
|
9
|
+
# Names what came back on the line itself: a variant carries a SKU and
|
|
10
|
+
# its option values but no product name, so a card built from the
|
|
11
|
+
# variant alone would show a bare id for anything unSKU'd.
|
|
12
|
+
class ReturnLineItemSerializer < V3::ReturnLineItemSerializer
|
|
13
|
+
typelize name: [:string, nullable: true]
|
|
14
|
+
|
|
15
|
+
attribute :name do |line|
|
|
16
|
+
line.line_item&.name || line.variant&.name
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
one :variant, resource: proc { Spree.api.seller_variant_serializer }, if: proc { expand?('variant') }
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|