tessitura_rest 0.7.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +7 -0
  2. data/.codeclimate.yml +42 -0
  3. data/.gitignore +10 -0
  4. data/.rspec +2 -0
  5. data/.rubocop.yml +553 -0
  6. data/.travis.yml +5 -0
  7. data/CODE_OF_CONDUCT.md +49 -0
  8. data/Gemfile +10 -0
  9. data/LICENSE.txt +21 -0
  10. data/README.md +89 -0
  11. data/Rakefile +14 -0
  12. data/bin/console +14 -0
  13. data/bin/setup +8 -0
  14. data/lib/tessitura_rest.rb +52 -0
  15. data/lib/tessitura_rest/crm/accounts.rb +8 -0
  16. data/lib/tessitura_rest/crm/actions.rb +36 -0
  17. data/lib/tessitura_rest/crm/addresses.rb +122 -0
  18. data/lib/tessitura_rest/crm/attributes.rb +20 -0
  19. data/lib/tessitura_rest/crm/constituencies.rb +29 -0
  20. data/lib/tessitura_rest/crm/issues.rb +42 -0
  21. data/lib/tessitura_rest/crm/phones.rb +41 -0
  22. data/lib/tessitura_rest/crm/web_logins.rb +8 -0
  23. data/lib/tessitura_rest/custom/email.rb +30 -0
  24. data/lib/tessitura_rest/custom/local_procedure.rb +35 -0
  25. data/lib/tessitura_rest/diagnostics/diagnostics.rb +6 -0
  26. data/lib/tessitura_rest/finance/appeals.rb +7 -0
  27. data/lib/tessitura_rest/finance/gift_certificates.rb +7 -0
  28. data/lib/tessitura_rest/reference_data/billing_schedules.rb +6 -0
  29. data/lib/tessitura_rest/reference_data/countries.rb +7 -0
  30. data/lib/tessitura_rest/reference_data/sections.rb +7 -0
  31. data/lib/tessitura_rest/reference_data/states.rb +7 -0
  32. data/lib/tessitura_rest/security/security_user_groups.rb +8 -0
  33. data/lib/tessitura_rest/txn/orders.rb +23 -0
  34. data/lib/tessitura_rest/txn/package.rb +44 -0
  35. data/lib/tessitura_rest/txn/performance_extension.rb +44 -0
  36. data/lib/tessitura_rest/txn/performance_package_mode_of_sales.rb +8 -0
  37. data/lib/tessitura_rest/txn/price_types.rb +9 -0
  38. data/lib/tessitura_rest/txn/product_keywords.rb +9 -0
  39. data/lib/tessitura_rest/txn/production_extension.rb +14 -0
  40. data/lib/tessitura_rest/txn/production_season.rb +20 -0
  41. data/lib/tessitura_rest/txn/sub_line_items.rb +9 -0
  42. data/lib/tessitura_rest/txn/web_contents.rb +9 -0
  43. data/lib/tessitura_rest/version.rb +3 -0
  44. data/lib/tessitura_rest/web/cart.rb +293 -0
  45. data/lib/tessitura_rest/web/login.rb +55 -0
  46. data/lib/tessitura_rest/web/payment_plan_extension.rb +51 -0
  47. data/lib/tessitura_rest/web/session.rb +85 -0
  48. data/tessitura_rest.gemspec +29 -0
  49. metadata +189 -0
@@ -0,0 +1,9 @@
1
+ module SubLineItems
2
+
3
+ def get_return_tickets(constituent_id, status_id, performance_start_date, performance_end_date, order_id, options={})
4
+ options.merge!(basic_auth: @auth, headers: @headers)
5
+ response = self.class.get(base_api_endpoint("TXN/SubLineItems?constituentId=#{constituent_id}&orderId=#{order_id}&subLineItemStatusIds=#{status_id}&performanceStartDate=#{performance_start_date}&performanceEndDate=#{performance_end_date}"), options)
6
+ JSON.parse(response.body)
7
+ end
8
+
9
+ end
@@ -0,0 +1,9 @@
1
+ module WebContents
2
+
3
+ def get_web_contents(production_ids=nil, package_ids=nil, content_type_ids=nil, options={})
4
+ options.merge!(basic_auth: @auth, headers: @headers)
5
+ response = self.class.get(base_api_endpoint("TXN/WebContents?productionElementIds=#{production_ids}&packageIds=#{package_ids}&contentTypeIds=#{content_type_ids}"), options)
6
+ JSON.parse(response.body)
7
+ end
8
+
9
+ end
@@ -0,0 +1,3 @@
1
+ class TessituraRest
2
+ VERSION = '0.7.4'
3
+ end
@@ -0,0 +1,293 @@
1
+ module Cart
2
+
3
+ def get_cart(session_key, options={})
4
+ options.merge!(basic_auth: @auth, headers: @headers)
5
+ self.class.get(base_api_endpoint("Web/Cart/#{session_key}"), options)
6
+ end
7
+
8
+ def empty_cart(session_key, options={})
9
+ options.merge!(basic_auth: @auth, headers: @headers)
10
+ self.class.delete(base_api_endpoint("Web/Cart/#{session_key}"), options)
11
+ end
12
+
13
+ def web_cart_text(session_key, options={})
14
+ options.merge!(basic_auth: @auth, headers: @headers)
15
+ self.class.get(base_api_endpoint("Web/Cart/#{session_key}/Messages?messageTypes=#{ENV['WEB_CART_TEXT']}&savedCart=false"), options)
16
+ end
17
+
18
+ def order_confirm_text(session_key, options={})
19
+ options.merge!(basic_auth: @auth, headers: @headers)
20
+ self.class.get(base_api_endpoint("Web/Cart/#{session_key}?messageTypes=#{ENV['ORDER_CONFIRM_TEXT']}&savedCart=true"), options)
21
+ end
22
+
23
+ def change_mode_of_sale(session_key, code, options={})
24
+ parameters =
25
+ {
26
+ 'ModeOfSaleId': code
27
+ }
28
+ options.merge!(basic_auth: @auth, headers: @headers)
29
+ options.merge!(:body => parameters)
30
+ self.class.put(base_api_endpoint("Web/Cart/#{session_key}/Properties"), options)
31
+ end
32
+
33
+ def add_gift_certificate(session_key, amount, name, notes, gift_certificate_type, options={})
34
+ parameters =
35
+ {
36
+ 'Amount': amount,
37
+ 'PaymentMethodId': gift_certificate_type,
38
+ 'Notes': notes,
39
+ 'Name': name
40
+ }
41
+ options.merge!(basic_auth: @auth, headers: @headers)
42
+ options.merge!(:body => parameters)
43
+ self.class.post(base_api_endpoint("Web/Cart/#{session_key}/GiftCertificates"), options)
44
+ end
45
+
46
+ def remove_gift_certificate(session_key, gift_certificate_number, options={})
47
+ options.merge!(basic_auth: @auth, headers: @headers)
48
+ self.class.delete(base_api_endpoint("Web/Cart/#{session_key}/GiftCertificates/#{gift_certificate_number}"), options)
49
+ end
50
+
51
+ def apply_gift_certificate(session_key, gift_certificate_number, amount, options={})
52
+ parameters =
53
+ {
54
+ 'Amount': amount,
55
+ 'GiftCertificateNumber': gift_certificate_number
56
+ }
57
+ options.merge!(basic_auth: @auth, headers: @headers)
58
+ options.merge!(:body => parameters)
59
+ self.class.post(base_api_endpoint("Web/Cart/#{session_key}/Payments/GiftCertificate"), options)
60
+ end
61
+
62
+ def un_apply_gift_certificate(session_key, gift_certificate_number, options={})
63
+ options.merge!(basic_auth: @auth, headers: @headers)
64
+ self.class.delete(base_api_endpoint("Web/Cart/#{session_key}/Payments/GiftCertificate/#{gift_certificate_number}"), options)
65
+ end
66
+
67
+ def add_contribution(session_key, amount, fund, membership_level, renew=nil, upgrade=nil, options={})
68
+ parameters =
69
+ {
70
+ 'Amount': amount,
71
+ 'FundId': fund,
72
+ 'Upgrade': upgrade,
73
+ 'Renew': renew,
74
+ 'MembershipLevelId': membership_level
75
+ }
76
+ options.merge!(basic_auth: @auth, headers: @headers)
77
+ options.merge!(:body => parameters)
78
+ self.class.post(base_api_endpoint("Web/Cart/#{session_key}/Contributions"), options)
79
+ end
80
+
81
+ def remove_contribution(session_key, line_item_id, options={})
82
+ options.merge!(basic_auth: @auth, headers: @headers)
83
+ self.class.delete(base_api_endpoint("Web/Cart/#{session_key}/Contributions/#{line_item_id}"), options)
84
+ end
85
+
86
+ def add_on_account(session_key, amount, payment_method_id, options={})
87
+ parameters =
88
+ {
89
+ 'Amount': amount,
90
+ "PaymentMethodId": payment_method_id
91
+ }
92
+ options.merge!(basic_auth: @auth, headers: @headers)
93
+ options.merge!(:body => parameters)
94
+ self.class.post(base_api_endpoint("Web/Cart/#{session_key}/OnAccount"), options)
95
+ end
96
+
97
+ def remove_on_account(session_key, payment_id, options={})
98
+ options.merge!(basic_auth: @auth, headers: @headers)
99
+ self.class.delete(base_api_endpoint("Web/Cart/#{session_key}/OnAccount/#{payment_id}"), options)
100
+ end
101
+
102
+ def get_properties(session_key, options={})
103
+ options.merge!(basic_auth: @auth, headers: @headers)
104
+ self.class.get(base_api_endpoint("Web/Cart/#{session_key}/Properties"), options)
105
+ end
106
+
107
+ def update_properties(session_key, category=0, solicitor='webapi', channel=0, options={})
108
+ options.merge!(basic_auth: @auth, headers: @headers)
109
+ parameters =
110
+ {
111
+ "Solicitor": solicitor,
112
+ "ChannelId": channel
113
+ }
114
+ parameters["CategoryId"] = category if category != 0
115
+ options.merge!(:body => parameters)
116
+ self.class.put(base_api_endpoint("Web/Cart/#{session_key}/Properties"), options)
117
+ end
118
+
119
+ def update_source(session_key, source_no, solicitor='webapi', options={})
120
+ options.merge!(basic_auth: @auth, headers: @headers)
121
+ parameters =
122
+ {
123
+ "Solicitor": solicitor,
124
+ "SourceId": source_no
125
+ }
126
+ options.merge!(:body => parameters)
127
+ self.class.put(base_api_endpoint("Web/Cart/#{session_key}/Properties"), options)
128
+ end
129
+
130
+ def add_order_comment(session_key, notes, solicitor='webapi', options={})
131
+ options.merge!(basic_auth: @auth, headers: @headers)
132
+ parameters =
133
+ {
134
+ "Solicitor": solicitor,
135
+ "Notes": notes
136
+ }
137
+ options.merge!(:body => parameters)
138
+ self.class.put(base_api_endpoint("Web/Cart/#{session_key}/Properties"), options)
139
+ end
140
+
141
+ def reserve_tickets(session_key, number_of_seats, perf_id, price_type, zone_id, unseated, requested_seats=nil, special_requests=nil, options={})
142
+ parameters =
143
+ {
144
+ "PriceType": price_type,
145
+ "PerformanceId": perf_id,
146
+ "NumberOfSeats": number_of_seats,
147
+ "ZoneId": zone_id,
148
+ "SpecialRequests": special_requests,
149
+ "Unseated": unseated,
150
+ "RequestedSeats": requested_seats
151
+ }
152
+ options.merge!(basic_auth: @auth, headers: @headers)
153
+ options.merge!(:body => parameters)
154
+ self.class.post(base_api_endpoint("/Web/Cart/#{session_key}/Tickets"), options)
155
+ end
156
+
157
+ def return_tickets(session_key, return_or_donate, id, options={})
158
+ parameters =
159
+ {
160
+ "TicketNumber": id,
161
+ "ReturnOrDonate": return_or_donate
162
+ }
163
+ options.merge!(basic_auth: @auth, headers: @headers)
164
+ options.merge!(:body => parameters)
165
+ self.class.post(base_api_endpoint("/Web/Cart/#{session_key}/Tickets/Return"), options)
166
+ end
167
+
168
+ def add_package_item(session_key, price_type, package_id, number_of_seats, zone_id, leave_single_seats, parent_package_line_item_id, unseated, requested_seats=nil, options={})
169
+ parameters =
170
+ {
171
+ "PriceType": price_type,
172
+ "PackageId": package_id,
173
+ "NumberOfSeats": number_of_seats,
174
+ "ZoneId": zone_id,
175
+ "RequestedSeats": requested_seats,
176
+ "LeaveSingleSeats": leave_single_seats,
177
+ "ParentPackageLineItemId": parent_package_line_item_id,
178
+ "Unseated": unseated
179
+ }
180
+
181
+ options.merge!(basic_auth: @auth, headers: @headers)
182
+ options.merge!(:body => parameters)
183
+ self.class.post(base_api_endpoint("Web/Cart/#{session_key}/Packages/Fixed"), options)
184
+ end
185
+
186
+ def remove_package_item(session_key, package_id, line_item_id, options={})
187
+ options.merge!(basic_auth: @auth, headers: @headers)
188
+ self.class.delete(base_api_endpoint("Web/Cart/#{session_key}/Packages/Fixed/#{package_id}/#{line_item_id}"), options)
189
+ end
190
+
191
+ def add_nfs_package_item(session_key, nfs_package_line_item_id, performance_id, performance_group_id, price_type, package_id, number_of_seats, zone_id, leave_single_seats, unseated, options={})
192
+ parameters =
193
+ {
194
+ "NFSPackageLineItemId": nfs_package_line_item_id,
195
+ "PriceType": price_type,
196
+ "PackageId": package_id,
197
+ "PerformanceId": performance_id,
198
+ "PerformanceGroupId": performance_group_id,
199
+ "NumberOfSeats": number_of_seats,
200
+ "ZoneId": zone_id,
201
+ "LeaveSingleSeats": leave_single_seats,
202
+ "Unseated": unseated
203
+ }
204
+ options.merge!(basic_auth: @auth, headers: @headers)
205
+ options.merge!(:body => parameters)
206
+ self.class.post(base_api_endpoint("Web/Cart/#{session_key}/Packages/Nfs"), options)
207
+ end
208
+
209
+ def remove_nfs_package_item(session_key, line_item_id, options={})
210
+ options.merge!(basic_auth: @auth, headers: @headers)
211
+ self.class.delete(base_api_endpoint("Web/Cart/#{session_key}/Packages/Nfs/#{line_item_id}"), options)
212
+ end
213
+
214
+ def add_sub_package_item(session_key, price_type, sub_package_id, number_of_seats, zone_id, leave_single_seats, parent_super_line_item_id, super_line_item_id, unseated, requested_seats=nil, options={})
215
+ parameters =
216
+ {
217
+ "ParentSuperPackageLineItemId": parent_super_line_item_id,
218
+ "SuperPackageLineItemId": super_line_item_id,
219
+ "PriceType": price_type,
220
+ "SubPackageId": sub_package_id,
221
+ "NumberOfSeats": number_of_seats,
222
+ "ZoneId": zone_id,
223
+ "RequestedSeats": requested_seats,
224
+ "LeaveSingleSeats": leave_single_seats,
225
+ "Unseated": unseated
226
+ }
227
+ options.merge!(basic_auth: @auth, headers: @headers)
228
+ options.merge!(:body => parameters)
229
+ self.class.post(base_api_endpoint("Web/Cart/#{session_key}/Packages/Super"), options)
230
+ end
231
+
232
+ def remove_sub_package_item(session_key, super_package_id, super_package_line_item_id, options={})
233
+ options.merge!(basic_auth: @auth, headers: @headers)
234
+ self.class.delete(base_api_endpoint("Web/Cart/#{session_key}/Packages/Super/#{super_package_id}/#{super_package_line_item_id}"), options)
235
+ end
236
+
237
+ def print_ticket_elements(session_key, order_id, ticket_design, reprint, mode, new_ticket_no=false, options={})
238
+ parameters =
239
+ {
240
+ "NewTicketNoForReprints": new_ticket_no,
241
+ "ReprintTickets": reprint,
242
+ "OrderId": order_id,
243
+ "TicketDesignId": ticket_design,
244
+ "Mode": mode
245
+ }
246
+ options.merge!(basic_auth: @auth, headers: @headers)
247
+ options.merge!(:body => parameters)
248
+ self.class.post(base_api_endpoint("/Web/Cart/#{session_key}/Print/TicketElements"), options)
249
+ end
250
+
251
+ def remove_tickets(session_key, performance_id, line_item_id, options={})
252
+ options.merge!(basic_auth: @auth, headers: @headers)
253
+ self.class.delete(base_api_endpoint("/Web/Cart/#{session_key}/Tickets/#{performance_id}/#{line_item_id}"), options)
254
+ end
255
+
256
+ def add_or_update_fee(session_key, action, fee_id, item_fee_id=nil, amount=nil, options={})
257
+ parameters =
258
+ {
259
+ "Action": action,
260
+ "ItemFeeId": item_fee_id,
261
+ "FeeId": fee_id,
262
+ "Amount": amount
263
+ }
264
+ options.merge!(basic_auth: @auth, headers: @headers)
265
+ options.merge!(:body => parameters)
266
+ self.class.post(base_api_endpoint("Web/Cart/#{session_key}/Fees"), options)
267
+ end
268
+
269
+ def validate_cart(session_key, super_package=false, fixed=false, flex=false, plan=false, options={})
270
+ parameters =
271
+ {
272
+ "ValidateSuperPackages": super_package,
273
+ "ValidateFSPackages": fixed,
274
+ "ValidateNFSPackages": flex,
275
+ "ValidatePaymentPlan": plan
276
+ }
277
+ options.merge!(basic_auth: @auth, headers: @headers)
278
+ options.merge!(:body => parameters)
279
+ self.class.post(base_api_endpoint("Web/Cart/#{session_key}/Validate"), options)
280
+ end
281
+
282
+ def update_cart_properties_custom_data(session_key, index, value, options={})
283
+ parameters =
284
+ {
285
+ "Index": index,
286
+ "Value": value
287
+ }
288
+ options.merge!(basic_auth: @auth, headers: @headers)
289
+ options.merge!(:body => parameters)
290
+ put = self.class.put(base_api_endpoint("Web/Cart/#{session_key}/CustomData/#{index}"), options)
291
+ put.success?
292
+ end
293
+ end
@@ -0,0 +1,55 @@
1
+ module Login
2
+
3
+ def with_user(ip_address, business_unit_id, options={})
4
+ options.merge!(basic_auth: @auth, headers: @headers)
5
+ response = self.class.get(base_api_endpoint('Web/Session/'), options)
6
+ JSON.parse(response.body)
7
+ end
8
+
9
+ def login_using_email(email, password, login_type_id, promotion, session_key, options={})
10
+ parameters =
11
+ {
12
+ 'UserName': email,
13
+ 'Password': password,
14
+ 'LoginTypeId': login_type_id,
15
+ 'PromotionCode': promotion
16
+ }
17
+ options.merge!(basic_auth: @auth, headers: @headers)
18
+ options.merge!(:body => parameters)
19
+ post = self.class.post(base_api_endpoint("Web/Session/#{session_key}/Login"), options)
20
+ post['IsLoggedIn']
21
+ end
22
+
23
+ def login_using_external(email, login_type_id, promotion, session_key, options={})
24
+ parameters =
25
+ {
26
+ 'UserName': email,
27
+ 'LoginTypeId': login_type_id,
28
+ 'PromotionCode': promotion
29
+ }
30
+ options.merge!(basic_auth: @auth, headers: @headers)
31
+ options.merge!(:body => parameters.to_json, :headers => {'Content-Type' => 'application/json'})
32
+ post = self.class.post(base_api_endpoint("Web/Session/#{session_key}/Login/External"), options)
33
+ post.success?
34
+ end
35
+
36
+ def login_with_token(email, login_type_id, token, promotion, session_key, options={})
37
+ parameters =
38
+ {
39
+ 'EmailAddress': email,
40
+ 'ForgotLoginToken': token,
41
+ 'LoginTypeId': login_type_id,
42
+ 'PromotionCode': promotion
43
+ }
44
+ options.merge!(basic_auth: @auth, headers: @headers)
45
+ options.merge!(:body => parameters.to_json, :headers => {'Content-Type' => 'application/json'})
46
+ post = self.class.post(base_api_endpoint("Web/Session/#{session_key}/Login/Token"), options)
47
+ post['IsLoggedIn']
48
+ end
49
+
50
+ def logout(session_key, options={})
51
+ options.merge!(basic_auth: @auth, headers: @headers)
52
+ options.merge!(:body => {}, :headers => {'Content-Type' => 'application/json'})
53
+ self.class.post(base_api_endpoint("/Web/Session/#{session_key}/Logout"), options)
54
+ end
55
+ end
@@ -0,0 +1,51 @@
1
+ module PaymentPlanExtension
2
+
3
+ def add_billing_payment_plan(session_key, billing_id, billing_type_id, name, number, month, year, start_date=nil, end_date=nil, options={})
4
+ parameters =
5
+ {
6
+ 'BillingScheduleId': billing_id,
7
+ 'BillingTypeId': billing_type_id,
8
+ 'StartDate': start_date,
9
+ 'EndDate': end_date,
10
+ "Card": {
11
+ "Name": name,
12
+ "Number": number,
13
+ "ExpiryMonth": month,
14
+ "ExpiryYear": year
15
+ }
16
+ }
17
+ options.merge!(basic_auth: @auth, headers: @headers)
18
+ options.merge!(:body => parameters)
19
+ response = self.class.post(base_api_endpoint("Web/Cart/#{session_key}/Payments/Plan/Schedule"), options)
20
+ JSON.parse(response.body)
21
+ end
22
+
23
+ def preview_billing_payment_plan(session_key, billing_id, start_date=nil, end_date=nil, options={})
24
+ parameters =
25
+ {
26
+ 'BillingScheduleId': billing_id,
27
+ 'StartDate': start_date,
28
+ 'EndDate': end_date
29
+ }
30
+ options.merge!(basic_auth: @auth, headers: @headers)
31
+ options.merge!(:body => parameters)
32
+ response = self.class.post(base_api_endpoint("Web/Cart/#{session_key}/Payments/Plan/Schedule/Preview"), options)
33
+ JSON.parse(response.body)
34
+ end
35
+
36
+ def validate_payment_plan(session_key, options={})
37
+ parameters =
38
+ {
39
+ 'ValidatePaymentPlan': true
40
+ }
41
+ options.merge!(basic_auth: @auth, headers: @headers)
42
+ options.merge!(:body => parameters)
43
+ response = self.class.post(base_api_endpoint("Web/Cart/#{session_key}/Validate"), options)
44
+ JSON.parse(response.body)
45
+ end
46
+
47
+ def remove_payment_plan(session_key, options={})
48
+ options.merge!(basic_auth: @auth, headers: @headers)
49
+ self.class.delete(base_api_endpoint("Web/Cart/#{session_key}/Payments/Plan"), options)
50
+ end
51
+ end
@@ -0,0 +1,85 @@
1
+ module Session
2
+
3
+ def get_session(key, options={})
4
+ options.merge!(basic_auth: @auth, headers: @headers)
5
+ response = self.class.get(base_api_endpoint("Web/Session/#{key}"), options)
6
+ JSON.parse(response.body)
7
+ end
8
+
9
+ def create_session(ip, options={})
10
+ parameters =
11
+ {
12
+ 'IpAddress': ip,
13
+ 'Organization': 'Tessitura Web'
14
+ }
15
+ options.merge!(basic_auth: @auth, headers: @headers)
16
+ options.merge!(body: parameters)
17
+ response = self.class.post(base_api_endpoint('Web/Session'), options)
18
+ JSON.parse(response.body)
19
+ end
20
+
21
+ def get_expiration(key, options={})
22
+ options.merge!(basic_auth: @auth, headers: @headers)
23
+ response = self.class.get(base_api_endpoint("Web/Session/#{key}/Expiration"), options)
24
+ JSON.parse(response.body)
25
+ end
26
+
27
+ def get_variables(key, options={})
28
+ options.merge!(basic_auth: @auth, headers: @headers)
29
+ response = self.class.get(base_api_endpoint("Web/Session/#{key}/Variables"), options)
30
+ JSON.parse(response.body)
31
+ end
32
+
33
+ def set_expiration(key, timeoffset, expiration, options={})
34
+ parameters =
35
+ {
36
+ 'Expiration': expiration,
37
+ 'TimeOffset': timeoffset
38
+ }
39
+ options.merge!(basic_auth: @auth, headers: @headers)
40
+ options.merge!(:body => parameters)
41
+ response = self.class.put(base_api_endpoint("Web/Session/#{key}/Expiration"), options)
42
+ JSON.parse(response.body)
43
+ end
44
+
45
+ def load_existing_order(key, order_id, options={})
46
+ options.merge!(basic_auth: @auth, headers: @headers)
47
+ self.class.post(base_api_endpoint("Web/Session/#{key}/LoadOrder/#{order_id}"), options)
48
+ end
49
+
50
+ def get_promotion(key, code, code_string, options={})
51
+ parameters =
52
+ {
53
+ 'PromoCode': code,
54
+ 'PromoCodeString': code_string
55
+ }
56
+ options.merge!(basic_auth: @auth, headers: @headers)
57
+ options.merge!(:body => parameters)
58
+ response = self.class.post(base_api_endpoint("Web/Session/#{key}/PromoCode"), options)
59
+ JSON.parse(response.body)
60
+ end
61
+
62
+ def get_renewals(key, season_id, renewal, mode_of_sale, options={})
63
+ options.merge!(basic_auth: @auth, headers: @headers)
64
+ response = self.class.get(base_api_endpoint("Web/Session/#{key}/Orders/Search?seasonId=#{season_id}&renewalsOnly=#{renewal}&modeOfSaleId=#{mode_of_sale}"), options)
65
+ JSON.parse(response.body)
66
+ end
67
+
68
+ def send_credentials(key, email, login_type, template_id, options={})
69
+ parameters =
70
+ {
71
+ 'TemplateFormatId': template_id,
72
+ 'LoginTypeId': login_type,
73
+ 'EmailAddress': email
74
+ }
75
+ options.merge!(basic_auth: @auth, headers: @headers)
76
+ options.merge!(:body => parameters)
77
+ self.class.post(base_api_endpoint("/Web/Session/#{key}/Login/SendCredentials"), options)
78
+ end
79
+
80
+ def get_shipping_methods(key, options={})
81
+ options.merge!(basic_auth: @auth, headers: @headers)
82
+ response = self.class.get(base_api_endpoint("Web/Session/#{key}/DeliveryMethods"), options)
83
+ JSON.parse(response.body)
84
+ end
85
+ end