api/config/routes.rb
spree_path = Rails.application.routes.url_helpers.try(:spree_path, trailing_slash: true) || '/'
Rails.application.routes.draw do
use_doorkeeper scope: "#{spree_path}/spree_oauth"
end
Spree::Core::Engine.add_routes do
namespace :api, defaults: { format: 'json' } do
namespace :v2 do
namespace :storefront do
resource :cart, controller: :cart, only: %i[show create destroy] do
post :add_item
patch :empty
delete 'remove_line_item/:line_item_id', to: 'cart#remove_line_item', as: :cart_remove_line_item
patch :set_quantity
patch :apply_coupon_code
delete 'remove_coupon_code/:coupon_code', to: 'cart#remove_coupon_code', as: :cart_remove_coupon_code
delete 'remove_coupon_code', to: 'cart#remove_coupon_code', as: :cart_remove_coupon_code_without_code
get :estimate_shipping_rates
patch :associate
patch :change_currency
end
resource :checkout, controller: :checkout, only: %i[update] do
patch :next
patch :advance
patch :complete
post :create_payment
post :add_store_credit
post :remove_store_credit
get :payment_methods
get :shipping_rates
patch :select_shipping_method
end
resource :account, controller: :account, only: %i[show create update]
namespace :account do
resources :addresses, controller: :addresses
resources :credit_cards, controller: :credit_cards, only: %i[index show destroy]
resources :orders, controller: :orders, only: %i[index show]
end
resources :countries, only: %i[index]
get '/countries/:iso', to: 'countries#show', as: :country
get '/order_status/:number', to: 'order_status#show', as: :order_status
resources :products, only: %i[index show]
resources :taxons, only: %i[index show], id: /.+/
get '/stores/:code', to: 'stores#show', as: :store
get '/store', to: 'stores#current', as: :current_store
resources :menus, only: %i[index show]
resources :cms_pages, only: %i[index show]
resources :wishlists do
get :default, on: :collection
member do
post :add_item
patch 'set_item_quantity/:item_id', to: 'wishlists#set_item_quantity', as: :set_item_quantity
delete 'remove_item/:item_id', to: 'wishlists#remove_item', as: :remove_item
end
end
get '/digitals/:token', to: 'digitals#download', as: 'digital'
end
namespace :platform do
# Promotions API
resources :promotions
resources :promotion_actions
resources :promotion_categories
resources :promotion_rules
# Returns API
resources :customer_returns
resources :reimbursements
resources :return_authorizations do
member do
patch :add
patch :cancel
patch :receive
end
end
# Product Catalog API
resources :products
resources :taxonomies
resources :taxons do
member do
patch :reposition
end
end
resources :classifications
resources :images
resources :variants
resources :properties
resources :product_properties
resources :option_types
resources :option_values
# Order API
resources :orders do
member do
patch :next
patch :advance
patch :approve
patch :cancel
patch :empty
patch :apply_coupon_code
patch :complete
patch :use_store_credit
patch :cancel
patch :approve
end
end
resources :line_items
resources :adjustments
# Payments API
resources :payments do
# TODO: support custom actions
# member do
# patch :authorize
# patch :capture
# patch :purchase
# patch :void
# patch :credit
# end
end
# Store Credit API
resources :store_credits
resources :store_credit_categories
resources :store_credit_types
# Geo API
resources :zones
resources :countries, only: [:index, :show]
resources :states, only: [:index, :show]
# Shipment API
resources :shipments do
member do
%w[ready ship cancel resume pend].each do |state|
patch state.to_sym
end
patch :add_item
patch :remove_item
patch :transfer_to_location
patch :transfer_to_shipment
end
end
# Tax API
resources :tax_rates
resources :tax_categories
# Inventory API
resources :inventory_units
resources :stock_items
resources :stock_locations
resources :stock_movements
# User API
resources :users
resources :credit_cards
resources :addresses
resources :roles
# Menu API
resources :menus
resources :menu_items do
member do
patch :reposition
end
end
# CMS
resources :cms_pages
resources :cms_sections
# Wishlists API
resources :wishlists
resources :wished_items
# Digitals API
resources :digitals
resources :digital_links do
member do
patch :reset
end
end
# Store API
resources :stores
# Data Feeds API
resources :data_feeds
# Configurations API
resources :payment_methods
resources :shipping_categories
resources :shipping_methods
# Webhooks API
namespace :webhooks do
resources :events, only: :index
resources :subscribers
end
end
namespace :data_feeds do
# google data feed API
get '/google/:slug', to: 'google#rss_feed'
end
end
end
end