cybersource_rest_client 0.0.67 → 0.0.68

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.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/lib/cybersource_rest_client/models/card_processing_config_common_acquirer.rb +257 -257
  3. data/lib/cybersource_rest_client/models/card_processing_config_common_merchant_descriptor_information.rb +279 -279
  4. data/lib/cybersource_rest_client/models/commerce_solutions_products_token_management_configuration_information_configurations.rb +200 -190
  5. data/lib/cybersource_rest_client/models/commerce_solutions_products_token_management_configuration_information_configurations_vault.rb +251 -0
  6. data/lib/cybersource_rest_client/models/e_check_config_common_internal_only_processors.rb +267 -263
  7. data/lib/cybersource_rest_client/models/e_check_config_common_processors.rb +273 -271
  8. data/lib/cybersource_rest_client/models/e_check_config_features_account_validation_service_internal_only_processors.rb +193 -191
  9. data/lib/cybersource_rest_client/models/e_check_config_features_account_validation_service_processors.rb +285 -283
  10. data/lib/cybersource_rest_client/models/flexv2sessions_fields.rb +199 -199
  11. data/lib/cybersource_rest_client/models/flexv2sessions_fields_order_information.rb +209 -209
  12. data/lib/cybersource_rest_client/models/flexv2sessions_fields_order_information_amount_details.rb +199 -199
  13. data/lib/cybersource_rest_client/models/flexv2sessions_fields_order_information_amount_details_total_amount.rb +189 -189
  14. data/lib/cybersource_rest_client/models/flexv2sessions_fields_order_information_bill_to.rb +309 -309
  15. data/lib/cybersource_rest_client/models/flexv2sessions_fields_order_information_ship_to.rb +289 -289
  16. data/lib/cybersource_rest_client/models/flexv2sessions_fields_payment_information.rb +189 -189
  17. data/lib/cybersource_rest_client/models/flexv2sessions_fields_payment_information_card.rb +229 -229
  18. data/lib/cybersource_rest_client/models/generate_capture_context_request.rb +13 -13
  19. data/lib/cybersource_rest_client/models/generate_flex_api_capture_context_request.rb +189 -189
  20. data/lib/cybersource_rest_client/models/generate_unified_checkout_capture_context_request.rb +13 -13
  21. data/lib/cybersource_rest_client/models/inline_response_400_1_details.rb +199 -199
  22. data/lib/cybersource_rest_client/models/inline_response_400_2.rb +235 -235
  23. data/lib/cybersource_rest_client/models/inline_response_400_3.rb +235 -235
  24. data/lib/cybersource_rest_client/models/inline_response_400_4.rb +235 -235
  25. data/lib/cybersource_rest_client/models/inline_response_400_5.rb +258 -258
  26. data/lib/cybersource_rest_client/models/inline_response_400_5_fields.rb +213 -213
  27. data/lib/cybersource_rest_client/models/inline_response_400_6_details.rb +201 -201
  28. data/lib/cybersource_rest_client/models/patch_instrument_identifier_request.rb +313 -313
  29. data/lib/cybersource_rest_client/models/post_instrument_identifier_enrollment_request.rb +313 -313
  30. data/lib/cybersource_rest_client/models/post_instrument_identifier_request.rb +313 -313
  31. data/lib/cybersource_rest_client/models/pts_v2_payments_reversals_post201_response.rb +305 -305
  32. data/lib/cybersource_rest_client/models/ptsv2payments_payment_information_card.rb +445 -428
  33. data/lib/cybersource_rest_client/models/ptsv2payments_processing_information.rb +1 -1
  34. data/lib/cybersource_rest_client/models/ptsv2payments_processing_information_japan_payment_options.rb +339 -411
  35. data/lib/cybersource_rest_client/models/ptsv2payments_processing_information_japan_payment_options_bonuses.rb +213 -0
  36. data/lib/cybersource_rest_client/models/ptsv2payments_recipient_information.rb +383 -383
  37. data/lib/cybersource_rest_client/models/ptsv2payments_recurring_payment_information.rb +363 -363
  38. data/lib/cybersource_rest_client/models/ptsv2payments_sender_information.rb +298 -298
  39. data/lib/cybersource_rest_client/models/ptsv2paymentsid_client_reference_information.rb +256 -256
  40. data/lib/cybersource_rest_client/models/riskv1authenticationresults_payment_information.rb +219 -219
  41. data/lib/cybersource_rest_client/models/riskv1authentications_payment_information.rb +219 -219
  42. data/lib/cybersource_rest_client/models/riskv1authentications_payment_information_customer.rb +222 -222
  43. data/lib/cybersource_rest_client/models/riskv1authenticationsetups_payment_information_customer.rb +205 -205
  44. data/lib/cybersource_rest_client/models/riskv1decisions_consumer_authentication_information.rb +795 -795
  45. data/lib/cybersource_rest_client/models/riskv1exportcomplianceinquiries_order_information_line_items.rb +305 -314
  46. data/lib/cybersource_rest_client/models/tms_embedded_instrument_identifier.rb +313 -313
  47. data/lib/cybersource_rest_client/models/tms_network_token_services.rb +239 -0
  48. data/lib/cybersource_rest_client/models/tms_network_token_services_american_express_token_service.rb +253 -0
  49. data/lib/cybersource_rest_client/models/tms_network_token_services_mastercard_digital_enablement_service.rb +227 -0
  50. data/lib/cybersource_rest_client/models/tms_network_token_services_notifications.rb +190 -0
  51. data/lib/cybersource_rest_client/models/tms_network_token_services_payment_credentials.rb +190 -0
  52. data/lib/cybersource_rest_client/models/tms_network_token_services_synchronous_provisioning.rb +190 -0
  53. data/lib/cybersource_rest_client/models/tms_network_token_services_visa_token_service.rb +244 -0
  54. data/lib/cybersource_rest_client/models/tms_nullify.rb +212 -0
  55. data/lib/cybersource_rest_client/models/tms_sensitive_privileges.rb +190 -0
  56. data/lib/cybersource_rest_client/models/tms_token_formats.rb +223 -0
  57. data/lib/cybersource_rest_client/models/tmsv2_tokenized_card.rb +321 -321
  58. data/lib/cybersource_rest_client/models/tmsv2_tokenized_card_card.rb +225 -225
  59. data/lib/cybersource_rest_client/models/tmsv2_tokenized_card_metadata.rb +189 -189
  60. data/lib/cybersource_rest_client/models/tmsv2_tokenized_card_metadata_card_art.rb +250 -250
  61. data/lib/cybersource_rest_client/models/tmsv2_tokenized_card_metadata_card_art_background_asset.rb +200 -200
  62. data/lib/cybersource_rest_client/models/tmsv2_tokenized_card_metadata_card_art_background_asset__links.rb +189 -189
  63. data/lib/cybersource_rest_client/models/tmsv2_tokenized_card_metadata_card_art_background_asset__links_self.rb +190 -190
  64. data/lib/cybersource_rest_client/models/tmsv2_tokenized_card_metadata_card_art_brand_logo_asset.rb +200 -200
  65. data/lib/cybersource_rest_client/models/tmsv2_tokenized_card_metadata_card_art_brand_logo_asset__links.rb +189 -189
  66. data/lib/cybersource_rest_client/models/tmsv2_tokenized_card_metadata_card_art_brand_logo_asset__links_self.rb +190 -190
  67. data/lib/cybersource_rest_client/models/tmsv2_tokenized_card_metadata_card_art_co_brand_logo_asset.rb +200 -200
  68. data/lib/cybersource_rest_client/models/tmsv2_tokenized_card_metadata_card_art_co_brand_logo_asset__links.rb +189 -189
  69. data/lib/cybersource_rest_client/models/tmsv2_tokenized_card_metadata_card_art_co_brand_logo_asset__links_self.rb +190 -190
  70. data/lib/cybersource_rest_client/models/tmsv2_tokenized_card_metadata_card_art_combined_asset.rb +200 -200
  71. data/lib/cybersource_rest_client/models/tmsv2_tokenized_card_metadata_card_art_combined_asset__links.rb +189 -189
  72. data/lib/cybersource_rest_client/models/tmsv2_tokenized_card_metadata_card_art_combined_asset__links_self.rb +190 -190
  73. data/lib/cybersource_rest_client/models/tmsv2_tokenized_card_metadata_card_art_icon_asset.rb +200 -200
  74. data/lib/cybersource_rest_client/models/tmsv2_tokenized_card_metadata_card_art_icon_asset__links.rb +189 -189
  75. data/lib/cybersource_rest_client/models/tmsv2_tokenized_card_metadata_card_art_icon_asset__links_self.rb +190 -190
  76. data/lib/cybersource_rest_client/models/tmsv2_tokenized_card_metadata_card_art_issuer_logo_asset.rb +200 -200
  77. data/lib/cybersource_rest_client/models/tmsv2_tokenized_card_metadata_card_art_issuer_logo_asset__links.rb +189 -189
  78. data/lib/cybersource_rest_client/models/tmsv2_tokenized_card_metadata_card_art_issuer_logo_asset__links_self.rb +190 -190
  79. data/lib/cybersource_rest_client/models/token_permissions.rb +223 -0
  80. data/lib/cybersource_rest_client/models/tss_v2_transactions_get200_response_processing_information.rb +326 -326
  81. data/lib/cybersource_rest_client/models/tss_v2_transactions_get200_response_processing_information_japan_payment_options.rb +322 -247
  82. data/lib/cybersource_rest_client/models/tss_v2_transactions_post201_response__embedded_processing_information.rb +241 -241
  83. data/lib/cybersource_rest_client.rb +13 -0
  84. metadata +16 -3
@@ -1,314 +1,305 @@
1
- =begin
2
- #CyberSource Merged Spec
3
-
4
- #All CyberSource API specs merged together. These are available at https://developer.cybersource.com/api/reference/api-reference.html
5
-
6
- OpenAPI spec version: 0.0.1
7
-
8
- Generated by: https://github.com/swagger-api/swagger-codegen.git
9
- Swagger Codegen version: 2.4.38
10
- =end
11
-
12
- require 'date'
13
-
14
- module CyberSource
15
- class Riskv1exportcomplianceinquiriesOrderInformationLineItems
16
- # Per-item price of the product. This value for this field cannot be negative. You must include either this field or the request-level field `orderInformation.amountDetails.totalAmount` in your request. You can include a decimal point (.), but you cannot include any other special characters. The value is truncated to the correct number of decimal places. #### DCC with a Third-Party Provider Set this field to the converted amount that was returned by the DCC provider. You must include either the 1st line item in the order and this field, or the request-level field `orderInformation.amountDetails.totalAmount` in your request. #### Tax Calculation Required field for U.S., Canadian, international and value added taxes. #### Zero Amount Authorizations If your processor supports zero amount authorizations, you can set this field to 0 for the authorization to check if the card is lost or stolen. #### Maximum Field Lengths For GPN and JCN Gateway: Decimal (10) All other processors: Decimal (15)
17
- attr_accessor :unit_price
18
-
19
- attr_accessor :allowed_export_countries
20
-
21
- attr_accessor :restricted_export_countries
22
-
23
- # Number of units for this order. Must be a non-negative integer. The default is `1`. For an authorization or capture transaction (`processingOptions.capture` is set to `true` or `false`), this field is required when `orderInformation.lineItems[].productCode` is not `default` or one of the other values related to shipping and/or handling. #### Tax Calculation Optional field for U.S., Canadian, international tax, and value added taxes.
24
- attr_accessor :quantity
25
-
26
- # Product identifier code. Also known as the Stock Keeping Unit (SKU) code for the product. For an authorization or capture transaction (`processingOptions.capture` is set to `true` or `false`), this field is required when `orderInformation.lineItems[].productCode` is not set to **default** or one of the other values that are related to shipping and/or handling. #### Tax Calculation Optional field for U.S. and Canadian taxes. Not applicable to international and value added taxes. For an authorization or capture transaction (`processingOptions.capture` is set to `true` or `false`), this field is required when `orderInformation.lineItems[].productCode` is not `default` or one of the values related to shipping and/or handling.
27
- attr_accessor :product_sku
28
-
29
- # Indicates the level of risk for the product. This field can contain one of the following values: - `low`: The product is associated with few chargebacks. - `normal`: The product is associated with a normal number of chargebacks. - `high`: The product is associated with many chargebacks.
30
- attr_accessor :product_risk
31
-
32
- # For an authorization or capture transaction (`processingOptions.capture` is `true` or `false`), this field is required when `orderInformation.lineItems[].productCode` is not `default` or one of the other values that are related to shipping and/or handling. #### Tax Calculation Optional field for U.S., Canadian, international tax, and value added taxes.
33
- attr_accessor :product_name
34
-
35
- # Type of product. The value for this field is used to identify the product category (electronic, handling, physical, service, or shipping). The default value is `default`. If you are performing an authorization transaction (`processingOptions.capture` is set to `false`), and you set this field to a value other than `default` or one of the values related to shipping and/or handling, then `orderInformation.lineItems[].quantity`, `orderInformation.lineItems[].productName`, and `orderInformation.lineItems[].productSku` fields are required. Optional field. #### Tax Calculation Optional field for U.S., Canadian, international tax, and value added taxes. The Product Codes for the tax service are located in the Cybersource Tax Codes guide. Contact Customer Support to request the guide. If you don't send a tax service Product Code in your tax request, product-based rules or exemptions will not be applied and the transaction will default to fully taxable in the locations where you've indicated you need to collect tax [by way of nexus, no nexus, or seller registration number fields].
36
- attr_accessor :product_code
37
-
38
- # Attribute mapping from ruby-style variable name to JSON key.
39
- def self.attribute_map
40
- {
41
- :'unit_price' => :'unitPrice',
42
- :'allowed_export_countries' => :'allowedExportCountries',
43
- :'restricted_export_countries' => :'restrictedExportCountries',
44
- :'quantity' => :'quantity',
45
- :'product_sku' => :'productSKU',
46
- :'product_risk' => :'productRisk',
47
- :'product_name' => :'productName',
48
- :'product_code' => :'productCode'
49
- }
50
- end
51
-
52
- # Attribute mapping from JSON key to ruby-style variable name.
53
- def self.json_map
54
- {
55
- :'unit_price' => :'unit_price',
56
- :'allowed_export_countries' => :'allowed_export_countries',
57
- :'restricted_export_countries' => :'restricted_export_countries',
58
- :'quantity' => :'quantity',
59
- :'product_sku' => :'product_sku',
60
- :'product_risk' => :'product_risk',
61
- :'product_name' => :'product_name',
62
- :'product_code' => :'product_code'
63
- }
64
- end
65
-
66
- # Attribute type mapping.
67
- def self.swagger_types
68
- {
69
- :'unit_price' => :'String',
70
- :'allowed_export_countries' => :'Array<String>',
71
- :'restricted_export_countries' => :'Array<String>',
72
- :'quantity' => :'Integer',
73
- :'product_sku' => :'String',
74
- :'product_risk' => :'String',
75
- :'product_name' => :'String',
76
- :'product_code' => :'String'
77
- }
78
- end
79
-
80
- # Initializes the object
81
- # @param [Hash] attributes Model attributes in the form of hash
82
- def initialize(attributes = {})
83
- return unless attributes.is_a?(Hash)
84
-
85
- # convert string to symbol for hash key
86
- attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
87
-
88
- if attributes.has_key?(:'unitPrice')
89
- self.unit_price = attributes[:'unitPrice']
90
- end
91
-
92
- if attributes.has_key?(:'allowedExportCountries')
93
- if (value = attributes[:'allowedExportCountries']).is_a?(Array)
94
- self.allowed_export_countries = value
95
- end
96
- end
97
-
98
- if attributes.has_key?(:'restrictedExportCountries')
99
- if (value = attributes[:'restrictedExportCountries']).is_a?(Array)
100
- self.restricted_export_countries = value
101
- end
102
- end
103
-
104
- if attributes.has_key?(:'quantity')
105
- self.quantity = attributes[:'quantity']
106
- end
107
-
108
- if attributes.has_key?(:'productSKU')
109
- self.product_sku = attributes[:'productSKU']
110
- end
111
-
112
- if attributes.has_key?(:'productRisk')
113
- self.product_risk = attributes[:'productRisk']
114
- end
115
-
116
- if attributes.has_key?(:'productName')
117
- self.product_name = attributes[:'productName']
118
- end
119
-
120
- if attributes.has_key?(:'productCode')
121
- self.product_code = attributes[:'productCode']
122
- end
123
- end
124
-
125
- # Show invalid properties with the reasons. Usually used together with valid?
126
- # @return Array for valid properties with the reasons
127
- def list_invalid_properties
128
- invalid_properties = Array.new
129
- if @unit_price.nil?
130
- invalid_properties.push('invalid value for "unit_price", unit_price cannot be nil.')
131
- end
132
-
133
- invalid_properties
134
- end
135
-
136
- # Check to see if the all the properties in the model are valid
137
- # @return true if the model is valid
138
- def valid?
139
- return false if @unit_price.nil?
140
- true
141
- end
142
-
143
- # Custom attribute writer method with validation
144
- # @param [Object] unit_price Value to be assigned
145
- def unit_price=(unit_price)
146
- #if unit_price.nil?
147
- #fail ArgumentError, 'unit_price cannot be nil'
148
- #end
149
-
150
- @unit_price = unit_price
151
- end
152
-
153
- # Custom attribute writer method with validation
154
- # @param [Object] quantity Value to be assigned
155
- def quantity=(quantity)
156
- @quantity = quantity
157
- end
158
-
159
- # Custom attribute writer method with validation
160
- # @param [Object] product_sku Value to be assigned
161
- def product_sku=(product_sku)
162
- @product_sku = product_sku
163
- end
164
-
165
- # Custom attribute writer method with validation
166
- # @param [Object] product_risk Value to be assigned
167
- def product_risk=(product_risk)
168
- @product_risk = product_risk
169
- end
170
-
171
- # Custom attribute writer method with validation
172
- # @param [Object] product_name Value to be assigned
173
- def product_name=(product_name)
174
- @product_name = product_name
175
- end
176
-
177
- # Custom attribute writer method with validation
178
- # @param [Object] product_code Value to be assigned
179
- def product_code=(product_code)
180
- @product_code = product_code
181
- end
182
-
183
- # Checks equality by comparing each attribute.
184
- # @param [Object] Object to be compared
185
- def ==(o)
186
- return true if self.equal?(o)
187
- self.class == o.class &&
188
- unit_price == o.unit_price &&
189
- allowed_export_countries == o.allowed_export_countries &&
190
- restricted_export_countries == o.restricted_export_countries &&
191
- quantity == o.quantity &&
192
- product_sku == o.product_sku &&
193
- product_risk == o.product_risk &&
194
- product_name == o.product_name &&
195
- product_code == o.product_code
196
- end
197
-
198
- # @see the `==` method
199
- # @param [Object] Object to be compared
200
- def eql?(o)
201
- self == o
202
- end
203
-
204
- # Calculates hash code according to all attributes.
205
- # @return [Fixnum] Hash code
206
- def hash
207
- [unit_price, allowed_export_countries, restricted_export_countries, quantity, product_sku, product_risk, product_name, product_code].hash
208
- end
209
-
210
- # Builds the object from hash
211
- # @param [Hash] attributes Model attributes in the form of hash
212
- # @return [Object] Returns the model itself
213
- def build_from_hash(attributes)
214
- return nil unless attributes.is_a?(Hash)
215
- self.class.swagger_types.each_pair do |key, type|
216
- if type =~ /\AArray<(.*)>/i
217
- # check to ensure the input is an array given that the the attribute
218
- # is documented as an array but the input is not
219
- if attributes[self.class.attribute_map[key]].is_a?(Array)
220
- self.send("#{self.class.json_map[key]}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
221
- end
222
- elsif !attributes[self.class.attribute_map[key]].nil?
223
- self.send("#{self.class.json_map[key]}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
224
- end # or else data not found in attributes(hash), not an issue as the data can be optional
225
- end
226
-
227
- self
228
- end
229
-
230
- # Deserializes the data based on type
231
- # @param string type Data type
232
- # @param string value Value to be deserialized
233
- # @return [Object] Deserialized data
234
- def _deserialize(type, value)
235
- case type.to_sym
236
- when :DateTime
237
- DateTime.parse(value)
238
- when :Date
239
- Date.parse(value)
240
- when :String
241
- value.to_s
242
- when :Integer
243
- value.to_i
244
- when :Float
245
- value.to_f
246
- when :BOOLEAN
247
- if value.to_s =~ /\A(true|t|yes|y|1)\z/i
248
- true
249
- else
250
- false
251
- end
252
- when :Object
253
- # generic object (usually a Hash), return directly
254
- value
255
- when /\AArray<(?<inner_type>.+)>\z/
256
- inner_type = Regexp.last_match[:inner_type]
257
- value.map { |v| _deserialize(inner_type, v) }
258
- when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
259
- k_type = Regexp.last_match[:k_type]
260
- v_type = Regexp.last_match[:v_type]
261
- {}.tap do |hash|
262
- value.each do |k, v|
263
- hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
264
- end
265
- end
266
- else # model
267
- temp_model = CyberSource.const_get(type).new
268
- temp_model.build_from_hash(value)
269
- end
270
- end
271
-
272
- # Returns the string representation of the object
273
- # @return [String] String presentation of the object
274
- def to_s
275
- to_hash.to_s
276
- end
277
-
278
- # to_body is an alias to to_hash (backward compatibility)
279
- # @return [Hash] Returns the object in the form of hash
280
- def to_body
281
- to_hash
282
- end
283
-
284
- # Returns the object in the form of hash
285
- # @return [Hash] Returns the object in the form of hash
286
- def to_hash
287
- hash = {}
288
- self.class.attribute_map.each_pair do |attr, param|
289
- value = self.send(attr)
290
- next if value.nil?
291
- hash[param] = _to_hash(value)
292
- end
293
- hash
294
- end
295
-
296
- # Outputs non-array value in the form of hash
297
- # For object, use to_hash. Otherwise, just return the value
298
- # @param [Object] value Any valid value
299
- # @return [Hash] Returns the value in the form of hash
300
- def _to_hash(value)
301
- if value.is_a?(Array)
302
- value.compact.map { |v| _to_hash(v) }
303
- elsif value.is_a?(Hash)
304
- {}.tap do |hash|
305
- value.each { |k, v| hash[k] = _to_hash(v) }
306
- end
307
- elsif value.respond_to? :to_hash
308
- value.to_hash
309
- else
310
- value
311
- end
312
- end
313
- end
314
- end
1
+ =begin
2
+ #CyberSource Merged Spec
3
+
4
+ #All CyberSource API specs merged together. These are available at https://developer.cybersource.com/api/reference/api-reference.html
5
+
6
+ OpenAPI spec version: 0.0.1
7
+
8
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
9
+ Swagger Codegen version: 2.4.38
10
+ =end
11
+
12
+ require 'date'
13
+
14
+ module CyberSource
15
+ class Riskv1exportcomplianceinquiriesOrderInformationLineItems
16
+ # Per-item price of the product. If line items are present in the request, the unit price is a mandatory field.
17
+ attr_accessor :unit_price
18
+
19
+ attr_accessor :allowed_export_countries
20
+
21
+ attr_accessor :restricted_export_countries
22
+
23
+ # Number of units for this order. Must be a non-negative integer. The default is `1`. For an authorization or capture transaction (`processingOptions.capture` is set to `true` or `false`), this field is required when `orderInformation.lineItems[].productCode` is not `default` or one of the other values related to shipping and/or handling. #### Tax Calculation Optional field for U.S., Canadian, international tax, and value added taxes.
24
+ attr_accessor :quantity
25
+
26
+ # Product identifier code. Also known as the Stock Keeping Unit (SKU) code for the product. For an authorization or capture transaction (`processingOptions.capture` is set to `true` or `false`), this field is required when `orderInformation.lineItems[].productCode` is not set to **default** or one of the other values that are related to shipping and/or handling. #### Tax Calculation Optional field for U.S. and Canadian taxes. Not applicable to international and value added taxes. For an authorization or capture transaction (`processingOptions.capture` is set to `true` or `false`), this field is required when `orderInformation.lineItems[].productCode` is not `default` or one of the values related to shipping and/or handling.
27
+ attr_accessor :product_sku
28
+
29
+ # Indicates the level of risk for the product. This field can contain one of the following values: - `low`: The product is associated with few chargebacks. - `normal`: The product is associated with a normal number of chargebacks. - `high`: The product is associated with many chargebacks.
30
+ attr_accessor :product_risk
31
+
32
+ # For an authorization or capture transaction (`processingOptions.capture` is `true` or `false`), this field is required when `orderInformation.lineItems[].productCode` is not `default` or one of the other values that are related to shipping and/or handling. #### Tax Calculation Optional field for U.S., Canadian, international tax, and value added taxes.
33
+ attr_accessor :product_name
34
+
35
+ # Type of product. The value for this field is used to identify the product category (electronic, handling, physical, service, or shipping). The default value is `default`. If you are performing an authorization transaction (`processingOptions.capture` is set to `false`), and you set this field to a value other than `default` or one of the values related to shipping and/or handling, then `orderInformation.lineItems[].quantity`, `orderInformation.lineItems[].productName`, and `orderInformation.lineItems[].productSku` fields are required. Optional field. #### Tax Calculation Optional field for U.S., Canadian, international tax, and value added taxes. The Product Codes for the tax service are located in the Cybersource Tax Codes guide. Contact Customer Support to request the guide. If you don't send a tax service Product Code in your tax request, product-based rules or exemptions will not be applied and the transaction will default to fully taxable in the locations where you've indicated you need to collect tax [by way of nexus, no nexus, or seller registration number fields].
36
+ attr_accessor :product_code
37
+
38
+ # Attribute mapping from ruby-style variable name to JSON key.
39
+ def self.attribute_map
40
+ {
41
+ :'unit_price' => :'unitPrice',
42
+ :'allowed_export_countries' => :'allowedExportCountries',
43
+ :'restricted_export_countries' => :'restrictedExportCountries',
44
+ :'quantity' => :'quantity',
45
+ :'product_sku' => :'productSKU',
46
+ :'product_risk' => :'productRisk',
47
+ :'product_name' => :'productName',
48
+ :'product_code' => :'productCode'
49
+ }
50
+ end
51
+
52
+ # Attribute mapping from JSON key to ruby-style variable name.
53
+ def self.json_map
54
+ {
55
+ :'unit_price' => :'unit_price',
56
+ :'allowed_export_countries' => :'allowed_export_countries',
57
+ :'restricted_export_countries' => :'restricted_export_countries',
58
+ :'quantity' => :'quantity',
59
+ :'product_sku' => :'product_sku',
60
+ :'product_risk' => :'product_risk',
61
+ :'product_name' => :'product_name',
62
+ :'product_code' => :'product_code'
63
+ }
64
+ end
65
+
66
+ # Attribute type mapping.
67
+ def self.swagger_types
68
+ {
69
+ :'unit_price' => :'String',
70
+ :'allowed_export_countries' => :'Array<String>',
71
+ :'restricted_export_countries' => :'Array<String>',
72
+ :'quantity' => :'Integer',
73
+ :'product_sku' => :'String',
74
+ :'product_risk' => :'String',
75
+ :'product_name' => :'String',
76
+ :'product_code' => :'String'
77
+ }
78
+ end
79
+
80
+ # Initializes the object
81
+ # @param [Hash] attributes Model attributes in the form of hash
82
+ def initialize(attributes = {})
83
+ return unless attributes.is_a?(Hash)
84
+
85
+ # convert string to symbol for hash key
86
+ attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
87
+
88
+ if attributes.has_key?(:'unitPrice')
89
+ self.unit_price = attributes[:'unitPrice']
90
+ end
91
+
92
+ if attributes.has_key?(:'allowedExportCountries')
93
+ if (value = attributes[:'allowedExportCountries']).is_a?(Array)
94
+ self.allowed_export_countries = value
95
+ end
96
+ end
97
+
98
+ if attributes.has_key?(:'restrictedExportCountries')
99
+ if (value = attributes[:'restrictedExportCountries']).is_a?(Array)
100
+ self.restricted_export_countries = value
101
+ end
102
+ end
103
+
104
+ if attributes.has_key?(:'quantity')
105
+ self.quantity = attributes[:'quantity']
106
+ end
107
+
108
+ if attributes.has_key?(:'productSKU')
109
+ self.product_sku = attributes[:'productSKU']
110
+ end
111
+
112
+ if attributes.has_key?(:'productRisk')
113
+ self.product_risk = attributes[:'productRisk']
114
+ end
115
+
116
+ if attributes.has_key?(:'productName')
117
+ self.product_name = attributes[:'productName']
118
+ end
119
+
120
+ if attributes.has_key?(:'productCode')
121
+ self.product_code = attributes[:'productCode']
122
+ end
123
+ end
124
+
125
+ # Show invalid properties with the reasons. Usually used together with valid?
126
+ # @return Array for valid properties with the reasons
127
+ def list_invalid_properties
128
+ invalid_properties = Array.new
129
+ invalid_properties
130
+ end
131
+
132
+ # Check to see if the all the properties in the model are valid
133
+ # @return true if the model is valid
134
+ def valid?
135
+ true
136
+ end
137
+
138
+ # Custom attribute writer method with validation
139
+ # @param [Object] unit_price Value to be assigned
140
+ def unit_price=(unit_price)
141
+ @unit_price = unit_price
142
+ end
143
+
144
+ # Custom attribute writer method with validation
145
+ # @param [Object] quantity Value to be assigned
146
+ def quantity=(quantity)
147
+ @quantity = quantity
148
+ end
149
+
150
+ # Custom attribute writer method with validation
151
+ # @param [Object] product_sku Value to be assigned
152
+ def product_sku=(product_sku)
153
+ @product_sku = product_sku
154
+ end
155
+
156
+ # Custom attribute writer method with validation
157
+ # @param [Object] product_risk Value to be assigned
158
+ def product_risk=(product_risk)
159
+ @product_risk = product_risk
160
+ end
161
+
162
+ # Custom attribute writer method with validation
163
+ # @param [Object] product_name Value to be assigned
164
+ def product_name=(product_name)
165
+ @product_name = product_name
166
+ end
167
+
168
+ # Custom attribute writer method with validation
169
+ # @param [Object] product_code Value to be assigned
170
+ def product_code=(product_code)
171
+ @product_code = product_code
172
+ end
173
+
174
+ # Checks equality by comparing each attribute.
175
+ # @param [Object] Object to be compared
176
+ def ==(o)
177
+ return true if self.equal?(o)
178
+ self.class == o.class &&
179
+ unit_price == o.unit_price &&
180
+ allowed_export_countries == o.allowed_export_countries &&
181
+ restricted_export_countries == o.restricted_export_countries &&
182
+ quantity == o.quantity &&
183
+ product_sku == o.product_sku &&
184
+ product_risk == o.product_risk &&
185
+ product_name == o.product_name &&
186
+ product_code == o.product_code
187
+ end
188
+
189
+ # @see the `==` method
190
+ # @param [Object] Object to be compared
191
+ def eql?(o)
192
+ self == o
193
+ end
194
+
195
+ # Calculates hash code according to all attributes.
196
+ # @return [Fixnum] Hash code
197
+ def hash
198
+ [unit_price, allowed_export_countries, restricted_export_countries, quantity, product_sku, product_risk, product_name, product_code].hash
199
+ end
200
+
201
+ # Builds the object from hash
202
+ # @param [Hash] attributes Model attributes in the form of hash
203
+ # @return [Object] Returns the model itself
204
+ def build_from_hash(attributes)
205
+ return nil unless attributes.is_a?(Hash)
206
+ self.class.swagger_types.each_pair do |key, type|
207
+ if type =~ /\AArray<(.*)>/i
208
+ # check to ensure the input is an array given that the the attribute
209
+ # is documented as an array but the input is not
210
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
211
+ self.send("#{self.class.json_map[key]}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
212
+ end
213
+ elsif !attributes[self.class.attribute_map[key]].nil?
214
+ self.send("#{self.class.json_map[key]}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
215
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
216
+ end
217
+
218
+ self
219
+ end
220
+
221
+ # Deserializes the data based on type
222
+ # @param string type Data type
223
+ # @param string value Value to be deserialized
224
+ # @return [Object] Deserialized data
225
+ def _deserialize(type, value)
226
+ case type.to_sym
227
+ when :DateTime
228
+ DateTime.parse(value)
229
+ when :Date
230
+ Date.parse(value)
231
+ when :String
232
+ value.to_s
233
+ when :Integer
234
+ value.to_i
235
+ when :Float
236
+ value.to_f
237
+ when :BOOLEAN
238
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
239
+ true
240
+ else
241
+ false
242
+ end
243
+ when :Object
244
+ # generic object (usually a Hash), return directly
245
+ value
246
+ when /\AArray<(?<inner_type>.+)>\z/
247
+ inner_type = Regexp.last_match[:inner_type]
248
+ value.map { |v| _deserialize(inner_type, v) }
249
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
250
+ k_type = Regexp.last_match[:k_type]
251
+ v_type = Regexp.last_match[:v_type]
252
+ {}.tap do |hash|
253
+ value.each do |k, v|
254
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
255
+ end
256
+ end
257
+ else # model
258
+ temp_model = CyberSource.const_get(type).new
259
+ temp_model.build_from_hash(value)
260
+ end
261
+ end
262
+
263
+ # Returns the string representation of the object
264
+ # @return [String] String presentation of the object
265
+ def to_s
266
+ to_hash.to_s
267
+ end
268
+
269
+ # to_body is an alias to to_hash (backward compatibility)
270
+ # @return [Hash] Returns the object in the form of hash
271
+ def to_body
272
+ to_hash
273
+ end
274
+
275
+ # Returns the object in the form of hash
276
+ # @return [Hash] Returns the object in the form of hash
277
+ def to_hash
278
+ hash = {}
279
+ self.class.attribute_map.each_pair do |attr, param|
280
+ value = self.send(attr)
281
+ next if value.nil?
282
+ hash[param] = _to_hash(value)
283
+ end
284
+ hash
285
+ end
286
+
287
+ # Outputs non-array value in the form of hash
288
+ # For object, use to_hash. Otherwise, just return the value
289
+ # @param [Object] value Any valid value
290
+ # @return [Hash] Returns the value in the form of hash
291
+ def _to_hash(value)
292
+ if value.is_a?(Array)
293
+ value.compact.map { |v| _to_hash(v) }
294
+ elsif value.is_a?(Hash)
295
+ {}.tap do |hash|
296
+ value.each { |k, v| hash[k] = _to_hash(v) }
297
+ end
298
+ elsif value.respond_to? :to_hash
299
+ value.to_hash
300
+ else
301
+ value
302
+ end
303
+ end
304
+ end
305
+ end