Class: Inttegro::Resources::Products

Inherits:
Object
  • Object
show all
Defined in:
lib/inttegro/resources/products.rb

Overview

Client for products and their catalog lifecycle.

Access this resource through Client#products.

Instance Method Summary collapse

Constructor Details

#initialize(http) ⇒ Products

Returns a new instance of Products.

Parameters:



11
12
13
# File 'lib/inttegro/resources/products.rb', line 11

def initialize(http)
  @http = T.let(http, Inttegro::HTTPClient)
end

Instance Method Details

#add_price(payload) ⇒ Inttegro::Price::CatalogPrice

Create a new price for an existing product.

Parameters:

Returns:



27
28
29
# File 'lib/inttegro/resources/products.rb', line 27

def add_price(payload)
  @http.post_resource("/products/add_price", Inttegro::Price::CatalogPrice, :price, payload)
end

#archive(product_id:) ⇒ Inttegro::Product

Archive a product and mark it inactive.

Parameters:

  • product_id (String) —

    unique product identifier

Returns:



75
76
77
# File 'lib/inttegro/resources/products.rb', line 75

def archive(product_id:)
  @http.post_resource("/products/archive", Inttegro::Product, :product, { product_id: product_id })
end

#create(payload) ⇒ Inttegro::Product

Create a catalog product.

Parameters:

Returns:



19
20
21
# File 'lib/inttegro/resources/products.rb', line 19

def create(payload)
  @http.post_resource("/products/create", Inttegro::Product, :product, payload)
end

#lookup(product_id:) ⇒ Inttegro::Product

Retrieve a product and its related catalog details.

Parameters:

  • product_id (String) —

    unique product identifier

Returns:



43
44
45
# File 'lib/inttegro/resources/products.rb', line 43

def lookup(product_id:)
  @http.post_resource("/products/lookup", Inttegro::Product, :product, { product_id: product_id })
end

#page(payload = {}) ⇒ Inttegro::Product::Page

Retrieve a page of products.

Parameters:

Returns:



83
84
85
# File 'lib/inttegro/resources/products.rb', line 83

def page(payload = {})
  @http.post_resource("/products/page", Inttegro::Product::Page, :page, payload || {})
end

#publish(product_id:) ⇒ Inttegro::Product

Mark a product active and record its publication time.

Parameters:

  • product_id (String) —

    unique product identifier

Returns:



59
60
61
# File 'lib/inttegro/resources/products.rb', line 59

def publish(product_id:)
  @http.post_resource("/products/publish", Inttegro::Product, :product, { product_id: product_id })
end

#search(payload) ⇒ Inttegro::Search::Page

Search products using indexed fields and full-text matching.

Parameters:

Returns:



91
92
93
# File 'lib/inttegro/resources/products.rb', line 91

def search(payload)
  @http.post_resource("/products/search", Inttegro::Search::Page, :search, payload)
end

#set_default_unit_price(payload) ⇒ Inttegro::Product

Select an existing catalog price as the product's default unit price.

Parameters:

Returns:



35
36
37
# File 'lib/inttegro/resources/products.rb', line 35

def set_default_unit_price(payload)
  @http.post_resource("/products/set_default_unit_price", Inttegro::Product, :product, payload)
end

#unpublish(product_id:) ⇒ Inttegro::Product

Mark a product inactive without archiving it.

Parameters:

  • product_id (String) —

    unique product identifier

Returns:



67
68
69
# File 'lib/inttegro/resources/products.rb', line 67

def unpublish(product_id:)
  @http.post_resource("/products/unpublish", Inttegro::Product, :product, { product_id: product_id })
end

#update(payload) ⇒ Inttegro::Product::Updated

Update mutable product fields.

Parameters:

Returns:



51
52
53
# File 'lib/inttegro/resources/products.rb', line 51

def update(payload)
  @http.post_resource("/products/update", Inttegro::Product::Updated, :product, payload)
end