class Retailcrm
RetailCRM API Client noinspection ALL
Public Class Methods
# File lib/retailcrm.rb, line 16 def initialize(url, key) @version = 3 @url = "#{url}/api/v#{@version}/" @key = key @params = { :apiKey => @key } @filter = nil @ids = nil end
Public Instance Methods
Get countries list www.retailcrm.ru/docs/Developers/ApiVersion3
# File lib/retailcrm.rb, line 646 def countries url = "#{@url}reference/countries" make_request(url) end
Get customers by filter¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
Example:
>> Retailcrm.customers({:email => 'test@example.com'}, 50, 2) => {...}
Arguments:
filter (Hash) limit (Integer) (20|50|100) page (Integer)
# File lib/retailcrm.rb, line 189 def customers(filter = nil, limit = 20, page = 1) url = "#{@url}customers" @params[:limit] = limit @params[:page] = page @filter = filter.to_a.map { |x| "filter[#{x[0]}]=#{x[1]}" }.join('&') make_request(url) end
Create customer¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
Example:
>> Retailcrm.customer_create(customer) => {...}
Arguments:
customer (Array) site (String)
# File lib/retailcrm.rb, line 229 def customers_create(customer, site = nil) url = "#{@url}customers/create" @params[:customer] = customer.to_json @params[:site] = site make_request(url, 'post') end
Edit customer¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
Example:
>> Retailcrm.customers_edit(customer) => {...}
Arguments:
customer (Array) site (String)
# File lib/retailcrm.rb, line 247 def customers_edit(customer, site = nil) id = customer[:externalId] url = "#{@url}customers/#{id}/edit" @params[:customer] = customer.to_json @params[:site] = site make_request(url, 'post') end
Set external ids for customers created into CRM¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
Example:
>> Retailcrm.customers_fix_external_ids([{:id => 200, :externalId => 334}, {:id => 201, :externalId => 364}]) => {...}
Arguments:
customers (Array)
# File lib/retailcrm.rb, line 283 def customers_fix_external_ids(customers) url = "#{@url}customers/fix-external-ids" @params[:customers] = customers.to_json make_request(url, 'post') end
Get customers by id (or externalId)¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
Example:
>> Retailcrm.customers_get(345, 'id') => {...}
Arguments:
id (Integer) by (String) site (String)
# File lib/retailcrm.rb, line 209 def customers_get(id, by = 'externalId', site = nil) url = "#{@url}customers/#{id}" @params[:site] = site if by != 'externalId' @params[:by] = by end make_request(url) end
Upload customers¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
Example:
>> Retailcrm.customers_upload(customers) => {...}
Arguments:
customers (Array) site (String)
# File lib/retailcrm.rb, line 266 def customers_upload(customers, site = nil) url = "#{@url}customers/upload" @params[:customers] = customers.to_json @params[:site] = site make_request(url, 'post') end
Get delivery services¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
# File lib/retailcrm.rb, line 442 def delivery_services url = "#{@url}reference/delivery-services" make_request(url) end
Edit delivery service¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
# File lib/retailcrm.rb, line 451 def delivery_services_edit(delivery_service) code = delivery_service[:code] url = "#{@url}reference/delivery-services/#{code}/edit" @params[:deliveryService] = delivery_service.to_json make_request(url, 'post') end
Get delivery types www.retailcrm.ru/docs/Developers/ApiVersion3
# File lib/retailcrm.rb, line 461 def delivery_types url = "#{@url}reference/delivery-types" make_request(url) end
Edit delivery type¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
# File lib/retailcrm.rb, line 470 def delivery_types_edit(delivery_type) code = delivery_type[:code] url = "#{@url}reference/delivery-types/#{code}/edit" @params[:deliveryType] = delivery_type.to_json make_request(url, 'post') end
Get order methods¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
# File lib/retailcrm.rb, line 481 def order_methods url = "#{@url}reference/order-methods" make_request(url) end
Edit order method¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
# File lib/retailcrm.rb, line 490 def order_methods_edit(order_method) code = order_method[:code] url = "#{@url}reference/order-methods/#{code}/edit" @params[:orderMethod] = order_method.to_json make_request(url, 'post') end
Get order types¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
# File lib/retailcrm.rb, line 501 def order_types url = "#{@url}reference/order-types" make_request(url) end
Edit order type¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
# File lib/retailcrm.rb, line 510 def order_types_edit(order_type) code = order_type[:code] url = "#{@url}reference/order-types/#{code}/edit" @params[:orderType] = order_type.to_json make_request(url, 'post') end
Get orders by filter¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
Example:
>> Retailcrm.orders({:email => 'test@example.com', :status => 'new'}, 50, 2) => {...}
Arguments:
filter (Hash) limit (Integer) (20|50|100) page (Integer)
# File lib/retailcrm.rb, line 37 def orders(filter = nil, limit = 20, page = 1) url = "#{@url}orders" @params[:limit] = limit @params[:page] = page @filter = filter.to_a.map { |x| "filter[#{x[0]}]=#{x[1]}" }.join('&') make_request(url) end
Create order¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
Example:
>> Retailcrm.orders_create(order) => {...}
Arguments:
order (Array) site (String)
# File lib/retailcrm.rb, line 93 def orders_create(order, site = nil) url = "#{@url}orders/create" @params[:order] = order.to_json @params[:site] = site make_request(url, 'post') end
Edit order¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
Example:
>> Retailcrm.orders_edit(order) => {...}
Arguments:
order (Array) site (String)
# File lib/retailcrm.rb, line 111 def orders_edit(order, site = nil) id = order[:externalId] url = "#{@url}orders/#{id}/edit" @params[:order] = order.to_json @params[:site] = site make_request(url, 'post') end
Set external ids for orders created into CRM¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
Example:
>> Retailcrm.orders_fix_external_ids([{:id => 200, :externalId => 334}, {:id => 201, :externalId => 364}]) => {...}
Arguments:
orders (Array)
# File lib/retailcrm.rb, line 147 def orders_fix_external_ids(orders) url = "#{@url}orders/fix-external-ids" @params[:orders] = orders.to_json make_request(url, 'post') end
Get orders by id (or externalId)¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
Example:
>> Retailcrm.orders_get(345, 'id') => {...}
Arguments:
id (Integer) by (String) site (String)
# File lib/retailcrm.rb, line 73 def orders_get(id, by = 'externalId', site = nil) url = "#{@url}orders/#{id}" if by != 'externalId' @params[:by] = by @params[:site] = site end make_request(url) end
Get orders history¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
Example:
>> Retailcrm.orders_history('2015-04-10 22:23:12', '2015-04-10 23:33:12') => {...}
Arguments:
start_date (Time) (Time.strftime('%Y-%m-%d %H:%M:%S')) end_date (Time) (Time.strftime('%Y-%m-%d %H:%M:%S')) limit (Integer) (20|50|100) offset (Integer) skip_my_changes (Boolean)
# File lib/retailcrm.rb, line 167 def orders_history(start_date = nil, end_date = nil, limit = 100, offset = 0, skip_my_changes = true) url = "#{@url}orders/history" @params[:startDate] = start_date @params[:endDate] = end_date @params[:limit] = limit @params[:offset] = offset @params[:skipMyChanges] = skip_my_changes make_request(url) end
Get orders statuses¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
Example:
>> Retailcrm.orders_statuses([26120, 19282]) => {...}
Arguments:
ids (Array)
# File lib/retailcrm.rb, line 55 def orders_statuses(ids = []) @ids = ids.map { |x| "ids[]=#{x}" }.join('&') url = "#{@url}orders/statuses" make_request(url) end
Upload orders¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
Example:
>> Retailcrm.orders_upload(orders) => {...}
Arguments:
orders (Array) site (String)
# File lib/retailcrm.rb, line 130 def orders_upload(orders, site = nil) url = "#{@url}orders/upload" @params[:orders] = orders.to_json @params[:site] = site make_request(url, 'post') end
Get packs by filter¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
Example:
>> Retailcrm.packs({:store => 'main'}, 50, 2) => {...}
Arguments:
filter (Hash) limit (Integer) (20|50|100) page (Integer)
# File lib/retailcrm.rb, line 339 def packs(filter = nil, limit = 20, page = 1) url = "#{@url}orders/packs" @params[:limit] = limit @params[:page] = page @filter = filter.to_a.map { |x| "filter[#{x[0]}]=#{x[1]}" }.join('&') make_request(url) end
Create pack¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
Example:
>> Retailcrm.packs_create(pack) => {...}
Arguments:
pack (Array) site (String)
# File lib/retailcrm.rb, line 358 def packs_create(pack, site = nil) url = "#{@url}orders/packs/create" @params[:pack] = pack.to_json @params[:site] = site make_request(url, 'post') end
Delete pack¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
Example:
>> Retailcrm.packs_delete(14) => {...}
Arguments:
id (Integer) site (String)
# File lib/retailcrm.rb, line 432 def packs_delete(id, site = nil) url = "#{@url}orders/packs/#{id}/delete" @params[:site] = site make_request(url, 'post') end
Edit pack¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
Example:
>> Retailcrm.packs_edit(pack) => {...}
Arguments:
pack (Array) site (String)
# File lib/retailcrm.rb, line 413 def packs_edit(pack, site = nil) id = pack[:id] url = "#{@url}orders/packs/#{id}/edit" @params[:pack] = pack.to_json @params[:site] = site make_request(url, 'post') end
Get pack by id¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
Example:
>> Retailcrm.packs_get(345) => {...}
Arguments:
id (Integer) site (String)
# File lib/retailcrm.rb, line 396 def packs_get(id, site = nil) url = "#{@url}orders/packs/#{id}" @params[:site] = site make_request(url) end
Get orders assembly history¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
Example:
>> Retailcrm.packs_history({:orderId => 26120, :startDate => '2015-04-10 23:33:12'}, 50, 2) => {...}
Arguments:
filter (Hash) limit (Integer) (20|50|100) page (Integer)
# File lib/retailcrm.rb, line 377 def packs_history(filter = nil, limit = 20, page = 1) url = "#{@url}orders/packs/history" @params[:limit] = limit @params[:page] = page @filter = filter.to_a.map { |x| "filter[#{x[0]}]=#{x[1]}" }.join('&') make_request(url) end
Get payment statuses www.retailcrm.ru/docs/Developers/ApiVersion3
# File lib/retailcrm.rb, line 520 def payment_statuses url = "#{@url}reference/payment-statuses" make_request(url) end
Edit payment status¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
# File lib/retailcrm.rb, line 529 def payment_statuses_edit(payment_status) code = payment_status[:code] url = "#{@url}reference/payment-statuses/#{code}/edit" @params[:paymentStatus] = payment_status.to_json make_request(url, 'post') end
Get payment types¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
# File lib/retailcrm.rb, line 540 def payment_types url = "#{@url}reference/payment-types" make_request(url) end
Edit payment type¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
# File lib/retailcrm.rb, line 549 def payment_types_edit(payment_type) code = payment_type[:code] url = "#{@url}reference/payment-types/#{code}/edit" @params[:paymentType] = payment_type.to_json make_request(url, 'post') end
Get product statuses¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
# File lib/retailcrm.rb, line 560 def product_statuses url = "#{@url}reference/product-statuses" make_request(url) end
Edit product status¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
# File lib/retailcrm.rb, line 569 def product_statuses_edit(product_status) code = product_status[:code] url = "#{@url}reference/product-statuses/#{code}/edit" @params[:productStatus] = product_status.to_json make_request(url, 'post') end
Get sites list www.retailcrm.ru/docs/Developers/ApiVersion3
# File lib/retailcrm.rb, line 579 def sites url = "#{@url}reference/sites" make_request(url) end
Edit site¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
# File lib/retailcrm.rb, line 588 def sites_edit(site) code = site[:code] url = "#{@url}reference/sites/#{code}/edit" @params[:site] = site.to_json make_request(url, 'post') end
Statistic update¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
# File lib/retailcrm.rb, line 655 def statistic_update url = "#{@url}statistic/update" make_request(url) end
Get status groups¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
# File lib/retailcrm.rb, line 599 def status_groups url = "#{@url}reference/status-groups" make_request(url) end
Get statuses www.retailcrm.ru/docs/Developers/ApiVersion3
# File lib/retailcrm.rb, line 607 def statuses url = "#{@url}reference/statuses" make_request(url) end
Edit status¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
# File lib/retailcrm.rb, line 616 def statuses_edit(status) code = status[:code] url = "#{@url}reference/statuses/#{code}/edit" @params[:status] = status.to_json make_request(url, 'post') end
Get purchace prices & stock balance¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
Example:
>> Retailcrm.store_inventories({:productExternalId => 26120, :details => 1}, 50, 2) => {...}
Arguments:
filter (Hash) limit (Integer) (20|50|100) page (Integer)
# File lib/retailcrm.rb, line 301 def store_inventories(filter = nil, limit = 20, page = 1) url = "#{@url}store/inventories" @params[:limit] = limit @params[:page] = page @filter = filter.to_a.map { |x| "filter[#{x[0]}]=#{x[1]}" }.join('&') make_request(url) end
Set purchace prices & stock balance¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
Example:
>> Retailcrm.store_inventories_upload({:offers => [{:externalId => 123, :stores => [{:code => 'store_1', :available => 15, :purchasePrice => 1000}]}]}, :site => 'main_site') => {...}
Arguments:
offers (Array) site (String)
# File lib/retailcrm.rb, line 320 def store_inventories_upload(offers = [], site = nil) url = "#{@url}store/inventories/upload" @params[:offers] = offers @params[:site] = site make_request(url, 'post') end
Get stores¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
# File lib/retailcrm.rb, line 627 def stores url = "#{@url}reference/stores" make_request(url) end
Edit store¶ ↑
www.retailcrm.ru/docs/Developers/ApiVersion3
# File lib/retailcrm.rb, line 636 def stores_edit(store) code = store[:code] url = "#{@url}reference/stores/#{code}/edit" @params[:store] = store.to_json make_request(url, 'post') end
Protected Instance Methods
# File lib/retailcrm.rb, line 662 def make_request(url, method='get') raise ArgumentError, 'url must be not empty' unless !url.empty? uri = URI.parse(url) https = Net::HTTP.new(uri.host, uri.port) https.use_ssl = true if method == 'post' request = Net::HTTP::Post.new(uri) request.set_form_data(@params) elsif method == 'get' request = Net::HTTP::Get.new(uri.path) request.set_form_data(@params) data = "#{request.body}" unless @filter.nil? data = data + "&#{@filter}" end unless @ids.nil? data = data + "&#{@ids}" end request = Net::HTTP::Get.new("#{uri.path}?#{data}") end response = https.request(request) Retailcrm::Response.new(response.code, response.body) end