beyond_api 0.1.0.pre
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 +7 -0
- data/.gitignore +17 -0
- data/.rspec +3 -0
- data/.travis.yml +7 -0
- data/.yardopts +1 -0
- data/CHANGELOG.md +4 -0
- data/CONTRIBUTING.md +48 -0
- data/GETTING_STARTED.md +0 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +55 -0
- data/LICENSE +19 -0
- data/README.md +51 -0
- data/Rakefile +11 -0
- data/beyond_api.gemspec +31 -0
- data/bin/console +18 -0
- data/bin/setup +8 -0
- data/lib/beyond_api.rb +37 -0
- data/lib/beyond_api/connection.rb +30 -0
- data/lib/beyond_api/ext.rb +43 -0
- data/lib/beyond_api/request.rb +55 -0
- data/lib/beyond_api/resources/base.rb +17 -0
- data/lib/beyond_api/resources/carts.rb +547 -0
- data/lib/beyond_api/resources/categories.rb +168 -0
- data/lib/beyond_api/resources/categories_view.rb +142 -0
- data/lib/beyond_api/resources/checkout_settings.rb +48 -0
- data/lib/beyond_api/resources/newsletter_target.rb +97 -0
- data/lib/beyond_api/resources/order_settings.rb +80 -0
- data/lib/beyond_api/resources/orders.rb +968 -0
- data/lib/beyond_api/resources/payment_methods.rb +192 -0
- data/lib/beyond_api/resources/product_attribute_definitions.rb +109 -0
- data/lib/beyond_api/resources/product_settings.rb +28 -0
- data/lib/beyond_api/resources/products.rb +245 -0
- data/lib/beyond_api/resources/products/attachments.rb +119 -0
- data/lib/beyond_api/resources/products/availability.rb +177 -0
- data/lib/beyond_api/resources/products/custom_attributes.rb +141 -0
- data/lib/beyond_api/resources/products/images.rb +165 -0
- data/lib/beyond_api/resources/products/searches.rb +52 -0
- data/lib/beyond_api/resources/products/variation_properties.rb +87 -0
- data/lib/beyond_api/resources/products_view.rb +158 -0
- data/lib/beyond_api/resources/scopes.rb +31 -0
- data/lib/beyond_api/resources/script_tags.rb +122 -0
- data/lib/beyond_api/resources/shipping_zones.rb +324 -0
- data/lib/beyond_api/resources/shop.rb +561 -0
- data/lib/beyond_api/resources/signers.rb +63 -0
- data/lib/beyond_api/resources/token.rb +41 -0
- data/lib/beyond_api/resources/users.rb +376 -0
- data/lib/beyond_api/resources/variations.rb +145 -0
- data/lib/beyond_api/resources/variations/availability.rb +105 -0
- data/lib/beyond_api/resources/webhook_subscriptions.rb +176 -0
- data/lib/beyond_api/session.rb +121 -0
- data/lib/beyond_api/utils.rb +51 -0
- data/lib/beyond_api/version.rb +3 -0
- data/lib/generators/beyond_api/install_generator.rb +13 -0
- data/lib/generators/templates/beyond_api_initializer.rb +29 -0
- metadata +194 -0
@@ -0,0 +1,192 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "beyond_api/utils"
|
4
|
+
|
5
|
+
module BeyondApi
|
6
|
+
class PaymentMethods < Base
|
7
|
+
include BeyondApi::Utils
|
8
|
+
|
9
|
+
#
|
10
|
+
# A +POST+ request is used to activate a payment method.
|
11
|
+
#
|
12
|
+
# $ curl 'https://api-shop.beyondshop.cloud/api/payment-methods/da313b73-ea6b-49c7-8a3d-d707934098b8/activate' -i -X POST \
|
13
|
+
# -H 'Accept: application/hal+json' \
|
14
|
+
# -H 'Authorization: Bearer <Access token>'
|
15
|
+
#
|
16
|
+
# @beyond_api.scopes pymt:u
|
17
|
+
#
|
18
|
+
# @param payment_method_id [String] the payment method UUID
|
19
|
+
#
|
20
|
+
# @return true
|
21
|
+
#
|
22
|
+
# @example
|
23
|
+
# session.payment_methods.activate("268a8629-55cd-4890-9013-936b9b5ea14c")
|
24
|
+
#
|
25
|
+
def activate(payment_method_id)
|
26
|
+
response, status = BeyondApi::Request.post(@session, "/payment-methods/#{payment_method_id}/activate")
|
27
|
+
|
28
|
+
handle_response(response, status, respond_with_true: true)
|
29
|
+
end
|
30
|
+
|
31
|
+
#
|
32
|
+
# A +GET+ request is used to list all payment methods in a paged way.
|
33
|
+
#
|
34
|
+
# $ curl 'https://api-shop.beyondshop.cloud/api/payment-methods' -i -X GET \
|
35
|
+
# -H 'Content-Type: application/hal+json' \
|
36
|
+
# -H 'Accept: application/hal+json' \
|
37
|
+
# -H 'Authorization: Bearer <Access token>'
|
38
|
+
#
|
39
|
+
# @beyond_api.scopes +pymt:r
|
40
|
+
#
|
41
|
+
# @option params [Integer] :size the page size
|
42
|
+
# @option params [Integer] :page the page number
|
43
|
+
#
|
44
|
+
# @return [OpenStruct]
|
45
|
+
#
|
46
|
+
# @example
|
47
|
+
# session.payment_methods.all(size: 100, page: 0)
|
48
|
+
#
|
49
|
+
def all(params = {})
|
50
|
+
response, status = BeyondApi::Request.get(@session, "/payment-methods", params)
|
51
|
+
|
52
|
+
handle_response(response, status)
|
53
|
+
end
|
54
|
+
|
55
|
+
#
|
56
|
+
# A +POST+ request is used to deactivate a payment method.
|
57
|
+
#
|
58
|
+
# $ curl 'https://api-shop.beyondshop.cloud/api/payment-methods/157f930f-328a-4d7a-974d-66bc3b4dd28e/deactivate' -i -X POST \
|
59
|
+
# -H 'Accept: application/hal+json' \
|
60
|
+
# -H 'Authorization: Bearer <Access token>'
|
61
|
+
#
|
62
|
+
# @beyond_api.scopes pymt:u
|
63
|
+
#
|
64
|
+
# @param payment_method_id [String] the payment method UUID
|
65
|
+
#
|
66
|
+
# @return true
|
67
|
+
#
|
68
|
+
# @example
|
69
|
+
# session.payment_methods.deactivate("268a8629-55cd-4890-9013-936b9b5ea14c")
|
70
|
+
#
|
71
|
+
def deactivate(payment_method_id)
|
72
|
+
response, status = BeyondApi::Request.post(@session, "/payment-methods/#{payment_method_id}/deactivate")
|
73
|
+
|
74
|
+
handle_response(response, status, respond_with_true: true)
|
75
|
+
end
|
76
|
+
|
77
|
+
#
|
78
|
+
# A +GET+ request is used to activate a webhook subscription.
|
79
|
+
#
|
80
|
+
# @beyond_api.scopes +pymt:r
|
81
|
+
#
|
82
|
+
# @param payment_method_id [String] the paument method UUID
|
83
|
+
#
|
84
|
+
# @return [OpenStruct]
|
85
|
+
#
|
86
|
+
# @example
|
87
|
+
# session.payment_methods.find("268a8629-55cd-4890-9013-936b9b5ea14c")
|
88
|
+
#
|
89
|
+
def find(payment_method_id)
|
90
|
+
response, status = BeyondApi::Request.get(@session, "/payment-methods/#{payment_method_id}")
|
91
|
+
|
92
|
+
handle_response(response, status)
|
93
|
+
end
|
94
|
+
|
95
|
+
#
|
96
|
+
# A +PUT+ request is used to sort payment methods.
|
97
|
+
#
|
98
|
+
# $ curl 'https://api-shop.beyondshop.cloud/api/payment-methods' -i -X PUT \
|
99
|
+
# -H 'Content-Type: text/uri-list' \
|
100
|
+
# -H 'Authorization: Bearer <Access token>' \
|
101
|
+
# -d 'https://api-shop.beyondshop.cloud/api/payment-methods/80fa2f12-53e4-42c4-8991-c5a3ddb7596e
|
102
|
+
# https://api-shop.beyondshop.cloud/api/payment-methods/8b54c275-b766-44be-9ed5-c1e269594e0f
|
103
|
+
# https://api-shop.beyondshop.cloud/api/payment-methods/779d08fb-a26d-447e-aef8-ed3642f05e5b
|
104
|
+
# https://api-shop.beyondshop.cloud/api/payment-methods/c02de15b-1e6d-4990-9318-83749
|
105
|
+
#
|
106
|
+
# @beyond_api.scopes +pymt:u
|
107
|
+
#
|
108
|
+
# @param payment_method_ids [Array] the payment method UUIDs
|
109
|
+
#
|
110
|
+
# @return [OpenStruct]
|
111
|
+
#
|
112
|
+
# @example
|
113
|
+
# payment_method_ids = [
|
114
|
+
# '6f3bc033-c2d1-4f44-80e3-1b668f6bd699',
|
115
|
+
# '6f3bc033-c2d1-4f44-80e3-1b618f6sd692',
|
116
|
+
# '6f3bc033-c2d1-4f44-80e3-1b628f6br698'
|
117
|
+
# ]
|
118
|
+
#
|
119
|
+
# session.payment_methods.sort(paymen)
|
120
|
+
#
|
121
|
+
def sort(payment_method_ids)
|
122
|
+
body = []
|
123
|
+
payment_method_ids.each do |payment_method|
|
124
|
+
body << "#{@session.api_url}/payment-methods/#{payment_method}"
|
125
|
+
end
|
126
|
+
response, status = BeyondApi::Request.put(@session, "/payment-methods", body)
|
127
|
+
|
128
|
+
handle_response(response, status, respond_with_true: true)
|
129
|
+
end
|
130
|
+
|
131
|
+
#
|
132
|
+
# A +PUT+ request is used to update a payment method.
|
133
|
+
#
|
134
|
+
# $ curl 'https://api-shop.beyondshop.cloud/api/payment-methods/dc00a5af-d21e-49f0-99f2-ef67ca6fa782' -i -X PUT \
|
135
|
+
# -H 'Content-Type: application/json' \
|
136
|
+
# -H 'Accept: application/hal+json' \
|
137
|
+
# -H 'Authorization: Bearer <Access token>' \
|
138
|
+
# -d '{
|
139
|
+
# "name" : "Another name",
|
140
|
+
# "description" : "Pay by Converge.",
|
141
|
+
# "taxClass" : "REGULAR",
|
142
|
+
# "discountOrFee" : {
|
143
|
+
# "type" : "ABSOLUTE",
|
144
|
+
# "absoluteValue" : {
|
145
|
+
# "taxModel" : "GROSS",
|
146
|
+
# "currency" : "EUR",
|
147
|
+
# "amount" : 2.0
|
148
|
+
# }
|
149
|
+
# },
|
150
|
+
# "serviceableCountries" : [ "DE" ],
|
151
|
+
# "minimumOrderValue" : {
|
152
|
+
# "currency" : "EUR",
|
153
|
+
# "amount" : 10.0
|
154
|
+
# }
|
155
|
+
# }'
|
156
|
+
#
|
157
|
+
# @beyond_api.scopes +pymt:u
|
158
|
+
#
|
159
|
+
# @param payment_method_id [String] the payment method UUID
|
160
|
+
# @param body [Hash] the request body
|
161
|
+
#
|
162
|
+
# @return [OpenStruct]
|
163
|
+
#
|
164
|
+
# @example
|
165
|
+
# body = {
|
166
|
+
# "name" => "Another name",
|
167
|
+
# "description" => "Pay by Converge.",
|
168
|
+
# "tax_class" => "REGULAR",
|
169
|
+
# "discount_or_fee" => {
|
170
|
+
# "type" => "ABSOLUTE",
|
171
|
+
# "absolute_value" => {
|
172
|
+
# "tax_model" => "GROSS",
|
173
|
+
# "currency" => "EUR",
|
174
|
+
# "amount" => 2.0
|
175
|
+
# }
|
176
|
+
# },
|
177
|
+
# "serviceable_countries" => [ "DE" ],
|
178
|
+
# "minimum_order_value" => {
|
179
|
+
# "currency" => "EUR",
|
180
|
+
# "amount" => 10.0
|
181
|
+
# }
|
182
|
+
# }
|
183
|
+
#
|
184
|
+
# @payment_method = session.payment_methods.update("6f3bc033-c2d1-4f44-80e3-1b668f6bd699", body)
|
185
|
+
#
|
186
|
+
def update(payment_method_id, body)
|
187
|
+
response, status = BeyondApi::Request.put(@session, "/payment-methods/#{payment_method_id}", body)
|
188
|
+
|
189
|
+
handle_response(response, status)
|
190
|
+
end
|
191
|
+
end
|
192
|
+
end
|
@@ -0,0 +1,109 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "beyond_api/utils"
|
4
|
+
|
5
|
+
module BeyondApi
|
6
|
+
class ProductAttributeDefinitions < Base
|
7
|
+
include BeyondApi::Utils
|
8
|
+
|
9
|
+
#
|
10
|
+
# A +GET+ request will list the available product attribute definitions.
|
11
|
+
#
|
12
|
+
# $ curl 'https://api-shop.beyondshop.cloud/api/product-attribute-definitions' -i -X GET \
|
13
|
+
# -H 'Authorization: Bearer <Access token>'
|
14
|
+
#
|
15
|
+
# @beyond_api.scopes +prad:r+
|
16
|
+
#
|
17
|
+
# @option param [Integer] :size the page size
|
18
|
+
# @option param [Integer] :page the page number
|
19
|
+
#
|
20
|
+
# @return [OpenStruct]
|
21
|
+
#
|
22
|
+
# @example
|
23
|
+
# @product_attribute_definitions = session.product_attribute_definitions.all(size: 100, page: 0)
|
24
|
+
#
|
25
|
+
def all(params = {})
|
26
|
+
response, status = BeyondApi::Request.get(@session, "/product-attribute-definitions", params)
|
27
|
+
|
28
|
+
handle_response(response, status)
|
29
|
+
end
|
30
|
+
|
31
|
+
#
|
32
|
+
# A +POST+ request is used to create a product attribute definition.
|
33
|
+
#
|
34
|
+
# $ curl 'https://api-shop.beyondshop.cloud/api/product-attribute-definitions' -i -X POST \
|
35
|
+
# -H 'Content-Type: application/json' \
|
36
|
+
# -H 'Authorization: Bearer <Access token>' \
|
37
|
+
# -d '{
|
38
|
+
# "key" : "filling_capacity",
|
39
|
+
# "type" : "NUMBER",
|
40
|
+
# "displayName" : "Filling Capacity",
|
41
|
+
# "format" : "#,###.## ml"
|
42
|
+
# }'
|
43
|
+
#
|
44
|
+
# @beyond_api.scopes +prad:c+
|
45
|
+
#
|
46
|
+
# @param product_attribute_name [String] the product attribute key
|
47
|
+
#
|
48
|
+
# @return [OpenStruct]
|
49
|
+
#
|
50
|
+
# @example
|
51
|
+
# body = {
|
52
|
+
# "key": "filling_capacity",
|
53
|
+
# "type": "NUMBER",
|
54
|
+
# "displayName": "Filling Capacity",
|
55
|
+
# "format": "#,###.## ml"
|
56
|
+
# }
|
57
|
+
# @product_attribute_definition = session.product_attribute_definitions.create(body)
|
58
|
+
#
|
59
|
+
def create(product_attribute_name)
|
60
|
+
response, status = BeyondApi::Request.post(@session, "/product-attribute-definitions")
|
61
|
+
|
62
|
+
handle_response(response, status)
|
63
|
+
end
|
64
|
+
|
65
|
+
#
|
66
|
+
# A +DELETE+ request is used to delete a product attachment.
|
67
|
+
#
|
68
|
+
# $ curl 'https://api-shop.beyondshop.cloud/api/products/00add006-beaa-46fe-bb73-f8ebae15082d/attachments/9a44e585-571a-4253-9248-54a4c418c7e2' -i -X DELETE \
|
69
|
+
# -H 'Content-Type: application/hal+json' \
|
70
|
+
# -H 'Accept: application/hal+json' \
|
71
|
+
# -H 'Authorization: Bearer <Access token>'
|
72
|
+
#
|
73
|
+
# @beyond_api.scopes +prad:d+
|
74
|
+
#
|
75
|
+
# @param product_attribute_name [String] the product attribute key
|
76
|
+
#
|
77
|
+
# @return [true]
|
78
|
+
#
|
79
|
+
# @example
|
80
|
+
# session.product_attribute_definitions.delete("filling_capacity")
|
81
|
+
#
|
82
|
+
def delete(product_attribute_name)
|
83
|
+
response, status = BeyondApi::Request.get(@session, "/product-attribute-definitions/#{product_attribute_name}")
|
84
|
+
|
85
|
+
handle_response(response, status, respond_with_true: true)
|
86
|
+
end
|
87
|
+
|
88
|
+
#
|
89
|
+
# A +GET+ request is used to retrieve a single product attribute definition by name.
|
90
|
+
#
|
91
|
+
# $ curl 'https://api-shop.beyondshop.cloud/api/product-attribute-definitions/filling_capacity' -i -X GET \
|
92
|
+
# -H 'Authorization: Bearer <Access token>'
|
93
|
+
#
|
94
|
+
# @beyond_api.scopes +prad:r+
|
95
|
+
#
|
96
|
+
# @param product_attribute_name [String] the product attribute key
|
97
|
+
#
|
98
|
+
# @return [OpenStruct]
|
99
|
+
#
|
100
|
+
# @example
|
101
|
+
# @product_attribute_definition = session.product_attribute_definitions.find("filling_capacity")
|
102
|
+
#
|
103
|
+
def find(product_attribute_name)
|
104
|
+
response, status = BeyondApi::Request.get(@session, "/product-attribute-definitions/#{product_attribute_name}")
|
105
|
+
|
106
|
+
handle_response(response, status)
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "beyond_api/utils"
|
4
|
+
|
5
|
+
module BeyondApi
|
6
|
+
class ProductSettings < Base
|
7
|
+
include BeyondApi::Utils
|
8
|
+
|
9
|
+
#
|
10
|
+
# A +GET+ request is used to retrieve the product settings.
|
11
|
+
#
|
12
|
+
# $ curl 'https://api-shop.beyondshop.cloud/api/product-settings' -i -X GET \
|
13
|
+
# -H 'Authorization: Bearer <Access token>'
|
14
|
+
#
|
15
|
+
# @beyond_api.scopes +prst:r+
|
16
|
+
#
|
17
|
+
# @return [OpenStruct]
|
18
|
+
#
|
19
|
+
# @example
|
20
|
+
# @product_settings = session.product_settings.all
|
21
|
+
#
|
22
|
+
def all
|
23
|
+
response, status = BeyondApi::Request.get(@session, "/product_settings")
|
24
|
+
|
25
|
+
handle_response(response, status)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,245 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "beyond_api/utils"
|
4
|
+
|
5
|
+
module BeyondApi
|
6
|
+
class Products < Base
|
7
|
+
include BeyondApi::Utils
|
8
|
+
|
9
|
+
#
|
10
|
+
# A +GET+ request will list all of the products in a paged manner. The returned data is an excerpt projection, which includes a small subset of product properties.
|
11
|
+
#
|
12
|
+
# $ curl 'https://api-shop.beyondshop.cloud/api/products' -i -X GET \
|
13
|
+
# -H 'Content-Type: application/hal+json' \
|
14
|
+
# -H 'Accept: application/hal+json' \
|
15
|
+
# -H 'Authorization: Bearer <Access token>'
|
16
|
+
#
|
17
|
+
# @beyond_api.scopes +prod:r+
|
18
|
+
#
|
19
|
+
# @option params [Integer] :size the page size
|
20
|
+
# @option params [Integer] :page the page number
|
21
|
+
#
|
22
|
+
# @return [OpenStruct]
|
23
|
+
#
|
24
|
+
# @example
|
25
|
+
# @products = session.products.all(size: 100, page: 0)
|
26
|
+
#
|
27
|
+
def all(params = {})
|
28
|
+
response, status = BeyondApi::Request.get(@session, "/products", params)
|
29
|
+
|
30
|
+
handle_response(response, status)
|
31
|
+
end
|
32
|
+
|
33
|
+
#
|
34
|
+
# A +POST+ request is used to create a product.
|
35
|
+
#
|
36
|
+
# $ curl 'https://api-shop.beyondshop.cloud/api/products' -i -X POST \
|
37
|
+
# -H 'Content-Type: application/json' \
|
38
|
+
# -H 'Authorization: Bearer <Access token>' \
|
39
|
+
# -d '{
|
40
|
+
# "sku" : "123456789-001",
|
41
|
+
# "name" : "Rioja Castillo de Puerto (2013)",
|
42
|
+
# "description" : "Spain\nRioja Tempranillo",
|
43
|
+
# "manufacturer" : "Grape Vineyard",
|
44
|
+
# "essentialFeatures" : "Dry. 12% alcohol. Best vine variety.",
|
45
|
+
# "tags" : [ "Bestseller", "Red Wine", "Sale" ],
|
46
|
+
# "productIdentifiers" : [ {
|
47
|
+
# "type" : "EAN",
|
48
|
+
# "value" : "9780134308135"
|
49
|
+
# } ],
|
50
|
+
# "salesPrice" : {
|
51
|
+
# "taxModel" : "NET",
|
52
|
+
# "amount" : 8.7,
|
53
|
+
# "currency" : "EUR"
|
54
|
+
# },
|
55
|
+
# "listPrice" : {
|
56
|
+
# "taxModel" : "NET",
|
57
|
+
# "amount" : 10.95,
|
58
|
+
# "currency" : "EUR"
|
59
|
+
# },
|
60
|
+
# "manufacturerPrice" : {
|
61
|
+
# "taxModel" : "NET",
|
62
|
+
# "amount" : 99.95,
|
63
|
+
# "currency" : "EUR"
|
64
|
+
# },
|
65
|
+
# "onSale" : true,
|
66
|
+
# "visible" : true,
|
67
|
+
# "taxClass" : "REGULAR",
|
68
|
+
# "shippingWeight" : 100,
|
69
|
+
# "maxOrderQuantity" : 6,
|
70
|
+
# "shippingDimension" : {
|
71
|
+
# "length" : 1500,
|
72
|
+
# "width" : 1000,
|
73
|
+
# "height" : 2000
|
74
|
+
# },
|
75
|
+
# "refPrice" : {
|
76
|
+
# "refQuantity" : 1,
|
77
|
+
# "unit" : "LITER",
|
78
|
+
# "quantity" : 0.75,
|
79
|
+
# "price" : {
|
80
|
+
# "taxModel" : "NET",
|
81
|
+
# "amount" : 11.6,
|
82
|
+
# "currency" : "EUR"
|
83
|
+
# }
|
84
|
+
# },
|
85
|
+
# "shippingPeriod" : {
|
86
|
+
# "minDays" : 2,
|
87
|
+
# "maxDays" : 4,
|
88
|
+
# "displayUnit" : "WEEKS"
|
89
|
+
# }
|
90
|
+
# }'
|
91
|
+
#
|
92
|
+
# @beyond_api.scopes +prod:c+
|
93
|
+
#
|
94
|
+
# @param body [Hash] the request body
|
95
|
+
#
|
96
|
+
# @return [OpenStruct]
|
97
|
+
#
|
98
|
+
# @example
|
99
|
+
# body = {
|
100
|
+
# "sku": "123456789-001",
|
101
|
+
# "name": "Rioja Castillo de Puerto (2013)",
|
102
|
+
# "description": "Spain\nRioja Tempranillo",
|
103
|
+
# "manufacturer": "Grape Vineyard",
|
104
|
+
# "essentialFeatures": "Dry. 12% alcohol. Best vine variety.",
|
105
|
+
# "tags": ["Bestseller", "Red Wine", "Sale"],
|
106
|
+
# "productIdentifiers": [{
|
107
|
+
# "type": "EAN",
|
108
|
+
# "value": "9780134308135"
|
109
|
+
# }],
|
110
|
+
# "salesPrice": {
|
111
|
+
# "taxModel": "NET",
|
112
|
+
# "amount": 8.7,
|
113
|
+
# "currency": "EUR"
|
114
|
+
# },
|
115
|
+
# "listPrice": {
|
116
|
+
# "taxModel": "NET",
|
117
|
+
# "amount": 10.95,
|
118
|
+
# "currency": "EUR"
|
119
|
+
# },
|
120
|
+
# "manufacturerPrice": {
|
121
|
+
# "taxModel": "NET",
|
122
|
+
# "amount": 99.95,
|
123
|
+
# "currency": "EUR"
|
124
|
+
# },
|
125
|
+
# "onSale": true,
|
126
|
+
# "visible": true,
|
127
|
+
# "taxClass": "REGULAR",
|
128
|
+
# "shippingWeight": 100,
|
129
|
+
# "maxOrderQuantity": 6,
|
130
|
+
# "shippingDimension": {
|
131
|
+
# "length": 1500,
|
132
|
+
# "width": 1000,
|
133
|
+
# "height": 2000
|
134
|
+
# },
|
135
|
+
# "refPrice": {
|
136
|
+
# "refQuantity": 1,
|
137
|
+
# "unit": "LITER",
|
138
|
+
# "quantity": 0.75,
|
139
|
+
# "price": {
|
140
|
+
# "taxModel": "NET",
|
141
|
+
# "amount": 11.6,
|
142
|
+
# "currency": "EUR"
|
143
|
+
# }
|
144
|
+
# },
|
145
|
+
# "shippingPeriod": {
|
146
|
+
# "minDays": 2,
|
147
|
+
# "maxDays": 4,
|
148
|
+
# "displayUnit": "WEEKS"
|
149
|
+
# }
|
150
|
+
# }
|
151
|
+
#
|
152
|
+
# @product = session.products.create(body)
|
153
|
+
#
|
154
|
+
def create(body)
|
155
|
+
response, status = BeyondApi::Request.post(@session, "/products", body)
|
156
|
+
|
157
|
+
handle_response(response, status)
|
158
|
+
end
|
159
|
+
|
160
|
+
#
|
161
|
+
# A +DELETE+ request is used to delete a product or variation product. When a variation product is deleted, all its variations are deleted as well.
|
162
|
+
#
|
163
|
+
# $ curl 'https://api-shop.beyondshop.cloud/api/products/c06c61af-f99a-4698-90fa-8c3199ca732f' -i -X DELETE \
|
164
|
+
# -H 'Accept: application/hal+json' \
|
165
|
+
# -H 'Authorization: Bearer <Access token>'
|
166
|
+
#
|
167
|
+
# @beyond_api.scopes +prod:d+
|
168
|
+
#
|
169
|
+
# @param product_id [String] the product UUID
|
170
|
+
#
|
171
|
+
# @return true
|
172
|
+
#
|
173
|
+
# @example
|
174
|
+
# session.products.delete("f461fb56-1984-4ade-bd4e-007c273cc923")
|
175
|
+
#
|
176
|
+
def delete(product_id)
|
177
|
+
response, status = BeyondApi::Request.delete(@session, "/products/#{product_id}")
|
178
|
+
|
179
|
+
handle_response(response, status, respond_with_true: true)
|
180
|
+
end
|
181
|
+
|
182
|
+
#
|
183
|
+
# A +GET+ request is used to retrieve the details of a product.
|
184
|
+
#
|
185
|
+
# $ curl 'https://api-shop.beyondshop.cloud/api/products/75ebcb57-aefb-4963-8225-060c528e070d' -i -X GET \
|
186
|
+
# -H 'Content-Type: application/json' \
|
187
|
+
# -H 'Accept: application/hal+json' \
|
188
|
+
# -H 'Authorization: Bearer <Access token>'
|
189
|
+
#
|
190
|
+
# @beyond_api.scopes +prod:r+
|
191
|
+
#
|
192
|
+
# @param product_id [String] the product UUID
|
193
|
+
#
|
194
|
+
# @return [OpenStruct]
|
195
|
+
#
|
196
|
+
# @example
|
197
|
+
# @product = session.products.find("f461fb56-1984-4ade-bd4e-007c273cc923")
|
198
|
+
#
|
199
|
+
def find(product_id)
|
200
|
+
response, status = BeyondApi::Request.get(@session, "/products/#{product_id}")
|
201
|
+
|
202
|
+
handle_response(response, status)
|
203
|
+
end
|
204
|
+
|
205
|
+
#
|
206
|
+
# A +PATCH+ request is used to update a product partially with json content type.
|
207
|
+
#
|
208
|
+
# @beyond_api.scopes +prod:u+
|
209
|
+
#
|
210
|
+
# $ curl 'https://api-shop.beyondshop.cloud/api/products/b69e3f47-03b8-40d2-843c-ae89a3d9bcdd' -i -X PATCH \
|
211
|
+
# -H 'Content-Type: application/json' \
|
212
|
+
# -H 'Accept: application/hal+json' \
|
213
|
+
# -H 'Authorization: Bearer <Access token>' \
|
214
|
+
# -d '{
|
215
|
+
# "name" : "patched name",
|
216
|
+
# "description" : "patched description. <p><br></p><blockquote> <ol><li><strong>\n<h1></h1><h6></h6><em><a href=\"http://example.com\" target=\"_blank\"><u>this is my test html</u></a>\n</em></strong> </li></ol> </blockquote>",
|
217
|
+
# "productIdentifiers" : null,
|
218
|
+
# "manufacturer" : "patched manufacturer"
|
219
|
+
# }'
|
220
|
+
#
|
221
|
+
# @param product_id [String] the product UUID
|
222
|
+
# @param body [Hash] the request body
|
223
|
+
#
|
224
|
+
# @return [OpenStruct]
|
225
|
+
#
|
226
|
+
# @example
|
227
|
+
# body = {
|
228
|
+
# "name": "patched name",
|
229
|
+
# "description": "patched description. <p><br></p><blockquote> <ol><li><strong>\n<h1></h1><h6></h6><em><a href=\"http://example.com\" target=\"_blank\"><u>this is my test html</u></a>\n</em></strong> </li></ol> </blockquote>",
|
230
|
+
# "productIdentifiers": null,
|
231
|
+
# "manufacturer": "patched manufacturer"
|
232
|
+
# }
|
233
|
+
# @product = session.products.update("75ebcb57-aefb-4963-8225-060c528e070d", body)
|
234
|
+
#
|
235
|
+
def update(product_id, body)
|
236
|
+
response, status = BeyondApi::Request.patch(@session, "/products/#{product_id}", body)
|
237
|
+
|
238
|
+
handle_response(response, status)
|
239
|
+
end
|
240
|
+
|
241
|
+
alias_method :create_variation, :create
|
242
|
+
alias_method :find_variation, :find
|
243
|
+
alias_method :update_variation, :update
|
244
|
+
end
|
245
|
+
end
|