repull 0.2.8 → 0.2.9

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 (54) hide show
  1. checksums.yaml +4 -4
  2. data/lib/repull/api/airbnb_api.rb +116 -129
  3. data/lib/repull/api/billing_api.rb +0 -55
  4. data/lib/repull/api/booking_com_api.rb +19 -118
  5. data/lib/repull/api/listings_api.rb +74 -0
  6. data/lib/repull/api/reservations_api.rb +0 -197
  7. data/lib/repull/api/{availability_api.rb → sandbox_api.rb} +35 -66
  8. data/lib/repull/api/vrbo_api.rb +0 -126
  9. data/lib/repull/models/{create_studio_project_request.rb → airbnb_availability_write_request.rb} +38 -52
  10. data/lib/repull/models/{create_studio_deployment201_response_data.rb → airbnb_calendar_operation.rb} +108 -57
  11. data/lib/repull/models/{update_studio_project_request.rb → airbnb_listing_action_request.rb} +55 -47
  12. data/lib/repull/models/{update_availability_request.rb → airbnb_pricing_write_request.rb} +100 -11
  13. data/lib/repull/models/{update_reservation_request.rb → booking_availability_update.rb} +124 -22
  14. data/lib/repull/models/{list_studio_deployments200_response.rb → booking_availability_update_request.rb} +90 -18
  15. data/lib/repull/models/{generate_studio_completion_request_project_id.rb → booking_availability_update_request_property_id.rb} +2 -2
  16. data/lib/repull/models/{get_studio_deployment200_response.rb → booking_availability_update_request_updates_inner.rb} +74 -117
  17. data/lib/repull/models/booking_pricing_rate_update.rb +1 -0
  18. data/lib/repull/models/booking_pricing_rate_update_restrictions.rb +65 -6
  19. data/lib/repull/models/{get_studio_project200_response.rb → listing_content_update_request.rb} +106 -10
  20. data/lib/repull/models/{upsert_studio_project_file200_response.rb → listing_content_update_request_address.rb} +53 -10
  21. data/lib/repull/models/listing_content_update_request_amenities.rb +105 -0
  22. data/lib/repull/models/{create_studio_deployment_request.rb → listing_content_update_request_amenities_one_of_inner.rb} +51 -20
  23. data/lib/repull/models/{create_studio_project_generation_request.rb → listing_content_update_request_occupancy.rb} +42 -28
  24. data/lib/repull/{api/ai_api.rb → models/listing_content_update_request_photos_inner.rb} +77 -59
  25. data/lib/repull/models/{generate_studio_completion200_response_data.rb → listing_content_update_request_photos_inner_one_of.rb} +81 -66
  26. data/lib/repull/models/{generate_studio_completion200_response.rb → listing_content_update_request_policies.rb} +116 -10
  27. data/lib/repull/models/{delete_studio_project200_response_data.rb → listing_content_update_response.rb} +26 -10
  28. data/lib/repull/models/map_airbnb_listing_request.rb +215 -0
  29. data/lib/repull/models/{create_reservation_request.rb → map_airbnb_listing_response.rb} +137 -116
  30. data/lib/repull/models/property.rb +42 -69
  31. data/lib/repull/models/reservation.rb +28 -1
  32. data/lib/repull/models/{upsert_studio_project_file_request.rb → sandbox_fixture_ref.rb} +48 -20
  33. data/lib/repull/models/{delete_studio_deployment200_response_data.rb → sandbox_reset_result.rb} +72 -11
  34. data/lib/repull/models/sandbox_reset_result_deleted.rb +216 -0
  35. data/lib/repull/models/sandbox_seed_result.rb +278 -0
  36. data/lib/repull/version.rb +1 -1
  37. data/lib/repull.rb +24 -35
  38. data/openapi/v1.json +1167 -2030
  39. metadata +26 -37
  40. data/lib/repull/api/studio_api.rb +0 -1094
  41. data/lib/repull/models/create_ai_operation200_response.rb +0 -156
  42. data/lib/repull/models/create_studio_deployment201_response.rb +0 -147
  43. data/lib/repull/models/create_studio_project201_response.rb +0 -147
  44. data/lib/repull/models/create_studio_project201_response_data.rb +0 -199
  45. data/lib/repull/models/create_studio_project_generation201_response.rb +0 -147
  46. data/lib/repull/models/create_studio_project_generation201_response_data.rb +0 -165
  47. data/lib/repull/models/delete_studio_deployment200_response.rb +0 -147
  48. data/lib/repull/models/delete_studio_project200_response.rb +0 -147
  49. data/lib/repull/models/delete_studio_project_file200_response.rb +0 -147
  50. data/lib/repull/models/delete_studio_project_file200_response_data.rb +0 -156
  51. data/lib/repull/models/generate_studio_completion_request.rb +0 -305
  52. data/lib/repull/models/list_studio_project_files200_response.rb +0 -149
  53. data/lib/repull/models/list_studio_projects200_response.rb +0 -149
  54. data/lib/repull/models/upsert_studio_project_file200_response_data.rb +0 -147
@@ -14,42 +14,37 @@ require 'date'
14
14
  require 'time'
15
15
 
16
16
  module Repull
17
- class GenerateStudioCompletion200ResponseData < ApiModelBase
18
- # Generated completion text.
19
- attr_accessor :text
17
+ class ListingContentUpdateRequestPhotosInnerOneOf < ApiModelBase
18
+ # Hosted image URL (http/https).
19
+ attr_accessor :url
20
20
 
21
- attr_accessor :generation_id
21
+ attr_accessor :thumbnail_url
22
22
 
23
- # Model identifier that produced the response.
24
- attr_accessor :model
23
+ attr_accessor :caption
25
24
 
26
- attr_accessor :tokens_in
25
+ attr_accessor :category
27
26
 
28
- attr_accessor :tokens_out
27
+ attr_accessor :width
29
28
 
30
- attr_accessor :latency_ms
29
+ attr_accessor :height
31
30
 
32
- # Cost in millionths of a USD.
33
- attr_accessor :cost_usd_micro
31
+ # Explicit position; defaults to the array index.
32
+ attr_accessor :sort_order
34
33
 
35
- # True if the response was served from cache.
36
- attr_accessor :cached
37
-
38
- # True if the primary model failed and Repull AI fell back to the secondary.
39
- attr_accessor :fallback
34
+ # Provenance URL; defaults to `url`.
35
+ attr_accessor :source_url
40
36
 
41
37
  # Attribute mapping from ruby-style variable name to JSON key.
42
38
  def self.attribute_map
43
39
  {
44
- :'text' => :'text',
45
- :'generation_id' => :'generation_id',
46
- :'model' => :'model',
47
- :'tokens_in' => :'tokens_in',
48
- :'tokens_out' => :'tokens_out',
49
- :'latency_ms' => :'latency_ms',
50
- :'cost_usd_micro' => :'cost_usd_micro',
51
- :'cached' => :'cached',
52
- :'fallback' => :'fallback'
40
+ :'url' => :'url',
41
+ :'thumbnail_url' => :'thumbnailUrl',
42
+ :'caption' => :'caption',
43
+ :'category' => :'category',
44
+ :'width' => :'width',
45
+ :'height' => :'height',
46
+ :'sort_order' => :'sortOrder',
47
+ :'source_url' => :'sourceUrl'
53
48
  }
54
49
  end
55
50
 
@@ -66,21 +61,27 @@ module Repull
66
61
  # Attribute type mapping.
67
62
  def self.openapi_types
68
63
  {
69
- :'text' => :'String',
70
- :'generation_id' => :'String',
71
- :'model' => :'String',
72
- :'tokens_in' => :'Integer',
73
- :'tokens_out' => :'Integer',
74
- :'latency_ms' => :'Integer',
75
- :'cost_usd_micro' => :'Integer',
76
- :'cached' => :'Boolean',
77
- :'fallback' => :'Boolean'
64
+ :'url' => :'String',
65
+ :'thumbnail_url' => :'String',
66
+ :'caption' => :'String',
67
+ :'category' => :'String',
68
+ :'width' => :'Integer',
69
+ :'height' => :'Integer',
70
+ :'sort_order' => :'Integer',
71
+ :'source_url' => :'String'
78
72
  }
79
73
  end
80
74
 
81
75
  # List of attributes with nullable: true
82
76
  def self.openapi_nullable
83
77
  Set.new([
78
+ :'thumbnail_url',
79
+ :'caption',
80
+ :'category',
81
+ :'width',
82
+ :'height',
83
+ :'sort_order',
84
+ :'source_url'
84
85
  ])
85
86
  end
86
87
 
@@ -88,52 +89,52 @@ module Repull
88
89
  # @param [Hash] attributes Model attributes in the form of hash
89
90
  def initialize(attributes = {})
90
91
  if (!attributes.is_a?(Hash))
91
- fail ArgumentError, "The input argument (attributes) must be a hash in `Repull::GenerateStudioCompletion200ResponseData` initialize method"
92
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Repull::ListingContentUpdateRequestPhotosInnerOneOf` initialize method"
92
93
  end
93
94
 
94
95
  # check to see if the attribute exists and convert string to symbol for hash key
95
96
  acceptable_attribute_map = self.class.acceptable_attribute_map
96
97
  attributes = attributes.each_with_object({}) { |(k, v), h|
97
98
  if (!acceptable_attribute_map.key?(k.to_sym))
98
- fail ArgumentError, "`#{k}` is not a valid attribute in `Repull::GenerateStudioCompletion200ResponseData`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
99
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Repull::ListingContentUpdateRequestPhotosInnerOneOf`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
99
100
  end
100
101
  h[k.to_sym] = v
101
102
  }
102
103
 
103
- if attributes.key?(:'text')
104
- self.text = attributes[:'text']
105
- end
106
-
107
- if attributes.key?(:'generation_id')
108
- self.generation_id = attributes[:'generation_id']
104
+ if attributes.key?(:'url')
105
+ self.url = attributes[:'url']
106
+ else
107
+ self.url = nil
109
108
  end
110
109
 
111
- if attributes.key?(:'model')
112
- self.model = attributes[:'model']
110
+ if attributes.key?(:'thumbnail_url')
111
+ self.thumbnail_url = attributes[:'thumbnail_url']
113
112
  end
114
113
 
115
- if attributes.key?(:'tokens_in')
116
- self.tokens_in = attributes[:'tokens_in']
114
+ if attributes.key?(:'caption')
115
+ self.caption = attributes[:'caption']
117
116
  end
118
117
 
119
- if attributes.key?(:'tokens_out')
120
- self.tokens_out = attributes[:'tokens_out']
118
+ if attributes.key?(:'category')
119
+ self.category = attributes[:'category']
120
+ else
121
+ self.category = 'property'
121
122
  end
122
123
 
123
- if attributes.key?(:'latency_ms')
124
- self.latency_ms = attributes[:'latency_ms']
124
+ if attributes.key?(:'width')
125
+ self.width = attributes[:'width']
125
126
  end
126
127
 
127
- if attributes.key?(:'cost_usd_micro')
128
- self.cost_usd_micro = attributes[:'cost_usd_micro']
128
+ if attributes.key?(:'height')
129
+ self.height = attributes[:'height']
129
130
  end
130
131
 
131
- if attributes.key?(:'cached')
132
- self.cached = attributes[:'cached']
132
+ if attributes.key?(:'sort_order')
133
+ self.sort_order = attributes[:'sort_order']
133
134
  end
134
135
 
135
- if attributes.key?(:'fallback')
136
- self.fallback = attributes[:'fallback']
136
+ if attributes.key?(:'source_url')
137
+ self.source_url = attributes[:'source_url']
137
138
  end
138
139
  end
139
140
 
@@ -142,6 +143,10 @@ module Repull
142
143
  def list_invalid_properties
143
144
  warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
144
145
  invalid_properties = Array.new
146
+ if @url.nil?
147
+ invalid_properties.push('invalid value for "url", url cannot be nil.')
148
+ end
149
+
145
150
  invalid_properties
146
151
  end
147
152
 
@@ -149,23 +154,33 @@ module Repull
149
154
  # @return true if the model is valid
150
155
  def valid?
151
156
  warn '[DEPRECATED] the `valid?` method is obsolete'
157
+ return false if @url.nil?
152
158
  true
153
159
  end
154
160
 
161
+ # Custom attribute writer method with validation
162
+ # @param [Object] url Value to be assigned
163
+ def url=(url)
164
+ if url.nil?
165
+ fail ArgumentError, 'url cannot be nil'
166
+ end
167
+
168
+ @url = url
169
+ end
170
+
155
171
  # Checks equality by comparing each attribute.
156
172
  # @param [Object] Object to be compared
157
173
  def ==(o)
158
174
  return true if self.equal?(o)
159
175
  self.class == o.class &&
160
- text == o.text &&
161
- generation_id == o.generation_id &&
162
- model == o.model &&
163
- tokens_in == o.tokens_in &&
164
- tokens_out == o.tokens_out &&
165
- latency_ms == o.latency_ms &&
166
- cost_usd_micro == o.cost_usd_micro &&
167
- cached == o.cached &&
168
- fallback == o.fallback
176
+ url == o.url &&
177
+ thumbnail_url == o.thumbnail_url &&
178
+ caption == o.caption &&
179
+ category == o.category &&
180
+ width == o.width &&
181
+ height == o.height &&
182
+ sort_order == o.sort_order &&
183
+ source_url == o.source_url
169
184
  end
170
185
 
171
186
  # @see the `==` method
@@ -177,7 +192,7 @@ module Repull
177
192
  # Calculates hash code according to all attributes.
178
193
  # @return [Integer] Hash code
179
194
  def hash
180
- [text, generation_id, model, tokens_in, tokens_out, latency_ms, cost_usd_micro, cached, fallback].hash
195
+ [url, thumbnail_url, caption, category, width, height, sort_order, source_url].hash
181
196
  end
182
197
 
183
198
  # Builds the object from hash
@@ -14,13 +14,48 @@ require 'date'
14
14
  require 'time'
15
15
 
16
16
  module Repull
17
- class GenerateStudioCompletion200Response < ApiModelBase
18
- attr_accessor :data
17
+ class ListingContentUpdateRequestPolicies < ApiModelBase
18
+ # e.g. \"15\" (3pm).
19
+ attr_accessor :check_in_time_start
20
+
21
+ attr_accessor :check_in_time_end
22
+
23
+ # e.g. \"11\" (11am).
24
+ attr_accessor :check_out_time
25
+
26
+ # Free-text house rules.
27
+ attr_accessor :house_rules
28
+
29
+ # Cancellation policy slug/label.
30
+ attr_accessor :cancellation_policy
31
+
32
+ # Alias for `cancellationPolicy`.
33
+ attr_accessor :cancellation
34
+
35
+ attr_accessor :allows_children
36
+
37
+ attr_accessor :allows_infants
38
+
39
+ attr_accessor :allows_pets
40
+
41
+ attr_accessor :allows_smoking
42
+
43
+ attr_accessor :allows_events
19
44
 
20
45
  # Attribute mapping from ruby-style variable name to JSON key.
21
46
  def self.attribute_map
22
47
  {
23
- :'data' => :'data'
48
+ :'check_in_time_start' => :'checkInTimeStart',
49
+ :'check_in_time_end' => :'checkInTimeEnd',
50
+ :'check_out_time' => :'checkOutTime',
51
+ :'house_rules' => :'houseRules',
52
+ :'cancellation_policy' => :'cancellationPolicy',
53
+ :'cancellation' => :'cancellation',
54
+ :'allows_children' => :'allowsChildren',
55
+ :'allows_infants' => :'allowsInfants',
56
+ :'allows_pets' => :'allowsPets',
57
+ :'allows_smoking' => :'allowsSmoking',
58
+ :'allows_events' => :'allowsEvents'
24
59
  }
25
60
  end
26
61
 
@@ -37,13 +72,34 @@ module Repull
37
72
  # Attribute type mapping.
38
73
  def self.openapi_types
39
74
  {
40
- :'data' => :'GenerateStudioCompletion200ResponseData'
75
+ :'check_in_time_start' => :'String',
76
+ :'check_in_time_end' => :'String',
77
+ :'check_out_time' => :'String',
78
+ :'house_rules' => :'String',
79
+ :'cancellation_policy' => :'String',
80
+ :'cancellation' => :'String',
81
+ :'allows_children' => :'Boolean',
82
+ :'allows_infants' => :'Boolean',
83
+ :'allows_pets' => :'Boolean',
84
+ :'allows_smoking' => :'Boolean',
85
+ :'allows_events' => :'Boolean'
41
86
  }
42
87
  end
43
88
 
44
89
  # List of attributes with nullable: true
45
90
  def self.openapi_nullable
46
91
  Set.new([
92
+ :'check_in_time_start',
93
+ :'check_in_time_end',
94
+ :'check_out_time',
95
+ :'house_rules',
96
+ :'cancellation_policy',
97
+ :'cancellation',
98
+ :'allows_children',
99
+ :'allows_infants',
100
+ :'allows_pets',
101
+ :'allows_smoking',
102
+ :'allows_events'
47
103
  ])
48
104
  end
49
105
 
@@ -51,20 +107,60 @@ module Repull
51
107
  # @param [Hash] attributes Model attributes in the form of hash
52
108
  def initialize(attributes = {})
53
109
  if (!attributes.is_a?(Hash))
54
- fail ArgumentError, "The input argument (attributes) must be a hash in `Repull::GenerateStudioCompletion200Response` initialize method"
110
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Repull::ListingContentUpdateRequestPolicies` initialize method"
55
111
  end
56
112
 
57
113
  # check to see if the attribute exists and convert string to symbol for hash key
58
114
  acceptable_attribute_map = self.class.acceptable_attribute_map
59
115
  attributes = attributes.each_with_object({}) { |(k, v), h|
60
116
  if (!acceptable_attribute_map.key?(k.to_sym))
61
- fail ArgumentError, "`#{k}` is not a valid attribute in `Repull::GenerateStudioCompletion200Response`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
117
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Repull::ListingContentUpdateRequestPolicies`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
62
118
  end
63
119
  h[k.to_sym] = v
64
120
  }
65
121
 
66
- if attributes.key?(:'data')
67
- self.data = attributes[:'data']
122
+ if attributes.key?(:'check_in_time_start')
123
+ self.check_in_time_start = attributes[:'check_in_time_start']
124
+ end
125
+
126
+ if attributes.key?(:'check_in_time_end')
127
+ self.check_in_time_end = attributes[:'check_in_time_end']
128
+ end
129
+
130
+ if attributes.key?(:'check_out_time')
131
+ self.check_out_time = attributes[:'check_out_time']
132
+ end
133
+
134
+ if attributes.key?(:'house_rules')
135
+ self.house_rules = attributes[:'house_rules']
136
+ end
137
+
138
+ if attributes.key?(:'cancellation_policy')
139
+ self.cancellation_policy = attributes[:'cancellation_policy']
140
+ end
141
+
142
+ if attributes.key?(:'cancellation')
143
+ self.cancellation = attributes[:'cancellation']
144
+ end
145
+
146
+ if attributes.key?(:'allows_children')
147
+ self.allows_children = attributes[:'allows_children']
148
+ end
149
+
150
+ if attributes.key?(:'allows_infants')
151
+ self.allows_infants = attributes[:'allows_infants']
152
+ end
153
+
154
+ if attributes.key?(:'allows_pets')
155
+ self.allows_pets = attributes[:'allows_pets']
156
+ end
157
+
158
+ if attributes.key?(:'allows_smoking')
159
+ self.allows_smoking = attributes[:'allows_smoking']
160
+ end
161
+
162
+ if attributes.key?(:'allows_events')
163
+ self.allows_events = attributes[:'allows_events']
68
164
  end
69
165
  end
70
166
 
@@ -88,7 +184,17 @@ module Repull
88
184
  def ==(o)
89
185
  return true if self.equal?(o)
90
186
  self.class == o.class &&
91
- data == o.data
187
+ check_in_time_start == o.check_in_time_start &&
188
+ check_in_time_end == o.check_in_time_end &&
189
+ check_out_time == o.check_out_time &&
190
+ house_rules == o.house_rules &&
191
+ cancellation_policy == o.cancellation_policy &&
192
+ cancellation == o.cancellation &&
193
+ allows_children == o.allows_children &&
194
+ allows_infants == o.allows_infants &&
195
+ allows_pets == o.allows_pets &&
196
+ allows_smoking == o.allows_smoking &&
197
+ allows_events == o.allows_events
92
198
  end
93
199
 
94
200
  # @see the `==` method
@@ -100,7 +206,7 @@ module Repull
100
206
  # Calculates hash code according to all attributes.
101
207
  # @return [Integer] Hash code
102
208
  def hash
103
- [data].hash
209
+ [check_in_time_start, check_in_time_end, check_out_time, house_rules, cancellation_policy, cancellation, allows_children, allows_infants, allows_pets, allows_smoking, allows_events].hash
104
210
  end
105
211
 
106
212
  # Builds the object from hash
@@ -14,16 +14,22 @@ require 'date'
14
14
  require 'time'
15
15
 
16
16
  module Repull
17
- class DeleteStudioProject200ResponseData < ApiModelBase
17
+ class ListingContentUpdateResponse < ApiModelBase
18
+ # The listing id (serialized as a string to preserve precision).
18
19
  attr_accessor :id
19
20
 
20
- attr_accessor :deleted
21
+ # Content slabs that were actually written, e.g. [\"title\",\"occupancy\",\"amenities\"].
22
+ attr_accessor :changed
23
+
24
+ # Provided-but-not-applied fields — e.g. \"photos\" when a non-empty photos array carried no valid http(s) URL.
25
+ attr_accessor :deferred
21
26
 
22
27
  # Attribute mapping from ruby-style variable name to JSON key.
23
28
  def self.attribute_map
24
29
  {
25
30
  :'id' => :'id',
26
- :'deleted' => :'deleted'
31
+ :'changed' => :'changed',
32
+ :'deferred' => :'deferred'
27
33
  }
28
34
  end
29
35
 
@@ -41,7 +47,8 @@ module Repull
41
47
  def self.openapi_types
42
48
  {
43
49
  :'id' => :'String',
44
- :'deleted' => :'Boolean'
50
+ :'changed' => :'Array<String>',
51
+ :'deferred' => :'Array<String>'
45
52
  }
46
53
  end
47
54
 
@@ -55,14 +62,14 @@ module Repull
55
62
  # @param [Hash] attributes Model attributes in the form of hash
56
63
  def initialize(attributes = {})
57
64
  if (!attributes.is_a?(Hash))
58
- fail ArgumentError, "The input argument (attributes) must be a hash in `Repull::DeleteStudioProject200ResponseData` initialize method"
65
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Repull::ListingContentUpdateResponse` initialize method"
59
66
  end
60
67
 
61
68
  # check to see if the attribute exists and convert string to symbol for hash key
62
69
  acceptable_attribute_map = self.class.acceptable_attribute_map
63
70
  attributes = attributes.each_with_object({}) { |(k, v), h|
64
71
  if (!acceptable_attribute_map.key?(k.to_sym))
65
- fail ArgumentError, "`#{k}` is not a valid attribute in `Repull::DeleteStudioProject200ResponseData`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
72
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Repull::ListingContentUpdateResponse`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
66
73
  end
67
74
  h[k.to_sym] = v
68
75
  }
@@ -71,8 +78,16 @@ module Repull
71
78
  self.id = attributes[:'id']
72
79
  end
73
80
 
74
- if attributes.key?(:'deleted')
75
- self.deleted = attributes[:'deleted']
81
+ if attributes.key?(:'changed')
82
+ if (value = attributes[:'changed']).is_a?(Array)
83
+ self.changed = value
84
+ end
85
+ end
86
+
87
+ if attributes.key?(:'deferred')
88
+ if (value = attributes[:'deferred']).is_a?(Array)
89
+ self.deferred = value
90
+ end
76
91
  end
77
92
  end
78
93
 
@@ -97,7 +112,8 @@ module Repull
97
112
  return true if self.equal?(o)
98
113
  self.class == o.class &&
99
114
  id == o.id &&
100
- deleted == o.deleted
115
+ changed == o.changed &&
116
+ deferred == o.deferred
101
117
  end
102
118
 
103
119
  # @see the `==` method
@@ -109,7 +125,7 @@ module Repull
109
125
  # Calculates hash code according to all attributes.
110
126
  # @return [Integer] Hash code
111
127
  def hash
112
- [id, deleted].hash
128
+ [id, changed, deferred].hash
113
129
  end
114
130
 
115
131
  # Builds the object from hash