patch_ruby 1.0.0 → 1.2.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +78 -0
  3. data/Gemfile +2 -1
  4. data/Gemfile.lock +30 -11
  5. data/Makefile +10 -0
  6. data/README.md +61 -8
  7. data/lib/patch_ruby.rb +2 -0
  8. data/lib/patch_ruby/models/allocation.rb +25 -0
  9. data/lib/patch_ruby/models/create_mass_estimate_request.rb +48 -4
  10. data/lib/patch_ruby/models/create_order_request.rb +75 -7
  11. data/lib/patch_ruby/models/create_preference_request.rb +7 -0
  12. data/lib/patch_ruby/models/error_response.rb +9 -0
  13. data/lib/patch_ruby/models/estimate.rb +29 -1
  14. data/lib/patch_ruby/models/estimate_list_response.rb +9 -0
  15. data/lib/patch_ruby/models/estimate_response.rb +9 -0
  16. data/lib/patch_ruby/models/meta_index_object.rb +11 -0
  17. data/lib/patch_ruby/models/order.rb +105 -4
  18. data/lib/patch_ruby/models/order_list_response.rb +9 -0
  19. data/lib/patch_ruby/models/order_response.rb +9 -0
  20. data/lib/patch_ruby/models/photo.rb +233 -0
  21. data/lib/patch_ruby/models/preference.rb +25 -0
  22. data/lib/patch_ruby/models/preference_list_response.rb +9 -0
  23. data/lib/patch_ruby/models/preference_response.rb +9 -0
  24. data/lib/patch_ruby/models/project.rb +141 -25
  25. data/lib/patch_ruby/models/project_list_response.rb +9 -0
  26. data/lib/patch_ruby/models/project_response.rb +9 -0
  27. data/lib/patch_ruby/models/standard.rb +254 -0
  28. data/lib/patch_ruby/version.rb +1 -1
  29. data/spec/api/estimates_api_spec.rb +6 -7
  30. data/spec/api/orders_api_spec.rb +10 -11
  31. data/spec/api/preferences_api_spec.rb +8 -9
  32. data/spec/api/projects_api_spec.rb +4 -5
  33. data/spec/constants.rb +3 -0
  34. data/spec/factories/allocations.rb +7 -0
  35. data/spec/factories/create_mass_estimate_requests.rb +6 -0
  36. data/spec/factories/create_order_requests.rb +8 -0
  37. data/spec/factories/create_preference_requests.rb +5 -0
  38. data/spec/factories/error_responses.rb +7 -0
  39. data/spec/factories/estimate_list_responses.rb +8 -0
  40. data/spec/factories/estimate_responses.rb +7 -0
  41. data/spec/factories/estimates.rb +8 -0
  42. data/spec/factories/meta_index_objects.rb +6 -0
  43. data/spec/factories/order_list_responses.rb +8 -0
  44. data/spec/factories/order_responses.rb +7 -0
  45. data/spec/factories/orders.rb +12 -0
  46. data/spec/factories/preference_list_responses.rb +8 -0
  47. data/spec/factories/preference_responses.rb +7 -0
  48. data/spec/factories/preferences.rb +7 -0
  49. data/spec/factories/project_list_responses.rb +8 -0
  50. data/spec/factories/project_responses.rb +7 -0
  51. data/spec/factories/projects.rb +15 -0
  52. data/spec/integration/estimates_spec.rb +4 -3
  53. data/spec/integration/orders_spec.rb +60 -1
  54. data/spec/integration/preferences_spec.rb +1 -1
  55. data/spec/integration/projects_spec.rb +19 -1
  56. data/spec/models/allocation_spec.rb +8 -2
  57. data/spec/models/create_mass_estimate_request_spec.rb +7 -2
  58. data/spec/models/create_order_request_spec.rb +7 -2
  59. data/spec/models/create_preference_request_spec.rb +8 -2
  60. data/spec/models/error_response_spec.rb +7 -2
  61. data/spec/models/estimate_list_response_spec.rb +7 -2
  62. data/spec/models/estimate_response_spec.rb +7 -2
  63. data/spec/models/estimate_spec.rb +8 -2
  64. data/spec/models/meta_index_object_spec.rb +7 -2
  65. data/spec/models/order_list_response_spec.rb +7 -2
  66. data/spec/models/order_response_spec.rb +7 -2
  67. data/spec/models/order_spec.rb +18 -2
  68. data/spec/models/preference_list_response_spec.rb +7 -2
  69. data/spec/models/preference_response_spec.rb +7 -2
  70. data/spec/models/preference_spec.rb +7 -2
  71. data/spec/models/project_list_response_spec.rb +7 -2
  72. data/spec/models/project_response_spec.rb +7 -2
  73. data/spec/models/project_spec.rb +21 -2
  74. data/spec/spec_helper.rb +11 -0
  75. data/spec/support/shared/generated_classes.rb +13 -0
  76. metadata +61 -17
@@ -16,20 +16,39 @@ module Patch
16
16
  class CreateOrderRequest
17
17
  attr_accessor :mass_g
18
18
 
19
+ attr_accessor :total_price_cents_usd
20
+
21
+ attr_accessor :project_id
22
+
23
+ attr_accessor :metadata
24
+
19
25
  # Attribute mapping from ruby-style variable name to JSON key.
20
26
  def self.attribute_map
21
27
  {
22
- :'mass_g' => :'mass_g'
28
+ :'mass_g' => :'mass_g',
29
+ :'total_price_cents_usd' => :'total_price_cents_usd',
30
+ :'project_id' => :'project_id',
31
+ :'metadata' => :'metadata'
23
32
  }
24
33
  end
25
34
 
26
35
  # Attribute type mapping.
27
36
  def self.openapi_types
28
37
  {
29
- :'mass_g' => :'Integer'
38
+ :'mass_g' => :'Integer',
39
+ :'total_price_cents_usd' => :'Integer',
40
+ :'project_id' => :'String',
41
+ :'metadata' => :'Object'
30
42
  }
31
43
  end
32
44
 
45
+ # Set with nullable attributes.
46
+ def self.openapi_nullable
47
+ nullable_properties = Set.new
48
+
49
+ nullable_properties
50
+ end
51
+
33
52
  # Allows models with corresponding API classes to delegate API operations to those API classes
34
53
  # Exposes Model.operation_id which delegates to ModelsApi.new.operation_id
35
54
  # Eg. Order.create_order delegates to OrdersApi.new.create_order
@@ -59,14 +78,34 @@ module Patch
59
78
  if attributes.key?(:'mass_g')
60
79
  self.mass_g = attributes[:'mass_g']
61
80
  end
81
+
82
+ if attributes.key?(:'total_price_cents_usd')
83
+ self.total_price_cents_usd = attributes[:'total_price_cents_usd']
84
+ end
85
+
86
+ if attributes.key?(:'project_id')
87
+ self.project_id = attributes[:'project_id']
88
+ end
89
+
90
+ if attributes.key?(:'metadata')
91
+ self.metadata = attributes[:'metadata']
92
+ end
62
93
  end
63
94
 
64
95
  # Show invalid properties with the reasons. Usually used together with valid?
65
96
  # @return Array for valid properties with the reasons
66
97
  def list_invalid_properties
67
98
  invalid_properties = Array.new
68
- if @mass_g.nil?
69
- invalid_properties.push('invalid value for "mass_g", mass_g cannot be nil.')
99
+ if !@mass_g.nil? && @mass_g > 2000000000
100
+ invalid_properties.push('invalid value for "mass_g", must be smaller than or equal to 2000000000.')
101
+ end
102
+
103
+ if !@mass_g.nil? && @mass_g < 1
104
+ invalid_properties.push('invalid value for "mass_g", must be greater than or equal to 1.')
105
+ end
106
+
107
+ if !@total_price_cents_usd.nil? && @total_price_cents_usd < 1
108
+ invalid_properties.push('invalid value for "total_price_cents_usd", must be greater than or equal to 1.')
70
109
  end
71
110
 
72
111
  invalid_properties
@@ -75,16 +114,45 @@ module Patch
75
114
  # Check to see if the all the properties in the model are valid
76
115
  # @return true if the model is valid
77
116
  def valid?
78
- return false if @mass_g.nil?
117
+ return false if !@mass_g.nil? && @mass_g > 2000000000
118
+ return false if !@mass_g.nil? && @mass_g < 1
119
+ return false if !@total_price_cents_usd.nil? && @total_price_cents_usd < 1
79
120
  true
80
121
  end
81
122
 
123
+ # Custom attribute writer method with validation
124
+ # @param [Object] mass_g Value to be assigned
125
+ def mass_g=(mass_g)
126
+ if !mass_g.nil? && mass_g > 2000000000
127
+ fail ArgumentError, 'invalid value for "mass_g", must be smaller than or equal to 2000000000.'
128
+ end
129
+
130
+ if !mass_g.nil? && mass_g < 1
131
+ fail ArgumentError, 'invalid value for "mass_g", must be greater than or equal to 1.'
132
+ end
133
+
134
+ @mass_g = mass_g
135
+ end
136
+
137
+ # Custom attribute writer method with validation
138
+ # @param [Object] total_price_cents_usd Value to be assigned
139
+ def total_price_cents_usd=(total_price_cents_usd)
140
+ if !total_price_cents_usd.nil? && total_price_cents_usd < 1
141
+ fail ArgumentError, 'invalid value for "total_price_cents_usd", must be greater than or equal to 1.'
142
+ end
143
+
144
+ @total_price_cents_usd = total_price_cents_usd
145
+ end
146
+
82
147
  # Checks equality by comparing each attribute.
83
148
  # @param [Object] Object to be compared
84
149
  def ==(o)
85
150
  return true if self.equal?(o)
86
151
  self.class == o.class &&
87
- mass_g == o.mass_g
152
+ mass_g == o.mass_g &&
153
+ total_price_cents_usd == o.total_price_cents_usd &&
154
+ project_id == o.project_id &&
155
+ metadata == o.metadata
88
156
  end
89
157
 
90
158
  # @see the `==` method
@@ -96,7 +164,7 @@ module Patch
96
164
  # Calculates hash code according to all attributes.
97
165
  # @return [Integer] Hash code
98
166
  def hash
99
- [mass_g].hash
167
+ [mass_g, total_price_cents_usd, project_id, metadata].hash
100
168
  end
101
169
 
102
170
  # Builds the object from hash
@@ -30,6 +30,13 @@ module Patch
30
30
  }
31
31
  end
32
32
 
33
+ # Set with nullable attributes.
34
+ def self.openapi_nullable
35
+ nullable_properties = Set.new
36
+
37
+ nullable_properties
38
+ end
39
+
33
40
  # Allows models with corresponding API classes to delegate API operations to those API classes
34
41
  # Exposes Model.operation_id which delegates to ModelsApi.new.operation_id
35
42
  # Eg. Order.create_order delegates to OrdersApi.new.create_order
@@ -38,6 +38,15 @@ module Patch
38
38
  }
39
39
  end
40
40
 
41
+ # Set with nullable attributes.
42
+ def self.openapi_nullable
43
+ nullable_properties = Set.new
44
+
45
+ nullable_properties.add("data")
46
+
47
+ nullable_properties
48
+ end
49
+
41
50
  # Allows models with corresponding API classes to delegate API operations to those API classes
42
51
  # Exposes Model.operation_id which delegates to ModelsApi.new.operation_id
43
52
  # Eg. Order.create_order delegates to OrdersApi.new.create_order
@@ -14,12 +14,16 @@ require 'date'
14
14
 
15
15
  module Patch
16
16
  class Estimate
17
+ # A unique uid for the record. UIDs will be prepended by est_prod or est_test depending on the mode it was created in.
17
18
  attr_accessor :id
18
19
 
20
+ # A boolean indicating if this estimate is a production or test mode estimate.
19
21
  attr_accessor :production
20
22
 
23
+ # The type of estimate. Currently mass is the only supported value.
21
24
  attr_accessor :type
22
25
 
26
+ # An object returning the order associated with this estimate. See the [Order section](/?id=orders) for the full schema.
23
27
  attr_accessor :order
24
28
 
25
29
  # Attribute mapping from ruby-style variable name to JSON key.
@@ -42,6 +46,15 @@ module Patch
42
46
  }
43
47
  end
44
48
 
49
+ # Set with nullable attributes.
50
+ def self.openapi_nullable
51
+ nullable_properties = Set.new
52
+
53
+ nullable_properties.add("order")
54
+
55
+ nullable_properties
56
+ end
57
+
45
58
  # Allows models with corresponding API classes to delegate API operations to those API classes
46
59
  # Exposes Model.operation_id which delegates to ModelsApi.new.operation_id
47
60
  # Eg. Order.create_order delegates to OrdersApi.new.create_order
@@ -89,12 +102,27 @@ module Patch
89
102
  # @return Array for valid properties with the reasons
90
103
  def list_invalid_properties
91
104
  invalid_properties = Array.new
105
+ if @id.nil?
106
+ invalid_properties.push('invalid value for "id", id cannot be nil.')
107
+ end
108
+
109
+ if @production.nil?
110
+ invalid_properties.push('invalid value for "production", production cannot be nil.')
111
+ end
112
+
113
+ if @type.nil?
114
+ invalid_properties.push('invalid value for "type", type cannot be nil.')
115
+ end
116
+
92
117
  invalid_properties
93
118
  end
94
119
 
95
120
  # Check to see if the all the properties in the model are valid
96
121
  # @return true if the model is valid
97
122
  def valid?
123
+ return false if @id.nil?
124
+ return false if @production.nil?
125
+ return false if @type.nil?
98
126
  true
99
127
  end
100
128
 
@@ -211,7 +239,7 @@ module Patch
211
239
  is_nullable = self.class.openapi_nullable.include?(attr)
212
240
  next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
213
241
  end
214
-
242
+
215
243
  hash[param] = _to_hash(value)
216
244
  end
217
245
  hash
@@ -42,6 +42,15 @@ module Patch
42
42
  }
43
43
  end
44
44
 
45
+ # Set with nullable attributes.
46
+ def self.openapi_nullable
47
+ nullable_properties = Set.new
48
+
49
+ nullable_properties.add("error")
50
+
51
+ nullable_properties
52
+ end
53
+
45
54
  # Allows models with corresponding API classes to delegate API operations to those API classes
46
55
  # Exposes Model.operation_id which delegates to ModelsApi.new.operation_id
47
56
  # Eg. Order.create_order delegates to OrdersApi.new.create_order
@@ -38,6 +38,15 @@ module Patch
38
38
  }
39
39
  end
40
40
 
41
+ # Set with nullable attributes.
42
+ def self.openapi_nullable
43
+ nullable_properties = Set.new
44
+
45
+ nullable_properties.add("error")
46
+
47
+ nullable_properties
48
+ end
49
+
41
50
  # Allows models with corresponding API classes to delegate API operations to those API classes
42
51
  # Exposes Model.operation_id which delegates to ModelsApi.new.operation_id
43
52
  # Eg. Order.create_order delegates to OrdersApi.new.create_order
@@ -34,6 +34,17 @@ module Patch
34
34
  }
35
35
  end
36
36
 
37
+ # Set with nullable attributes.
38
+ def self.openapi_nullable
39
+ nullable_properties = Set.new
40
+
41
+ nullable_properties.add("prev_page")
42
+
43
+ nullable_properties.add("next_page")
44
+
45
+ nullable_properties
46
+ end
47
+
37
48
  # Allows models with corresponding API classes to delegate API operations to those API classes
38
49
  # Exposes Model.operation_id which delegates to ModelsApi.new.operation_id
39
50
  # Eg. Order.create_order delegates to OrdersApi.new.create_order
@@ -14,20 +14,33 @@ require 'date'
14
14
 
15
15
  module Patch
16
16
  class Order
17
+ # A unique uid for the record. UIDs will be prepended by ord_prod or ord_test depending on the mode it was created in.
17
18
  attr_accessor :id
18
19
 
20
+ # The amount of carbon offsets in grams purchased through this order.
19
21
  attr_accessor :mass_g
20
22
 
23
+ # A boolean indicating if this order is a production or test mode order.
21
24
  attr_accessor :production
22
25
 
26
+ # The current state of the order.
23
27
  attr_accessor :state
24
28
 
29
+ # The current state of the allocated carbon offsets of the order.
25
30
  attr_accessor :allocation_state
26
31
 
32
+ # The total price in cents USD of the carbon offsets purchased through this order.
27
33
  attr_accessor :price_cents_usd
28
34
 
35
+ # The Patch Fee in cents USD for this order.
36
+ attr_accessor :patch_fee_cents_usd
37
+
38
+ # An array containing the inventory allocations for this order.
29
39
  attr_accessor :allocations
30
40
 
41
+ # An optional JSON object containing metadata for this order.
42
+ attr_accessor :metadata
43
+
31
44
  class EnumAttributeValidator
32
45
  attr_reader :datatype
33
46
  attr_reader :allowable_values
@@ -59,7 +72,9 @@ module Patch
59
72
  :'state' => :'state',
60
73
  :'allocation_state' => :'allocation_state',
61
74
  :'price_cents_usd' => :'price_cents_usd',
62
- :'allocations' => :'allocations'
75
+ :'patch_fee_cents_usd' => :'patch_fee_cents_usd',
76
+ :'allocations' => :'allocations',
77
+ :'metadata' => :'metadata'
63
78
  }
64
79
  end
65
80
 
@@ -72,10 +87,23 @@ module Patch
72
87
  :'state' => :'String',
73
88
  :'allocation_state' => :'String',
74
89
  :'price_cents_usd' => :'String',
75
- :'allocations' => :'Array<Allocation>'
90
+ :'patch_fee_cents_usd' => :'String',
91
+ :'allocations' => :'Array<Allocation>',
92
+ :'metadata' => :'Object'
76
93
  }
77
94
  end
78
95
 
96
+ # Set with nullable attributes.
97
+ def self.openapi_nullable
98
+ nullable_properties = Set.new
99
+
100
+ nullable_properties.add("price_cents_usd")
101
+
102
+ nullable_properties.add("patch_fee_cents_usd")
103
+
104
+ nullable_properties
105
+ end
106
+
79
107
  # Allows models with corresponding API classes to delegate API operations to those API classes
80
108
  # Exposes Model.operation_id which delegates to ModelsApi.new.operation_id
81
109
  # Eg. Order.create_order delegates to OrdersApi.new.create_order
@@ -126,30 +154,101 @@ module Patch
126
154
  self.price_cents_usd = attributes[:'price_cents_usd']
127
155
  end
128
156
 
157
+ if attributes.key?(:'patch_fee_cents_usd')
158
+ self.patch_fee_cents_usd = attributes[:'patch_fee_cents_usd']
159
+ end
160
+
129
161
  if attributes.key?(:'allocations')
130
162
  if (value = attributes[:'allocations']).is_a?(Array)
131
163
  self.allocations = value
132
164
  end
133
165
  end
166
+
167
+ if attributes.key?(:'metadata')
168
+ self.metadata = attributes[:'metadata']
169
+ end
134
170
  end
135
171
 
136
172
  # Show invalid properties with the reasons. Usually used together with valid?
137
173
  # @return Array for valid properties with the reasons
138
174
  def list_invalid_properties
139
175
  invalid_properties = Array.new
176
+ if @id.nil?
177
+ invalid_properties.push('invalid value for "id", id cannot be nil.')
178
+ end
179
+
180
+ if @mass_g.nil?
181
+ invalid_properties.push('invalid value for "mass_g", mass_g cannot be nil.')
182
+ end
183
+
184
+ if @mass_g > 2000000000
185
+ invalid_properties.push('invalid value for "mass_g", must be smaller than or equal to 2000000000.')
186
+ end
187
+
188
+ if @mass_g < 1
189
+ invalid_properties.push('invalid value for "mass_g", must be greater than or equal to 1.')
190
+ end
191
+
192
+ if @production.nil?
193
+ invalid_properties.push('invalid value for "production", production cannot be nil.')
194
+ end
195
+
196
+ if @state.nil?
197
+ invalid_properties.push('invalid value for "state", state cannot be nil.')
198
+ end
199
+
200
+ if @allocation_state.nil?
201
+ invalid_properties.push('invalid value for "allocation_state", allocation_state cannot be nil.')
202
+ end
203
+
204
+ if @allocations.nil?
205
+ invalid_properties.push('invalid value for "allocations", allocations cannot be nil.')
206
+ end
207
+
208
+ if @metadata.nil?
209
+ invalid_properties.push('invalid value for "metadata", metadata cannot be nil.')
210
+ end
211
+
140
212
  invalid_properties
141
213
  end
142
214
 
143
215
  # Check to see if the all the properties in the model are valid
144
216
  # @return true if the model is valid
145
217
  def valid?
218
+ return false if @id.nil?
219
+ return false if @mass_g.nil?
220
+ return false if @mass_g > 2000000000
221
+ return false if @mass_g < 1
222
+ return false if @production.nil?
223
+ return false if @state.nil?
146
224
  state_validator = EnumAttributeValidator.new('String', ["draft", "placed", "complete", "cancelled"])
147
225
  return false unless state_validator.valid?(@state)
226
+ return false if @allocation_state.nil?
148
227
  allocation_state_validator = EnumAttributeValidator.new('String', ["pending", "partially_allocated", "allocated"])
149
228
  return false unless allocation_state_validator.valid?(@allocation_state)
229
+ return false if @allocations.nil?
230
+ return false if @metadata.nil?
150
231
  true
151
232
  end
152
233
 
234
+ # Custom attribute writer method with validation
235
+ # @param [Object] mass_g Value to be assigned
236
+ def mass_g=(mass_g)
237
+ if mass_g.nil?
238
+ fail ArgumentError, 'mass_g cannot be nil'
239
+ end
240
+
241
+ if mass_g > 2000000000
242
+ fail ArgumentError, 'invalid value for "mass_g", must be smaller than or equal to 2000000000.'
243
+ end
244
+
245
+ if mass_g < 1
246
+ fail ArgumentError, 'invalid value for "mass_g", must be greater than or equal to 1.'
247
+ end
248
+
249
+ @mass_g = mass_g
250
+ end
251
+
153
252
  # Custom attribute writer method checking allowed values (enum).
154
253
  # @param [Object] state Object to be assigned
155
254
  def state=(state)
@@ -181,7 +280,9 @@ module Patch
181
280
  state == o.state &&
182
281
  allocation_state == o.allocation_state &&
183
282
  price_cents_usd == o.price_cents_usd &&
184
- allocations == o.allocations
283
+ patch_fee_cents_usd == o.patch_fee_cents_usd &&
284
+ allocations == o.allocations &&
285
+ metadata == o.metadata
185
286
  end
186
287
 
187
288
  # @see the `==` method
@@ -193,7 +294,7 @@ module Patch
193
294
  # Calculates hash code according to all attributes.
194
295
  # @return [Integer] Hash code
195
296
  def hash
196
- [id, mass_g, production, state, allocation_state, price_cents_usd, allocations].hash
297
+ [id, mass_g, production, state, allocation_state, price_cents_usd, patch_fee_cents_usd, allocations, metadata].hash
197
298
  end
198
299
 
199
300
  # Builds the object from hash