class Retailcrm

RetailCRM API Client noinspection ALL

Public Class Methods

new(url, key) click to toggle source
# 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

countries() click to toggle source

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
customers(filter = nil, limit = 20, page = 1) click to toggle source

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
customers_create(customer, site = nil) click to toggle source

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
customers_edit(customer, site = nil) click to toggle source

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
customers_fix_external_ids(customers) click to toggle source

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
customers_get(id, by = 'externalId', site = nil) click to toggle source

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
customers_upload(customers, site = nil) click to toggle source

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
delivery_services() click to toggle source

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
delivery_services_edit(delivery_service) click to toggle source

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
delivery_types() click to toggle source

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
delivery_types_edit(delivery_type) click to toggle source

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
order_methods() click to toggle source

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
order_methods_edit(order_method) click to toggle source

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
order_types() click to toggle source

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
order_types_edit(order_type) click to toggle source

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
orders(filter = nil, limit = 20, page = 1) click to toggle source

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
orders_create(order, site = nil) click to toggle source

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
orders_edit(order, site = nil) click to toggle source

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
orders_fix_external_ids(orders) click to toggle source

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
orders_get(id, by = 'externalId', site = nil) click to toggle source

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
orders_history(start_date = nil, end_date = nil, limit = 100, offset = 0, skip_my_changes = true) click to toggle source

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
orders_statuses(ids = []) click to toggle source

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
orders_upload(orders, site = nil) click to toggle source

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
packs(filter = nil, limit = 20, page = 1) click to toggle source

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
packs_create(pack, site = nil) click to toggle source

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
packs_delete(id, site = nil) click to toggle source

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
packs_edit(pack, site = nil) click to toggle source

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
packs_get(id, site = nil) click to toggle source

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
packs_history(filter = nil, limit = 20, page = 1) click to toggle source

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
payment_statuses() click to toggle source

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
payment_statuses_edit(payment_status) click to toggle source

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
payment_types() click to toggle source

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
payment_types_edit(payment_type) click to toggle source

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
product_statuses() click to toggle source

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
product_statuses_edit(product_status) click to toggle source

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
sites() click to toggle source

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
sites_edit(site) click to toggle source

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() click to toggle source

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
status_groups() click to toggle source

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
statuses() click to toggle source

Get statuses www.retailcrm.ru/docs/Developers/ApiVersion3

# File lib/retailcrm.rb, line 607
def statuses
  url = "#{@url}reference/statuses"
  make_request(url)
end
statuses_edit(status) click to toggle source

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
store_inventories(filter = nil, limit = 20, page = 1) click to toggle source

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
store_inventories_upload(offers = [], site = nil) click to toggle source

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
stores() click to toggle source

Get stores

www.retailcrm.ru/docs/Developers/ApiVersion3

# File lib/retailcrm.rb, line 627
def stores
  url = "#{@url}reference/stores"
  make_request(url)
end
stores_edit(store) click to toggle source

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

make_request(url, method='get') click to toggle source
# 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