spree_api 5.3.4 → 5.4.0.beta
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/README.md +71 -33
- data/Rakefile +25 -0
- data/app/controllers/concerns/spree/api/v3/api_key_authentication.rb +51 -0
- data/app/controllers/concerns/spree/api/v3/error_handler.rb +255 -0
- data/app/controllers/concerns/spree/api/v3/http_caching.rb +90 -0
- data/app/controllers/concerns/spree/api/v3/jwt_authentication.rb +95 -0
- data/app/controllers/concerns/spree/api/v3/locale_and_currency.rb +73 -0
- data/app/controllers/concerns/spree/api/v3/order_concern.rb +51 -0
- data/app/controllers/concerns/spree/api/v3/resource_serializer.rb +41 -0
- data/app/controllers/spree/api/v3/base_controller.rb +42 -0
- data/app/controllers/spree/api/v3/resource_controller.rb +210 -0
- data/app/controllers/spree/api/v3/store/auth_controller.rb +140 -0
- data/app/controllers/spree/api/v3/store/base_controller.rb +12 -0
- data/app/controllers/spree/api/v3/store/cart_controller.rb +82 -0
- data/app/controllers/spree/api/v3/store/countries_controller.rb +31 -0
- data/app/controllers/spree/api/v3/store/currencies_controller.rb +18 -0
- data/app/controllers/spree/api/v3/store/customer/account_controller.rb +38 -0
- data/app/controllers/spree/api/v3/store/customer/addresses_controller.rb +85 -0
- data/app/controllers/spree/api/v3/store/customer/credit_cards_controller.rb +31 -0
- data/app/controllers/spree/api/v3/store/customer/gift_cards_controller.rb +36 -0
- data/app/controllers/spree/api/v3/store/customer/orders_controller.rb +35 -0
- data/app/controllers/spree/api/v3/store/customer/payment_setup_sessions_controller.rb +83 -0
- data/app/controllers/spree/api/v3/store/digitals_controller.rb +37 -0
- data/app/controllers/spree/api/v3/store/locales_controller.rb +24 -0
- data/app/controllers/spree/api/v3/store/orders/coupon_codes_controller.rb +68 -0
- data/app/controllers/spree/api/v3/store/orders/line_items_controller.rb +87 -0
- data/app/controllers/spree/api/v3/store/orders/payment_methods_controller.rb +43 -0
- data/app/controllers/spree/api/v3/store/orders/payment_sessions_controller.rb +96 -0
- data/app/controllers/spree/api/v3/store/orders/payments_controller.rb +45 -0
- data/app/controllers/spree/api/v3/store/orders/shipments_controller.rb +53 -0
- data/app/controllers/spree/api/v3/store/orders/store_credits_controller.rb +42 -0
- data/app/controllers/spree/api/v3/store/orders_controller.rb +125 -0
- data/app/controllers/spree/api/v3/store/products/filters_controller.rb +38 -0
- data/app/controllers/spree/api/v3/store/products_controller.rb +74 -0
- data/app/controllers/spree/api/v3/store/resource_controller.rb +12 -0
- data/app/controllers/spree/api/v3/store/stores_controller.rb +26 -0
- data/app/controllers/spree/api/v3/store/taxonomies_controller.rb +19 -0
- data/app/controllers/spree/api/v3/store/taxons/products_controller.rb +37 -0
- data/app/controllers/spree/api/v3/store/taxons_controller.rb +34 -0
- data/app/controllers/spree/api/v3/store/wishlist_items_controller.rb +33 -0
- data/app/controllers/spree/api/v3/store/wishlists_controller.rb +41 -0
- data/app/serializers/spree/api/v3/address_serializer.rb +22 -0
- data/app/serializers/spree/api/v3/admin/customer_serializer.rb +43 -0
- data/app/serializers/spree/api/v3/admin/metafield_serializer.rb +15 -0
- data/app/serializers/spree/api/v3/admin/order_serializer.rb +39 -0
- data/app/serializers/spree/api/v3/admin/price_serializer.rb +21 -0
- data/app/serializers/spree/api/v3/admin/product_serializer.rb +47 -0
- data/app/serializers/spree/api/v3/admin/taxon_serializer.rb +20 -0
- data/app/serializers/spree/api/v3/admin/taxonomy_serializer.rb +15 -0
- data/app/serializers/spree/api/v3/admin/variant_serializer.rb +44 -0
- data/app/serializers/spree/api/v3/asset_serializer.rb +20 -0
- data/app/serializers/spree/api/v3/base_serializer.rb +98 -0
- data/app/serializers/spree/api/v3/country_serializer.rb +35 -0
- data/app/serializers/spree/api/v3/credit_card_serializer.rb +12 -0
- data/app/serializers/spree/api/v3/currency_serializer.rb +14 -0
- data/app/serializers/spree/api/v3/customer_return_serializer.rb +17 -0
- data/app/serializers/spree/api/v3/customer_serializer.rb +19 -0
- data/app/serializers/spree/api/v3/digital_link_serializer.rb +30 -0
- data/app/serializers/spree/api/v3/digital_serializer.rb +17 -0
- data/app/serializers/spree/api/v3/export_serializer.rb +19 -0
- data/app/serializers/spree/api/v3/gift_card_batch_serializer.rb +28 -0
- data/app/serializers/spree/api/v3/gift_card_serializer.rb +78 -0
- data/app/serializers/spree/api/v3/image_serializer.rb +43 -0
- data/app/serializers/spree/api/v3/import_row_serializer.rb +24 -0
- data/app/serializers/spree/api/v3/import_serializer.rb +32 -0
- data/app/serializers/spree/api/v3/invitation_serializer.rb +47 -0
- data/app/serializers/spree/api/v3/line_item_serializer.rb +48 -0
- data/app/serializers/spree/api/v3/locale_serializer.rb +14 -0
- data/app/serializers/spree/{v2/storefront → api/v3}/metafield_serializer.rb +5 -3
- data/app/serializers/spree/api/v3/newsletter_subscriber_serializer.rb +27 -0
- data/app/serializers/spree/api/v3/option_type_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/option_value_serializer.rb +24 -0
- data/app/serializers/spree/api/v3/order_promotion_serializer.rb +16 -0
- data/app/serializers/spree/api/v3/order_serializer.rb +39 -0
- data/app/serializers/spree/api/v3/payment_method_serializer.rb +15 -0
- data/app/serializers/spree/api/v3/payment_serializer.rb +54 -0
- data/app/serializers/spree/api/v3/payment_session_serializer.rb +32 -0
- data/app/serializers/spree/api/v3/payment_setup_session_serializer.rb +33 -0
- data/app/serializers/spree/api/v3/payment_source_serializer.rb +18 -0
- data/app/serializers/spree/api/v3/post_category_serializer.rb +13 -0
- data/app/serializers/spree/api/v3/post_serializer.rb +25 -0
- data/app/serializers/spree/api/v3/price_serializer.rb +34 -0
- data/app/serializers/spree/api/v3/product_serializer.rb +108 -0
- data/app/serializers/spree/api/v3/promotion_serializer.rb +28 -0
- data/app/serializers/spree/api/v3/refund_serializer.rb +31 -0
- data/app/serializers/spree/api/v3/reimbursement_serializer.rb +28 -0
- data/app/serializers/spree/api/v3/report_serializer.rb +29 -0
- data/app/serializers/spree/api/v3/return_authorization_serializer.rb +31 -0
- data/app/serializers/spree/api/v3/return_item_serializer.rb +53 -0
- data/app/serializers/spree/api/v3/shipment_serializer.rb +19 -0
- data/app/serializers/spree/api/v3/shipping_method_serializer.rb +11 -0
- data/app/serializers/spree/api/v3/shipping_rate_serializer.rb +26 -0
- data/app/serializers/spree/api/v3/state_serializer.rb +14 -0
- data/app/serializers/spree/api/v3/stock_item_serializer.rb +23 -0
- data/app/serializers/spree/api/v3/stock_location_serializer.rb +18 -0
- data/app/serializers/spree/api/v3/stock_movement_serializer.rb +24 -0
- data/app/serializers/spree/api/v3/stock_transfer_serializer.rb +25 -0
- data/app/serializers/spree/api/v3/store_credit_serializer.rb +37 -0
- data/app/serializers/spree/api/v3/store_serializer.rb +38 -0
- data/app/serializers/spree/api/v3/taxon_serializer.rb +78 -0
- data/app/serializers/spree/api/v3/taxonomy_serializer.rb +33 -0
- data/app/serializers/spree/api/v3/variant_serializer.rb +86 -0
- data/app/serializers/spree/api/v3/wished_item_serializer.rb +22 -0
- data/app/serializers/spree/api/v3/wishlist_serializer.rb +25 -0
- data/app/services/spree/api/v3/filters_aggregator.rb +156 -0
- data/app/services/spree/api/v3/orders/update.rb +103 -0
- data/config/initializers/alba.rb +5 -0
- data/config/initializers/pagy.rb +10 -0
- data/config/initializers/typelizer.rb +25 -0
- data/config/locales/en.yml +1 -0
- data/config/routes.rb +63 -196
- data/lib/spree/api/dependencies.rb +68 -0
- data/lib/spree/api/engine.rb +0 -5
- data/lib/spree/api/openapi/schema_helper.rb +177 -0
- data/lib/spree/api/testing_support/factories.rb +1 -3
- data/lib/spree/api/testing_support/v3/base.rb +118 -0
- data/lib/spree/api.rb +7 -4
- metadata +131 -264
- data/LICENSE.md +0 -57
- data/app/controllers/concerns/spree/api/v2/caching.rb +0 -40
- data/app/controllers/concerns/spree/api/v2/coupon_codes_helper.rb +0 -29
- data/app/controllers/concerns/spree/api/v2/number_resource.rb +0 -11
- data/app/controllers/concerns/spree/api/v2/platform/nested_set_reposition_concern.rb +0 -37
- data/app/controllers/concerns/spree/api/v2/platform/promotion_calculator_params.rb +0 -17
- data/app/controllers/concerns/spree/api/v2/platform/promotion_rule_params.rb +0 -16
- data/app/controllers/concerns/spree/api/v2/product_list_includes.rb +0 -21
- data/app/controllers/concerns/spree/api/v2/storefront/metadata_controller_concern.rb +0 -18
- data/app/controllers/concerns/spree/api/v2/storefront/order_concern.rb +0 -49
- data/app/controllers/spree/api/v2/base_controller.rb +0 -233
- data/app/controllers/spree/api/v2/data_feeds/google_controller.rb +0 -24
- data/app/controllers/spree/api/v2/platform/addresses_controller.rb +0 -23
- data/app/controllers/spree/api/v2/platform/adjustments_controller.rb +0 -23
- data/app/controllers/spree/api/v2/platform/classifications_controller.rb +0 -26
- data/app/controllers/spree/api/v2/platform/countries_controller.rb +0 -23
- data/app/controllers/spree/api/v2/platform/data_feeds_controller.rb +0 -19
- data/app/controllers/spree/api/v2/platform/digital_links_controller.rb +0 -29
- data/app/controllers/spree/api/v2/platform/digitals_controller.rb +0 -23
- data/app/controllers/spree/api/v2/platform/gift_cards_controller.rb +0 -23
- data/app/controllers/spree/api/v2/platform/line_items_controller.rb +0 -63
- data/app/controllers/spree/api/v2/platform/option_types_controller.rb +0 -19
- data/app/controllers/spree/api/v2/platform/option_values_controller.rb +0 -23
- data/app/controllers/spree/api/v2/platform/orders_controller.rb +0 -167
- data/app/controllers/spree/api/v2/platform/payment_methods_controller.rb +0 -31
- data/app/controllers/spree/api/v2/platform/payments_controller.rb +0 -21
- data/app/controllers/spree/api/v2/platform/products_controller.rb +0 -41
- data/app/controllers/spree/api/v2/platform/promotion_actions_controller.rb +0 -34
- data/app/controllers/spree/api/v2/platform/promotion_categories_controller.rb +0 -23
- data/app/controllers/spree/api/v2/platform/promotion_rules_controller.rb +0 -29
- data/app/controllers/spree/api/v2/platform/promotions_controller.rb +0 -35
- data/app/controllers/spree/api/v2/platform/resource_controller.rb +0 -154
- data/app/controllers/spree/api/v2/platform/roles_controller.rb +0 -19
- data/app/controllers/spree/api/v2/platform/shipments_controller.rb +0 -147
- data/app/controllers/spree/api/v2/platform/shipping_categories_controller.rb +0 -19
- data/app/controllers/spree/api/v2/platform/shipping_methods_controller.rb +0 -28
- data/app/controllers/spree/api/v2/platform/states_controller.rb +0 -23
- data/app/controllers/spree/api/v2/platform/stock_items_controller.rb +0 -23
- data/app/controllers/spree/api/v2/platform/stock_locations_controller.rb +0 -23
- data/app/controllers/spree/api/v2/platform/store_credit_categories_controller.rb +0 -19
- data/app/controllers/spree/api/v2/platform/store_credit_types_controller.rb +0 -19
- data/app/controllers/spree/api/v2/platform/store_credits_controller.rb +0 -23
- data/app/controllers/spree/api/v2/platform/tax_categories_controller.rb +0 -23
- data/app/controllers/spree/api/v2/platform/tax_rates_controller.rb +0 -27
- data/app/controllers/spree/api/v2/platform/taxonomies_controller.rb +0 -23
- data/app/controllers/spree/api/v2/platform/taxons_controller.rb +0 -59
- data/app/controllers/spree/api/v2/platform/users_controller.rb +0 -37
- data/app/controllers/spree/api/v2/platform/variants_controller.rb +0 -23
- data/app/controllers/spree/api/v2/platform/wished_items_controller.rb +0 -23
- data/app/controllers/spree/api/v2/platform/wishlists_controller.rb +0 -23
- data/app/controllers/spree/api/v2/platform/zones_controller.rb +0 -23
- data/app/controllers/spree/api/v2/resource_controller.rb +0 -79
- data/app/controllers/spree/api/v2/storefront/account/addresses_controller.rb +0 -77
- data/app/controllers/spree/api/v2/storefront/account/credit_cards_controller.rb +0 -52
- data/app/controllers/spree/api/v2/storefront/account/orders_controller.rb +0 -50
- data/app/controllers/spree/api/v2/storefront/account_controller.rb +0 -52
- data/app/controllers/spree/api/v2/storefront/cart_controller.rb +0 -246
- data/app/controllers/spree/api/v2/storefront/checkout_controller.rb +0 -183
- data/app/controllers/spree/api/v2/storefront/countries_controller.rb +0 -57
- data/app/controllers/spree/api/v2/storefront/digitals_controller.rb +0 -58
- data/app/controllers/spree/api/v2/storefront/order_status_controller.rb +0 -34
- data/app/controllers/spree/api/v2/storefront/policies_controller.rb +0 -31
- data/app/controllers/spree/api/v2/storefront/post_categories_controller.rb +0 -35
- data/app/controllers/spree/api/v2/storefront/posts_controller.rb +0 -51
- data/app/controllers/spree/api/v2/storefront/products_controller.rb +0 -66
- data/app/controllers/spree/api/v2/storefront/stores_controller.rb +0 -27
- data/app/controllers/spree/api/v2/storefront/taxons_controller.rb +0 -51
- data/app/controllers/spree/api/v2/storefront/variants_controller.rb +0 -41
- data/app/controllers/spree/api/v2/storefront/wishlists_controller.rb +0 -214
- data/app/helpers/spree/api/v2/collection_options_helpers.rb +0 -46
- data/app/helpers/spree/api/v2/display_money_helper.rb +0 -63
- data/app/helpers/spree/api/v2/store_media_serializer_images_concern.rb +0 -30
- data/app/models/concerns/spree/user_api_authentication.rb +0 -19
- data/app/models/concerns/spree/user_api_methods.rb +0 -7
- data/app/models/spree/oauth_access_grant.rb +0 -7
- data/app/models/spree/oauth_access_token.rb +0 -7
- data/app/models/spree/oauth_application.rb +0 -22
- data/app/paginators/spree/api/paginate.rb +0 -68
- data/app/presenters/spree/api/products/filters_presenter.rb +0 -39
- data/app/serializers/concerns/spree/api/v2/image_transformation_concern.rb +0 -15
- data/app/serializers/concerns/spree/api/v2/public_metafields_concern.rb +0 -15
- data/app/serializers/concerns/spree/api/v2/resource_serializer_concern.rb +0 -42
- data/app/serializers/concerns/spree/api/v2/taxon_image_transformation_concern.rb +0 -15
- data/app/serializers/spree/api/v2/base_serializer.rb +0 -43
- data/app/serializers/spree/api/v2/platform/address_serializer.rb +0 -15
- data/app/serializers/spree/api/v2/platform/adjustment_serializer.rb +0 -20
- data/app/serializers/spree/api/v2/platform/admin_user_serializer.rb +0 -11
- data/app/serializers/spree/api/v2/platform/asset_serializer.rb +0 -13
- data/app/serializers/spree/api/v2/platform/base_serializer.rb +0 -10
- data/app/serializers/spree/api/v2/platform/calculator_serializer.rb +0 -17
- data/app/serializers/spree/api/v2/platform/classification_serializer.rb +0 -14
- data/app/serializers/spree/api/v2/platform/country_serializer.rb +0 -13
- data/app/serializers/spree/api/v2/platform/credit_card_serializer.rb +0 -14
- data/app/serializers/spree/api/v2/platform/customer_return_serializer.rb +0 -17
- data/app/serializers/spree/api/v2/platform/data_feed_serializer.rb +0 -13
- data/app/serializers/spree/api/v2/platform/digital_link_serializer.rb +0 -16
- data/app/serializers/spree/api/v2/platform/digital_serializer.rb +0 -29
- data/app/serializers/spree/api/v2/platform/gift_card_serializer.rb +0 -17
- data/app/serializers/spree/api/v2/platform/image_serializer.rb +0 -17
- data/app/serializers/spree/api/v2/platform/inventory_unit_serializer.rb +0 -19
- data/app/serializers/spree/api/v2/platform/line_item_serializer.rb +0 -19
- data/app/serializers/spree/api/v2/platform/log_entry_serializer.rb +0 -13
- data/app/serializers/spree/api/v2/platform/metafield_serializer.rb +0 -21
- data/app/serializers/spree/api/v2/platform/option_type_serializer.rb +0 -13
- data/app/serializers/spree/api/v2/platform/option_value_serializer.rb +0 -13
- data/app/serializers/spree/api/v2/platform/order_promotion_serializer.rb +0 -14
- data/app/serializers/spree/api/v2/platform/order_serializer.rb +0 -31
- data/app/serializers/spree/api/v2/platform/payment_capture_event_serializer.rb +0 -13
- data/app/serializers/spree/api/v2/platform/payment_method_serializer.rb +0 -18
- data/app/serializers/spree/api/v2/platform/payment_serializer.rb +0 -22
- data/app/serializers/spree/api/v2/platform/payment_source_serializer.rb +0 -12
- data/app/serializers/spree/api/v2/platform/price_serializer.rb +0 -19
- data/app/serializers/spree/api/v2/platform/product_property_serializer.rb +0 -11
- data/app/serializers/spree/api/v2/platform/product_serializer.rb +0 -90
- data/app/serializers/spree/api/v2/platform/promotion_action_line_item_serializer.rb +0 -14
- data/app/serializers/spree/api/v2/platform/promotion_action_serializer.rb +0 -19
- data/app/serializers/spree/api/v2/platform/promotion_category_serializer.rb +0 -13
- data/app/serializers/spree/api/v2/platform/promotion_rule_serializer.rb +0 -21
- data/app/serializers/spree/api/v2/platform/promotion_serializer.rb +0 -17
- data/app/serializers/spree/api/v2/platform/property_serializer.rb +0 -11
- data/app/serializers/spree/api/v2/platform/prototype_serializer.rb +0 -15
- data/app/serializers/spree/api/v2/platform/refund_reason_serializer.rb +0 -11
- data/app/serializers/spree/api/v2/platform/refund_serializer.rb +0 -17
- data/app/serializers/spree/api/v2/platform/reimbursement_credit_serializer.rb +0 -10
- data/app/serializers/spree/api/v2/platform/reimbursement_serializer.rb +0 -19
- data/app/serializers/spree/api/v2/platform/reimbursement_type_serializer.rb +0 -11
- data/app/serializers/spree/api/v2/platform/return_authorization_reason_serializer.rb +0 -11
- data/app/serializers/spree/api/v2/platform/return_authorization_serializer.rb +0 -17
- data/app/serializers/spree/api/v2/platform/return_item_serializer.rb +0 -16
- data/app/serializers/spree/api/v2/platform/role_serializer.rb +0 -11
- data/app/serializers/spree/api/v2/platform/shipment_serializer.rb +0 -22
- data/app/serializers/spree/api/v2/platform/shipping_category_serializer.rb +0 -11
- data/app/serializers/spree/api/v2/platform/shipping_method_serializer.rb +0 -16
- data/app/serializers/spree/api/v2/platform/shipping_rate_serializer.rb +0 -15
- data/app/serializers/spree/api/v2/platform/state_change_serializer.rb +0 -13
- data/app/serializers/spree/api/v2/platform/state_serializer.rb +0 -13
- data/app/serializers/spree/api/v2/platform/stock_item_serializer.rb +0 -18
- data/app/serializers/spree/api/v2/platform/stock_location_serializer.rb +0 -14
- data/app/serializers/spree/api/v2/platform/stock_movement_serializer.rb +0 -11
- data/app/serializers/spree/api/v2/platform/stock_transfer_serializer.rb +0 -15
- data/app/serializers/spree/api/v2/platform/store_credit_category_serializer.rb +0 -12
- data/app/serializers/spree/api/v2/platform/store_credit_event_serializer.rb +0 -14
- data/app/serializers/spree/api/v2/platform/store_credit_serializer.rb +0 -18
- data/app/serializers/spree/api/v2/platform/store_credit_type_serializer.rb +0 -12
- data/app/serializers/spree/api/v2/platform/store_serializer.rb +0 -14
- data/app/serializers/spree/api/v2/platform/tax_category_serializer.rb +0 -13
- data/app/serializers/spree/api/v2/platform/tax_rate_serializer.rb +0 -14
- data/app/serializers/spree/api/v2/platform/taxon_image_serializer.rb +0 -15
- data/app/serializers/spree/api/v2/platform/taxon_serializer.rb +0 -47
- data/app/serializers/spree/api/v2/platform/taxonomy_serializer.rb +0 -14
- data/app/serializers/spree/api/v2/platform/user_serializer.rb +0 -37
- data/app/serializers/spree/api/v2/platform/variant_serializer.rb +0 -66
- data/app/serializers/spree/api/v2/platform/wished_item_serializer.rb +0 -29
- data/app/serializers/spree/api/v2/platform/wishlist_serializer.rb +0 -19
- data/app/serializers/spree/api/v2/platform/zone_member_serializer.rb +0 -13
- data/app/serializers/spree/api/v2/platform/zone_serializer.rb +0 -13
- data/app/serializers/spree/v2/storefront/address_serializer.rb +0 -22
- data/app/serializers/spree/v2/storefront/base_serializer.rb +0 -10
- data/app/serializers/spree/v2/storefront/cart_serializer.rb +0 -67
- data/app/serializers/spree/v2/storefront/country_serializer.rb +0 -24
- data/app/serializers/spree/v2/storefront/credit_card_serializer.rb +0 -15
- data/app/serializers/spree/v2/storefront/digital_link_serializer.rb +0 -11
- data/app/serializers/spree/v2/storefront/estimated_shipping_rate_serializer.rb +0 -35
- data/app/serializers/spree/v2/storefront/gift_card_serializer.rb +0 -16
- data/app/serializers/spree/v2/storefront/image_serializer.rb +0 -13
- data/app/serializers/spree/v2/storefront/line_item_serializer.rb +0 -23
- data/app/serializers/spree/v2/storefront/option_type_serializer.rb +0 -15
- data/app/serializers/spree/v2/storefront/option_value_serializer.rb +0 -13
- data/app/serializers/spree/v2/storefront/order_promotion_serializer.rb +0 -14
- data/app/serializers/spree/v2/storefront/order_serializer.rb +0 -11
- data/app/serializers/spree/v2/storefront/payment_method_serializer.rb +0 -17
- data/app/serializers/spree/v2/storefront/payment_serializer.rb +0 -20
- data/app/serializers/spree/v2/storefront/payment_source_serializer.rb +0 -12
- data/app/serializers/spree/v2/storefront/policy_serializer.rb +0 -19
- data/app/serializers/spree/v2/storefront/post_category_serializer.rb +0 -23
- data/app/serializers/spree/v2/storefront/post_serializer.rb +0 -51
- data/app/serializers/spree/v2/storefront/product_property_serializer.rb +0 -19
- data/app/serializers/spree/v2/storefront/product_serializer.rb +0 -92
- data/app/serializers/spree/v2/storefront/shipment_serializer.rb +0 -26
- data/app/serializers/spree/v2/storefront/shipping_category_serializer.rb +0 -10
- data/app/serializers/spree/v2/storefront/shipping_method_serializer.rb +0 -12
- data/app/serializers/spree/v2/storefront/shipping_rate_serializer.rb +0 -26
- data/app/serializers/spree/v2/storefront/state_serializer.rb +0 -11
- data/app/serializers/spree/v2/storefront/stock_location_serializer.rb +0 -11
- data/app/serializers/spree/v2/storefront/store_credit_category_serializer.rb +0 -11
- data/app/serializers/spree/v2/storefront/store_credit_event_serializer.rb +0 -15
- data/app/serializers/spree/v2/storefront/store_credit_serializer.rb +0 -19
- data/app/serializers/spree/v2/storefront/store_credit_type_serializer.rb +0 -11
- data/app/serializers/spree/v2/storefront/store_serializer.rb +0 -18
- data/app/serializers/spree/v2/storefront/taxon_image_serializer.rb +0 -13
- data/app/serializers/spree/v2/storefront/taxon_serializer.rb +0 -55
- data/app/serializers/spree/v2/storefront/taxonomy_serializer.rb +0 -13
- data/app/serializers/spree/v2/storefront/user_serializer.rb +0 -33
- data/app/serializers/spree/v2/storefront/variant_serializer.rb +0 -58
- data/app/serializers/spree/v2/storefront/wished_item_serializer.rb +0 -29
- data/app/serializers/spree/v2/storefront/wishlist_serializer.rb +0 -17
- data/config/initializers/doorkeeper.rb +0 -50
- data/config/initializers/json_api_mime_types.rb +0 -8
- data/config/initializers/user_class_extensions.rb +0 -7
- data/db/migrate/20100107141738_add_api_key_to_spree_users.rb +0 -7
- data/db/migrate/20120411123334_resize_api_key_field.rb +0 -7
- data/db/migrate/20120530054546_rename_api_key_to_spree_api_key.rb +0 -7
- data/db/migrate/20131017162334_add_index_to_user_spree_api_key.rb +0 -7
- data/db/migrate/20180320110726_create_doorkeeper_tables.rb +0 -69
- data/db/migrate/20210727102516_change_integer_id_columns_type.rb +0 -9
- data/db/migrate/20210919183228_enable_polymorphic_resource_owner.rb +0 -21
- data/lib/generators/spree/api/install/install_generator.rb +0 -24
- data/lib/spree/api/testing_support/factories/oauth_application_factory.rb +0 -6
- data/lib/spree/api/testing_support/serializers.rb +0 -15
- data/lib/spree/api/testing_support/v2/base.rb +0 -13
- data/lib/spree/api/testing_support/v2/current_order.rb +0 -116
- data/lib/spree/api/testing_support/v2/platform_contexts.rb +0 -272
- data/lib/spree/api/testing_support/v2/serializers_params.rb +0 -16
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Store
|
|
5
|
+
class WishlistsController < ResourceController
|
|
6
|
+
prepend_before_action :require_authentication!
|
|
7
|
+
|
|
8
|
+
# POST /api/v3/store/wishlists
|
|
9
|
+
def create
|
|
10
|
+
@resource = current_user.wishlists.build(permitted_params)
|
|
11
|
+
@resource.store = current_store
|
|
12
|
+
|
|
13
|
+
if @resource.save
|
|
14
|
+
render json: serialize_resource(@resource), status: :created
|
|
15
|
+
else
|
|
16
|
+
render_errors(@resource.errors)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
protected
|
|
21
|
+
|
|
22
|
+
def scope
|
|
23
|
+
current_user.wishlists.for_store(current_store)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def model_class
|
|
27
|
+
Spree::Wishlist
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def serializer_class
|
|
31
|
+
Spree.api.wishlist_serializer
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def permitted_params
|
|
35
|
+
params.permit(Spree::PermittedAttributes.wishlist_attributes)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
class AddressSerializer < BaseSerializer
|
|
5
|
+
typelize firstname: [:string, nullable: true], lastname: [:string, nullable: true], full_name: :string,
|
|
6
|
+
address1: [:string, nullable: true], address2: [:string, nullable: true],
|
|
7
|
+
city: [:string, nullable: true], zipcode: [:string, nullable: true], phone: [:string, nullable: true],
|
|
8
|
+
company: [:string, nullable: true], state_abbr: [:string, nullable: true], state_name: [:string, nullable: true],
|
|
9
|
+
state_text: [:string, nullable: true], country_iso: :string, country_name: :string
|
|
10
|
+
|
|
11
|
+
attributes :firstname, :lastname, :full_name, :address1, :address2,
|
|
12
|
+
:city, :zipcode, :phone, :company, :country_name, :country_iso, :state_text,
|
|
13
|
+
:state_abbr
|
|
14
|
+
|
|
15
|
+
# State name - used for countries without predefined states
|
|
16
|
+
attribute :state_name do |address|
|
|
17
|
+
address.state_name.presence || address.state&.name
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# Admin API Customer Serializer
|
|
6
|
+
# Full customer data including admin-only fields
|
|
7
|
+
class CustomerSerializer < V3::CustomerSerializer
|
|
8
|
+
typelize phone: [:string, nullable: true], login: [:string, nullable: true],
|
|
9
|
+
accepts_email_marketing: :boolean,
|
|
10
|
+
last_sign_in_at: [:string, nullable: true], current_sign_in_at: [:string, nullable: true],
|
|
11
|
+
sign_in_count: :number, failed_attempts: :number,
|
|
12
|
+
last_sign_in_ip: [:string, nullable: true], current_sign_in_ip: [:string, nullable: true]
|
|
13
|
+
|
|
14
|
+
# Admin-only attributes
|
|
15
|
+
attributes :phone, :login, :accepts_email_marketing,
|
|
16
|
+
last_sign_in_at: :iso8601, current_sign_in_at: :iso8601
|
|
17
|
+
|
|
18
|
+
attribute :sign_in_count do |user|
|
|
19
|
+
user.sign_in_count
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
attribute :failed_attempts do |user|
|
|
23
|
+
user.failed_attempts
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
attribute :last_sign_in_ip do |user|
|
|
27
|
+
user.last_sign_in_ip
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
attribute :current_sign_in_ip do |user|
|
|
31
|
+
user.current_sign_in_ip
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
many :orders,
|
|
35
|
+
resource: Spree.api.admin_order_serializer,
|
|
36
|
+
if: proc { params[:includes]&.include?('orders') }
|
|
37
|
+
|
|
38
|
+
# TODO: Add store_credits association when Admin API is implemented
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# Admin API Metafield Serializer
|
|
6
|
+
# Full metafield data including admin-only fields
|
|
7
|
+
class MetafieldSerializer < V3::MetafieldSerializer
|
|
8
|
+
typelize display_on: :string
|
|
9
|
+
|
|
10
|
+
attributes :display_on
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# Admin API Order Serializer
|
|
6
|
+
# Full order data including admin-only fields
|
|
7
|
+
class OrderSerializer < V3::OrderSerializer
|
|
8
|
+
|
|
9
|
+
typelize channel: [:string, nullable: true], last_ip_address: [:string, nullable: true],
|
|
10
|
+
considered_risky: :boolean, confirmation_delivered: :boolean,
|
|
11
|
+
store_owner_notification_delivered: :boolean,
|
|
12
|
+
internal_note: [:string, nullable: true], approver_id: [:string, nullable: true],
|
|
13
|
+
canceler_id: [:string, nullable: true], created_by_id: [:string, nullable: true],
|
|
14
|
+
canceled_at: [:string, nullable: true], approved_at: [:string, nullable: true]
|
|
15
|
+
|
|
16
|
+
# Admin-only attributes
|
|
17
|
+
attributes :channel, :last_ip_address, :considered_risky,
|
|
18
|
+
:confirmation_delivered, :store_owner_notification_delivered,
|
|
19
|
+
:internal_note, :approver_id,
|
|
20
|
+
canceled_at: :iso8601, approved_at: :iso8601
|
|
21
|
+
|
|
22
|
+
attribute :canceler_id do |order|
|
|
23
|
+
order.canceler_id
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
attribute :created_by_id do |order|
|
|
27
|
+
order.created_by_id
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
one :user,
|
|
31
|
+
resource: Spree.api.admin_customer_serializer,
|
|
32
|
+
if: proc { params[:includes]&.include?('user') }
|
|
33
|
+
|
|
34
|
+
# TODO: Add adjustments associations when Admin API is implemented
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# Admin API Price Serializer
|
|
6
|
+
# Extends Store Price Serializer with admin-only fields
|
|
7
|
+
class PriceSerializer < V3::PriceSerializer
|
|
8
|
+
typelize variant_id: [:string, nullable: true],
|
|
9
|
+
created_at: :string,
|
|
10
|
+
updated_at: :string
|
|
11
|
+
|
|
12
|
+
attribute :variant_id do |price|
|
|
13
|
+
price&.variant&.prefixed_id
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
attributes created_at: :iso8601, updated_at: :iso8601
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# Admin API Product Serializer
|
|
6
|
+
# Full product data including admin-only fields
|
|
7
|
+
# Extends the store serializer with additional attributes
|
|
8
|
+
class ProductSerializer < V3::ProductSerializer
|
|
9
|
+
|
|
10
|
+
# Additional type hints for admin-only computed attributes
|
|
11
|
+
typelize status: :string, make_active_at: [:string, nullable: true], discontinue_on: [:string, nullable: true],
|
|
12
|
+
cost_price: [:number, nullable: true], cost_currency: [:string, nullable: true],
|
|
13
|
+
deleted_at: [:string, nullable: true]
|
|
14
|
+
|
|
15
|
+
# Admin-only attributes
|
|
16
|
+
attributes :status, :make_active_at, :discontinue_on, deleted_at: :iso8601
|
|
17
|
+
|
|
18
|
+
attribute :cost_price do |product|
|
|
19
|
+
product.master&.cost_price&.to_f
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
attribute :cost_currency do |product|
|
|
23
|
+
product.master&.cost_currency
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Admin uses admin variant serializer
|
|
27
|
+
many :variants,
|
|
28
|
+
resource: Spree.api.admin_variant_serializer,
|
|
29
|
+
if: proc { params[:includes]&.include?('variants') }
|
|
30
|
+
|
|
31
|
+
one :default_variant,
|
|
32
|
+
resource: Spree.api.admin_variant_serializer,
|
|
33
|
+
if: proc { params[:includes]&.include?('default_variant') }
|
|
34
|
+
|
|
35
|
+
one :master,
|
|
36
|
+
key: :master_variant,
|
|
37
|
+
resource: Spree.api.admin_variant_serializer,
|
|
38
|
+
if: proc { params[:includes]&.include?('master_variant') }
|
|
39
|
+
|
|
40
|
+
many :metafields,
|
|
41
|
+
resource: Spree.api.admin_metafield_serializer,
|
|
42
|
+
if: proc { params[:includes]&.include?('metafields') }
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# Admin API Taxon Serializer
|
|
6
|
+
# Full taxon data including admin-only fields
|
|
7
|
+
class TaxonSerializer < V3::TaxonSerializer
|
|
8
|
+
typelize lft: :number, rgt: :number
|
|
9
|
+
|
|
10
|
+
# Nested set columns for tree operations
|
|
11
|
+
attributes :lft, :rgt
|
|
12
|
+
|
|
13
|
+
many :metafields,
|
|
14
|
+
resource: Spree.api.admin_metafield_serializer,
|
|
15
|
+
if: proc { params[:includes]&.include?('metafields') }
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# Admin API Taxonomy Serializer
|
|
6
|
+
# Full taxonomy data including admin-only fields
|
|
7
|
+
class TaxonomySerializer < V3::TaxonomySerializer
|
|
8
|
+
many :metafields,
|
|
9
|
+
resource: Spree.api.admin_metafield_serializer,
|
|
10
|
+
if: proc { params[:includes]&.include?('metafields') }
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
module Admin
|
|
5
|
+
# Admin API Variant Serializer
|
|
6
|
+
# Full variant data including admin-only fields
|
|
7
|
+
class VariantSerializer < V3::VariantSerializer
|
|
8
|
+
|
|
9
|
+
# Additional type hints for admin-only attributes
|
|
10
|
+
typelize position: :number, tax_category_id: [:string, nullable: true],
|
|
11
|
+
cost_price: [:number, nullable: true], cost_currency: [:string, nullable: true],
|
|
12
|
+
total_on_hand: [:number, nullable: true],
|
|
13
|
+
deleted_at: [:string, nullable: true]
|
|
14
|
+
|
|
15
|
+
# Admin-only attributes
|
|
16
|
+
attributes :position, :tax_category_id, deleted_at: :iso8601
|
|
17
|
+
|
|
18
|
+
attribute :cost_price do |variant|
|
|
19
|
+
variant.cost_price&.to_f
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
attribute :cost_currency do |variant|
|
|
23
|
+
variant.cost_currency
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
attribute :total_on_hand do |variant|
|
|
27
|
+
variant.total_on_hand
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# All prices for this variant (for admin management)
|
|
31
|
+
many :prices,
|
|
32
|
+
resource: Spree.api.admin_price_serializer,
|
|
33
|
+
if: proc { params[:includes]&.include?('prices') }
|
|
34
|
+
|
|
35
|
+
many :metafields,
|
|
36
|
+
resource: Spree.api.admin_metafield_serializer,
|
|
37
|
+
if: proc { params[:includes]&.include?('metafields') }
|
|
38
|
+
|
|
39
|
+
# TODO: Add stock_items association when Admin API is implemented
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Spree
|
|
4
|
+
module Api
|
|
5
|
+
module V3
|
|
6
|
+
class AssetSerializer < BaseSerializer
|
|
7
|
+
typelize type: [:string, nullable: true], viewable_type: :string,
|
|
8
|
+
viewable_id: :string, position: [:number, nullable: true],
|
|
9
|
+
alt: [:string, nullable: true]
|
|
10
|
+
|
|
11
|
+
attribute :viewable_id do |asset|
|
|
12
|
+
asset.viewable&.prefixed_id
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
attributes :type, :viewable_type, :position, :alt,
|
|
16
|
+
created_at: :iso8601, updated_at: :iso8601
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
class BaseSerializer
|
|
5
|
+
include Alba::Resource
|
|
6
|
+
include Typelizer::DSL
|
|
7
|
+
|
|
8
|
+
# Common type hints for fields present in most serializers
|
|
9
|
+
typelize id: :string, created_at: :string, updated_at: :string
|
|
10
|
+
|
|
11
|
+
# Use prefixed IDs (Stripe-style) for all API v3 serializers
|
|
12
|
+
# e.g., prod_86Rf07xd4z, variant_k5nR8xLq, or_m3Rp9wXz
|
|
13
|
+
attribute :id do |object|
|
|
14
|
+
next nil unless object.respond_to?(:prefixed_id)
|
|
15
|
+
|
|
16
|
+
object.prefixed_id
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Context accessors
|
|
20
|
+
def current_store
|
|
21
|
+
params[:store]
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def current_currency
|
|
25
|
+
params[:currency]
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def current_user
|
|
29
|
+
params[:user]
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def current_locale
|
|
33
|
+
params[:locale]
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def includes
|
|
37
|
+
@includes ||= Array(params[:includes] || [])
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Check if an association should be included
|
|
41
|
+
def include?(name)
|
|
42
|
+
includes.include?(name.to_s)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Get nested includes for a given parent
|
|
46
|
+
def nested_includes_for(parent)
|
|
47
|
+
prefix = "#{parent}."
|
|
48
|
+
includes.select { |i| i.start_with?(prefix) }.map { |i| i.sub(prefix, '') }
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# Build nested params for child serializers
|
|
52
|
+
def nested_params(parent = nil)
|
|
53
|
+
params.merge(includes: parent ? nested_includes_for(parent) : [])
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# Returns price for a variant using full Price List resolution
|
|
57
|
+
# This may return a price from a price list if applicable
|
|
58
|
+
# Memoized per variant to avoid duplicate queries
|
|
59
|
+
def price_for(variant, quantity: nil)
|
|
60
|
+
return nil unless variant.respond_to?(:price_for)
|
|
61
|
+
|
|
62
|
+
@price_for_cache ||= {}
|
|
63
|
+
cache_key = [variant.id, quantity]
|
|
64
|
+
return @price_for_cache[cache_key] if @price_for_cache.key?(cache_key)
|
|
65
|
+
|
|
66
|
+
@price_for_cache[cache_key] = variant.price_for(
|
|
67
|
+
currency: current_currency,
|
|
68
|
+
store: current_store,
|
|
69
|
+
user: current_user,
|
|
70
|
+
quantity: quantity
|
|
71
|
+
)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# Returns the base price for a variant without Price List resolution
|
|
75
|
+
# This is the "original" price before any price list discounts
|
|
76
|
+
# Memoized per variant to avoid duplicate queries
|
|
77
|
+
def price_in(variant)
|
|
78
|
+
return nil unless variant.respond_to?(:price_in)
|
|
79
|
+
|
|
80
|
+
@price_in_cache ||= {}
|
|
81
|
+
return @price_in_cache[variant.id] if @price_in_cache.key?(variant.id)
|
|
82
|
+
|
|
83
|
+
@price_in_cache[variant.id] = variant.price_in(current_currency)
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def image_url_for(image)
|
|
87
|
+
return nil if image.nil?
|
|
88
|
+
return nil unless image.respond_to?(:attached?) && image.attached?
|
|
89
|
+
|
|
90
|
+
# Handle Spree::Asset models (like Spree::Image) which have attachment inside
|
|
91
|
+
# vs direct ActiveStorage attachments (like taxon.image)
|
|
92
|
+
attachment = image.is_a?(Spree::Asset) ? image.attachment : image
|
|
93
|
+
Rails.application.routes.url_helpers.cdn_image_url(attachment)
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
class CountrySerializer
|
|
5
|
+
include Alba::Resource
|
|
6
|
+
include Typelizer::DSL
|
|
7
|
+
|
|
8
|
+
# ISO 3166-1 codes - iso is the identifier, no redundant id field
|
|
9
|
+
typelize iso: :string, iso3: :string, name: :string,
|
|
10
|
+
states_required: :boolean, zipcode_required: :boolean,
|
|
11
|
+
currency: [:string, nullable: true],
|
|
12
|
+
default_locale: [:string, nullable: true],
|
|
13
|
+
supported_locales: [:string, multi: true]
|
|
14
|
+
|
|
15
|
+
attributes :iso, :iso3, :name, :states_required, :zipcode_required
|
|
16
|
+
|
|
17
|
+
attribute :currency do |country|
|
|
18
|
+
country.market_currency
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
attribute :default_locale do |country|
|
|
22
|
+
country.market_locale
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
attribute :supported_locales do |country|
|
|
26
|
+
country.market_supported_locales
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
many :states,
|
|
30
|
+
resource: Spree.api.state_serializer,
|
|
31
|
+
if: proc { params[:includes]&.include?('states') }
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
class CreditCardSerializer < BaseSerializer
|
|
5
|
+
typelize cc_type: :string, last_digits: :string, month: :number, year: :number,
|
|
6
|
+
name: [:string, nullable: true], default: :boolean, gateway_payment_profile_id: [:string, nullable: true]
|
|
7
|
+
|
|
8
|
+
attributes :cc_type, :last_digits, :month, :year, :name, :default, :gateway_payment_profile_id
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Spree
|
|
4
|
+
module Api
|
|
5
|
+
module V3
|
|
6
|
+
class CustomerReturnSerializer < BaseSerializer
|
|
7
|
+
typelize number: :string, stock_location_id: [:string, nullable: true]
|
|
8
|
+
|
|
9
|
+
attributes :number, created_at: :iso8601, updated_at: :iso8601
|
|
10
|
+
|
|
11
|
+
attribute :stock_location_id do |customer_return|
|
|
12
|
+
customer_return.stock_location&.prefixed_id
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
# Store API Customer Serializer
|
|
5
|
+
# Customer-facing user data
|
|
6
|
+
class CustomerSerializer < BaseSerializer
|
|
7
|
+
typelize email: :string, first_name: [:string, nullable: true], last_name: [:string, nullable: true],
|
|
8
|
+
default_billing_address: { nullable: true }, default_shipping_address: { nullable: true }
|
|
9
|
+
|
|
10
|
+
attributes :email, :first_name, :last_name,
|
|
11
|
+
created_at: :iso8601, updated_at: :iso8601
|
|
12
|
+
|
|
13
|
+
many :addresses, resource: Spree.api.address_serializer
|
|
14
|
+
one :bill_address, key: :default_billing_address, resource: Spree.api.address_serializer
|
|
15
|
+
one :ship_address, key: :default_shipping_address, resource: Spree.api.address_serializer
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
module Spree
|
|
2
|
+
module Api
|
|
3
|
+
module V3
|
|
4
|
+
class DigitalLinkSerializer < BaseSerializer
|
|
5
|
+
typelize access_counter: :number, filename: :string, content_type: :string,
|
|
6
|
+
download_url: :string,
|
|
7
|
+
authorizable: :boolean, expired: :boolean, access_limit_exceeded: :boolean
|
|
8
|
+
|
|
9
|
+
attributes :access_counter, :filename, :content_type,
|
|
10
|
+
created_at: :iso8601, updated_at: :iso8601
|
|
11
|
+
|
|
12
|
+
attribute :download_url do |digital_link|
|
|
13
|
+
Spree::Core::Engine.routes.url_helpers.api_v3_store_digital_download_path(token: digital_link.token)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
attribute :authorizable do |digital_link|
|
|
17
|
+
digital_link.authorizable?
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
attribute :expired do |digital_link|
|
|
21
|
+
digital_link.expired?
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
attribute :access_limit_exceeded do |digital_link|
|
|
25
|
+
digital_link.access_limit_exceeded?
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Spree
|
|
4
|
+
module Api
|
|
5
|
+
module V3
|
|
6
|
+
class DigitalSerializer < BaseSerializer
|
|
7
|
+
typelize variant_id: [:string, nullable: true]
|
|
8
|
+
|
|
9
|
+
attributes created_at: :iso8601, updated_at: :iso8601
|
|
10
|
+
|
|
11
|
+
attribute :variant_id do |digital|
|
|
12
|
+
digital.variant&.prefixed_id
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Spree
|
|
4
|
+
module Api
|
|
5
|
+
module V3
|
|
6
|
+
class ExportSerializer < BaseSerializer
|
|
7
|
+
typelize number: :string, type: [:string, nullable: true], format: [:string, nullable: true],
|
|
8
|
+
user_id: [:string, nullable: true]
|
|
9
|
+
|
|
10
|
+
attributes :number, :type, :format,
|
|
11
|
+
created_at: :iso8601, updated_at: :iso8601
|
|
12
|
+
|
|
13
|
+
attribute :user_id do |export|
|
|
14
|
+
export.user&.prefixed_id
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Spree
|
|
4
|
+
module Api
|
|
5
|
+
module V3
|
|
6
|
+
class GiftCardBatchSerializer < BaseSerializer
|
|
7
|
+
typelize codes_count: :number, amount: [:string, nullable: true], currency: [:string, nullable: true],
|
|
8
|
+
prefix: [:string, nullable: true], expires_at: [:string, nullable: true],
|
|
9
|
+
created_by_id: [:string, nullable: true]
|
|
10
|
+
|
|
11
|
+
attributes :codes_count, :currency, :prefix,
|
|
12
|
+
created_at: :iso8601, updated_at: :iso8601
|
|
13
|
+
|
|
14
|
+
attribute :amount do |batch|
|
|
15
|
+
batch.amount&.to_s
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
attribute :expires_at do |batch|
|
|
19
|
+
batch.expires_at&.iso8601
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
attribute :created_by_id do |batch|
|
|
23
|
+
batch.created_by&.prefixed_id
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|