moxiworks_platform 0.10.1 → 0.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 82b5c85cf1bfe190344e072b8d07a22f7e83e1ef
4
- data.tar.gz: 169e7df98ab8afbcc2194a7fbbec5711abad3b5a
3
+ metadata.gz: 2c3a36316384942e54ebdc8a4bbe8a366646392d
4
+ data.tar.gz: a5f6651b3bda6dd6ce27424db1cb8fc7ab857cb6
5
5
  SHA512:
6
- metadata.gz: 9e988313ba11d00ccea908ba028b5d9b8a43ca2363be9d3d3b6512b2442bea96bbfaadd66135bc4149e4e2bf90482951f73475e925da48a94ba85ec0559713a4
7
- data.tar.gz: 844c67fbda0d00b1cf5a5728552063693822e3631edc034b37ab49d583fcbbe3953c60b322a3fe795d35d583b3eacddd3fc8444992d801ab3d62189dbafcc537
6
+ metadata.gz: 707c1d68ecf7f5ea97b456330f1504ef3b6d065378b0d9a106aca6ad611da912ae77af5609fc7638c1b166076a65cb4bf8c57995f22e0cb5a1ad7d3550baa83f
7
+ data.tar.gz: 2895bcc805bd0e6ed0377097c1ec00e8c2ff6303b592cb11b1183efb7839fc00b62d9f8da91380f3a02a704d125c24d6be4f594ea3fb3fb4c592635621014f78
@@ -1,4 +1,5 @@
1
1
  require 'moxiworks_platform/version'
2
+ require 'moxiworks_platform/session'
2
3
  require 'moxiworks_platform/config'
3
4
  require 'moxiworks_platform/exception'
4
5
  require 'moxiworks_platform/resource'
@@ -56,7 +56,7 @@ module MoxiworksPlatform
56
56
  #
57
57
  # This will be a single digit integer that can be [1,2,3,4,5].
58
58
  # For more information on BuyerTransaction stages see
59
- # <a href='https://moxiworks-platform.github.io/#buyertransaction-stages'>The Moxi Works Platform Documentation</a>
59
+ # {https://moxiworks-platform.github.io/#buyertransaction-stages The Moxi Works Platform Documentation}
60
60
  #
61
61
  # @return [Integer] the stage the BuyerTransaction is in.
62
62
  attr_accessor :stage
@@ -71,7 +71,7 @@ module MoxiworksPlatform
71
71
  # This will be an enumerated string that can be can be
72
72
  # 'initialized', 'configured' , 'active' , 'pending' or 'complete'
73
73
  # For more information on BuyerTransaction stages see
74
- # <a href='https://moxiworks-platform.github.io/#buyertransaction-stages'>The Moxi Works Platform Documentation</a>
74
+ # {https://moxiworks-platform.github.io/#buyertransaction-stages The Moxi Works Platform Documentation}
75
75
  #
76
76
  #
77
77
  # @return [String, enumerated] current state of BuyerTransaction
@@ -168,7 +168,7 @@ module MoxiworksPlatform
168
168
 
169
169
  # @!attribute start_timestamp
170
170
  #
171
- # **NON MLS TRANSACTIONS ONLY ** this is the Unix timestamp
171
+ # this is the Unix timestamp
172
172
  # representing the date the agent initiated transaction discussions
173
173
  # with the client.
174
174
  #
@@ -256,7 +256,7 @@ module MoxiworksPlatform
256
256
  #
257
257
  # In order to promote a BuyerTransaction to the next stage, set the
258
258
  # promote_transaction attribute to true. For more information about
259
- # BuyerTransaction stages, see <a href='https://moxiworks-platform.github.io/#promoting-buyertransaction-stage>The Moxi Works Platform Documentation</a>.
259
+ # BuyerTransaction stages, see {https://moxiworks-platform.github.io/#promoting-buyertransaction-stage The Moxi Works Platform Documentation}.
260
260
  # promote_transaction is only available for BuyerTransaction updates.
261
261
  # Newly created BuyerTransaction objects will automatically be created in
262
262
  # stage 3 (active)
@@ -290,9 +290,9 @@ module MoxiworksPlatform
290
290
  # @option opts [String] :area_of_interest string representing a locality that the client has expressed interest in purchasing a property within
291
291
  # @option opts [Integer or Float] :min_baths minimum desired number of bathrooms in potential properties
292
292
  # @option opts [Integer or Float] :max_baths maximum desired number of bathrooms in potential properties
293
- # @option opts [Boolean] :is_mls_transaction Whether the property being purchased is being listed on an MLS. This should be false for paperwork-only, for sale by owner, off-market, or pocket listing type transactions or any transactions that will not be tracked through an MLS. If is_mls_transaction is false, then start_timestamp should be populated.
293
+ # @option opts [Boolean] :is_mls_transaction Whether the property being purchased is being listed on an MLS. This should be false for paperwork-only, for sale by owner, off-market, or pocket listing type transactions or any transactions that will not be tracked through an MLS.
294
294
  # @option opts [String] :mls_number mls number associated with the transaction -- mls_number should be populated only if is_mls_transaction is true.
295
- # @option opts [Integer] :start_timestamp Unix timestamp representing the date the property was put on sale -- start_timestamp should be populated only if is_mls_transaction is false.
295
+ # @option opts [Integer] :start_timestamp Unix timestamp representing the date the agent initiated transaction discussions with the client.
296
296
  # @option opts [Float] :commission_percentage what percentage the commission is if percentage based -- A BuyerTransaction can only have either commission_percentage or commission_flat_fee populated. Both can not be populated.
297
297
  # @option opts [Integer] :commission_flat_fee how much the commission is if flat fee -- A BuyerTransaction can only have either commission_percentage or commission_flat_fee populated. Both can not be populated.
298
298
  # @option opts [Integer] :target_price target price associated with the transaction if using a target price rather than price range
@@ -304,7 +304,7 @@ module MoxiworksPlatform
304
304
  # agent_identifier:'testis@testomatical.com',
305
305
  # moxi_works_contact_id:'deadbeef-dead-beef-bad4-feedfacebad',
306
306
  # notes: 'foo deeaz',
307
- # name: 'whateverz'
307
+ # transaction_name: 'whateverz'
308
308
  # address: '1234 there ave',
309
309
  # city: 'cityville'
310
310
  # state: 'provinceland',
@@ -440,9 +440,9 @@ module MoxiworksPlatform
440
440
  # @option opts [String] :area_of_interest string representing a locality that the client has expressed interest in purchasing a property within
441
441
  # @option opts [Integer or Float] :min_baths minimum desired number of bathrooms in potential properties
442
442
  # @option opts [Integer or Float] :max_baths maximum desired number of bathrooms in potential properties
443
- # @option opts [Boolean] :is_mls_transaction Whether the property being purchased is being listed on an MLS. This should be false for paperwork-only, for sale by owner, off-market, or pocket listing type transactions or any transactions that will not be tracked through an MLS. If is_mls_transaction is false, then start_timestamp should be populated.
443
+ # @option opts [Boolean] :is_mls_transaction Whether the property being purchased is being listed on an MLS. This should be false for paperwork-only, for sale by owner, off-market, or pocket listing type transactions or any transactions that will not be tracked through an MLS.
444
444
  # @option opts [String] :mls_number mls number associated with the transaction -- mls_number should be populated only if is_mls_transaction is true.
445
- # @option opts [Integer] :start_timestamp Unix timestamp representing the date the property was put on sale -- start_timestamp should be populated only if is_mls_transaction is false.
445
+ # @option opts [Integer] :start_timestamp Unix timestamp representing the date the agent initiated transaction discussions with the client.
446
446
  # @option opts [Float] :commission_percentage what percentage the commission is if percentage based -- A BuyerTransaction can only have either commission_percentage or commission_flat_fee populated. Both can not be populated.
447
447
  # @option opts [Integer] :commission_flat_fee how much the commission is if flat fee -- A BuyerTransaction can only have either commission_percentage or commission_flat_fee populated. Both can not be populated.
448
448
  # @option opts [Integer] :target_price target price associated with the transaction if using a target price rather than price range
@@ -457,7 +457,7 @@ module MoxiworksPlatform
457
457
  # agent_identifier:'testis@testomatical.com',
458
458
  # moxi_works_transaction_id:'deadbeef-dead-beef-bad4-feedfacebad',
459
459
  # notes: 'foo deeaz',
460
- # name: 'whateverz'
460
+ # transaction_name: 'whateverz'
461
461
  # address: '1234 there ave',
462
462
  # city: 'cityville'
463
463
  # state: 'provinceland',
@@ -19,11 +19,23 @@ module MoxiworksPlatform
19
19
  # @return [String] your system's unique ID for the contact
20
20
  attr_accessor :partner_contact_id
21
21
 
22
+ # @!attribute anniversary
23
+ # the Contact's anniversary displayed as a Unix Timestamp. This will be empty if the data is unavailable
24
+ #
25
+ # @return [Integer or nil] -- Unix Timestamp
26
+ attr_accessor :anniversary
27
+
28
+ # @!attribute birthday
29
+ # the Contact's birthday displayed as a Unix Timestamp. This will be empty if the data is unavailable
30
+ #
31
+ # @return [Integer or nil] -- Unix Timestamp
32
+ attr_accessor :birthday
33
+
22
34
  # @!attribute contact_name
23
35
  # the full name of this Contact
24
36
  #
25
37
  # @return [String] -- Default ''
26
- attr_accessor :contact_name
38
+ attr_accessor :contact_namer
27
39
 
28
40
  # @!attribute gender
29
41
  # the gender of this Contact. the first initial of either gender type may
@@ -46,6 +58,12 @@ module MoxiworksPlatform
46
58
  # @return [String] -- Default ''
47
59
  attr_accessor :home_city
48
60
 
61
+ # @!attribute home_purchase_anniversary
62
+ # the anniversary of the purchase of contact's home displayed as a Unix Timestamp. This will be empty if the data is unavailable
63
+ #
64
+ # @return [Integer or nil] -- Unix Timestamp
65
+ attr_accessor :home_purchase_anniversary
66
+
49
67
  # @!attribute home_state
50
68
  # the state in which the residence of this Contact is located
51
69
  #
@@ -74,6 +92,12 @@ module MoxiworksPlatform
74
92
  # @return [String] -- Default ''
75
93
  attr_accessor :home_country
76
94
 
95
+ # @!attribute is_new_contact
96
+ # whether the Contact is considered new
97
+ #
98
+ # @return [Boolean]
99
+ attr_accessor :is_new_contact
100
+
77
101
  # @!attribute job_title
78
102
  # the specific job title this contact has; ex: 'Senior VP of Operations'
79
103
  #
@@ -1,26 +1,24 @@
1
1
  module MoxiworksPlatform
2
2
  # = Moxi Works Platform Event
3
3
  class Event < MoxiworksPlatform::Resource
4
- # @!attribute moxi_works_agent_id
5
- # moxi_works_agent_id is the Moxi Works Platform ID of the agent which a event is
6
- # or is to be associated with.
7
- #
8
- # this must be set for any Moxi Works Platform transaction
9
- #
10
- # @return [String] the Moxi Works Platform ID of the agent
11
- attr_accessor :moxi_works_agent_id
12
4
 
13
- # @!attribute partner_event_id
14
- # your system's event ID for the event
5
+ # @!attribute all_day
6
+ # whether the event is an all day event
15
7
  #
16
- # @return [String] representing the ID of the event in your system
17
- attr_accessor :partner_event_id
8
+ # @return [Boolean]
9
+ attr_accessor :all_day
18
10
 
19
- # @!attribute event_subject
20
- # a short description of the event
11
+ # @!attribute attendees
12
+ # a comma separated list of attendee IDs
21
13
  #
22
14
  # @return [String]
23
- attr_accessor :event_subject
15
+ attr_accessor :attendees
16
+
17
+ # @!attribute event_end
18
+ # a unix timestamp representing the end time of the event
19
+ #
20
+ # @return [Integer]
21
+ attr_writer :event_end
24
22
 
25
23
  # @!attribute location
26
24
  # a short description of the location of the event
@@ -28,17 +26,17 @@ module MoxiworksPlatform
28
26
  # @return [String]
29
27
  attr_accessor :event_location
30
28
 
31
- # @!attribute note
32
- # a more detailed description of the event
29
+ # @!attribute event_start
30
+ # a unix timestamp representing the start time of the event
33
31
  #
34
- # @return [String]
35
- attr_accessor :note
32
+ # @return [Integer]
33
+ attr_writer :event_start
36
34
 
37
- # @!attribute remind_minutes_before
38
- # how many minutes before the event a reminder should be sent
35
+ # @!attribute event_subject
36
+ # a short description of the event
39
37
  #
40
- # @return [Integer]
41
- attr_writer :remind_minutes_before
38
+ # @return [String]
39
+ attr_accessor :event_subject
42
40
 
43
41
  # @!attribute is_meeting
44
42
  # whether this event is a meeting
@@ -46,35 +44,38 @@ module MoxiworksPlatform
46
44
  # @return [Boolean]
47
45
  attr_accessor :is_meeting
48
46
 
49
- # @!attribute event_start
50
- # a unix timestamp representing the start time of the event
47
+ # @!attribute moxi_works_agent_id
48
+ # moxi_works_agent_id is the Moxi Works Platform ID of the agent which a event is
49
+ # or is to be associated with.
51
50
  #
52
- # @return [Integer]
53
- attr_writer :event_start
51
+ # this must be set for any Moxi Works Platform transaction
52
+ #
53
+ # @return [String] the Moxi Works Platform ID of the agent
54
+ attr_accessor :moxi_works_agent_id
54
55
 
55
- # @!attribute event_end
56
- # a unix timestamp representing the end time of the event
56
+ # @!attribute note
57
+ # a more detailed description of the event
57
58
  #
58
- # @return [Integer]
59
- attr_writer :event_end
59
+ # @return [String]
60
+ attr_accessor :note
60
61
 
61
- # @!attribute all_day
62
- # whether the event is an all day event
62
+ # @!attribute partner_event_id
63
+ # your system's event ID for the event
63
64
  #
64
- # @return [Boolean]
65
- attr_accessor :all_day
65
+ # @return [String] representing the ID of the event in your system
66
+ attr_accessor :partner_event_id
66
67
 
67
- # @!attribute required_attendees
68
- # a comma separated list of attendee IDs
68
+ # @!attribute remind_minutes_before
69
+ # how many minutes before the event a reminder should be sent
69
70
  #
70
- # @return [String]
71
- attr_accessor :required_attendees
71
+ # @return [Integer]
72
+ attr_writer :remind_minutes_before
72
73
 
73
- # @!attribute optional_attendees
74
- # a comma separated list of attendee IDs
74
+ # @!attribute send_reminder
75
+ # whether to send a reminder to attendees
75
76
  #
76
- # @return [String]
77
- attr_accessor :optional_attendees
77
+ # @return [Boolean]
78
+ attr_accessor :send_reminder
78
79
 
79
80
  # Creates a new Event in Moxi Works Platform
80
81
  # @param [Hash] opts named parameter Hash
@@ -2,19 +2,6 @@ module MoxiworksPlatform
2
2
  # = Moxi Works Platform Listing
3
3
  class Listing < MoxiworksPlatform::Resource
4
4
 
5
- # @!attribute moxi_works_listing_id
6
- # moxi_works_listing_id is the Moxi Works Platform ID of the listing
7
- #
8
- # this must be set for any Moxi Works Platform transaction
9
- #
10
- # @return [String] the Moxi Works Platform ID of the listing
11
- attr_accessor :moxi_works_listing_id
12
-
13
- # @!attribute lot_size_acres
14
- #
15
- # @return [float] the property acreage of the listing
16
- attr_accessor :lot_size_acres
17
-
18
5
  # @!attribute address
19
6
  #
20
7
  # @return [String] street address of property
@@ -25,35 +12,15 @@ module MoxiworksPlatform
25
12
  # @return [String] a second line for street address if needed
26
13
  attr_accessor :address2
27
14
 
28
- # @!attribute city
29
- #
30
- # @return [String] city of property address
31
- attr_accessor :city
32
-
33
- # @!attribute state
34
- #
35
- # @return [String] state of property address
36
- attr_accessor :state_or_province
37
-
38
- # @!attribute postal_code
39
- #
40
- # @return [String] zip code of property address
41
- attr_accessor :postal_code
42
-
43
- # @!attribute county_or_parish
15
+ # @!attribute agent_created_listing
44
16
  #
45
- # @return [String] county of property address
46
- attr_accessor :county_or_parish
17
+ # @return [Boolean] whether the agent created the listing
18
+ attr_accessor :agent_created_listing
47
19
 
48
- # @!attribute latitude
49
- #
50
- # @return [String] latitude of the property
51
- attr_accessor :latitude
52
-
53
- # @!attribute longitude
20
+ # @!attribute association_fee
54
21
  #
55
- # @return [String] longitude of the property
56
- attr_accessor :longitude
22
+ # @return [Integer] HOA fees for property
23
+ attr_accessor :association_fee
57
24
 
58
25
  # @!attribute bathrooms_full
59
26
  #
@@ -95,36 +62,26 @@ module MoxiworksPlatform
95
62
  # @return [Integer] number of bedrooms
96
63
  attr_accessor :bedrooms_total
97
64
 
98
- # @!attribute public_remarks
65
+ # @!attribute city
99
66
  #
100
- # @return [String] agent generated comments regarding the property
101
- attr_accessor :public_remarks
67
+ # @return [String] city of property address
68
+ attr_accessor :city
102
69
 
103
- # @!attribute modification_timestamp
70
+ # @!attribute county_or_parish
104
71
  #
105
- # @return [String] string representing date in format 'MM/DD/YYYY'
106
- attr_accessor :modification_timestamp
72
+ # @return [String] county of property address
73
+ attr_accessor :county_or_parish
107
74
 
108
- # @!attribute internet_address_display_yn
75
+ # @!attribute created_date
109
76
  #
110
- # @return [Boolean] whether to display the address publicly
111
- attr_accessor :internet_address_display_yn
77
+ # @return [String] string representing date in format 'MM/DD/YYYY'
78
+ attr_accessor :created_date
112
79
 
113
80
  # @!attribute days_on_market
114
81
  #
115
82
  # @return [Integer] days listing has been on market
116
83
  attr_accessor :days_on_market
117
84
 
118
- # @!attribute listing_contract_date
119
- #
120
- # @return [String] string representing date in format 'MM/DD/YYYY'
121
- attr_accessor :listing_contract_date
122
-
123
- # @!attribute created_date
124
- #
125
- # @return [String] string representing date in format 'MM/DD/YYYY'
126
- attr_accessor :created_date
127
-
128
85
  # @!attribute elementary_school
129
86
  #
130
87
  # @return [String] elementary school for the property
@@ -135,20 +92,30 @@ module MoxiworksPlatform
135
92
  # @return [Integer] garage spaces for the property
136
93
  attr_accessor :garage_spaces
137
94
 
138
- # @!attribute waterfront_yn
139
- #
140
- # @return [Boolean] whether the property has waterfront acreage
141
- attr_accessor :waterfront_yn
142
-
143
95
  # @!attribute high_school
144
96
  #
145
97
  # @return [String] High school for property
146
98
  attr_accessor :high_school
147
99
 
148
- # @!attribute association_fee
100
+ # @!attribute internet_address_display_yn
149
101
  #
150
- # @return [Integer] HOA fees for property
151
- attr_accessor :association_fee
102
+ # @return [Boolean] whether to display the address publicly
103
+ attr_accessor :internet_address_display_yn
104
+
105
+ # @!attribute internet_entire_listing_display_yn
106
+ #
107
+ # @return [Boolean] whether to display listing on internet
108
+ attr_accessor :internet_entire_listing_display_yn
109
+
110
+ # @!attribute latitude
111
+ #
112
+ # @return [String] latitude of the property
113
+ attr_accessor :latitude
114
+
115
+ # @!attribute list_agent_full_name
116
+ #
117
+ # @return [String] name of listing agent
118
+ attr_accessor :list_agent_full_name
152
119
 
153
120
  # @!attribute list_office_name
154
121
  #
@@ -160,15 +127,47 @@ module MoxiworksPlatform
160
127
  # @return [Integer] listed price
161
128
  attr_accessor :list_price
162
129
 
130
+ # @!attribute list_office_aor
131
+ #
132
+ # @return [String] MLS the listing is listed with
133
+ attr_accessor :list_office_aor
134
+
135
+ # @!attribute listing_contract_date
136
+ #
137
+ # @return [String] string representing date in format 'MM/DD/YYYY'
138
+ attr_accessor :listing_contract_date
139
+
163
140
  # @!attribute listing_id
164
141
  #
165
142
  # @return [String] the mls number associated with the listing
166
143
  attr_accessor :listing_id
167
144
 
168
- # @!attribute list_agent_full_name
145
+ # @!attribute listing_images
169
146
  #
170
- # @return [String] name of listing agent
171
- attr_accessor :list_agent_full_name
147
+ # @return [Array] array of image Hashes in the format
148
+ # {
149
+ # image_thumb_url: [String] url to thumbail size image (smallest),
150
+ # image_small_url: [String] url to small size image (small),
151
+ # image_full_url: [String] url to full size image (medium),
152
+ # image_gallery_url: [String] url to gallery size image (large),
153
+ # image_raw_url: [String] url to raw image (largest)
154
+ # }
155
+ attr_accessor :listing_images
156
+
157
+ # @!attribute living_area
158
+ #
159
+ # @return [Integer] square footage of the building
160
+ attr_accessor :living_area
161
+
162
+ # @!attribute longitude
163
+ #
164
+ # @return [String] longitude of the property
165
+ attr_accessor :longitude
166
+
167
+ # @!attribute lot_size_acres
168
+ #
169
+ # @return [float] the property acreage of the listing
170
+ attr_accessor :lot_size_acres
172
171
 
173
172
  # @!attribute lot_size_square_feet
174
173
  #
@@ -180,15 +179,18 @@ module MoxiworksPlatform
180
179
  # @return [String] Middle school for property
181
180
  attr_accessor :middle_or_junior_school
182
181
 
183
- # @!attribute list_office_aor
182
+ # @!attribute moxi_works_listing_id
183
+ # moxi_works_listing_id is the Moxi Works Platform ID of the listing
184
184
  #
185
- # @return [String] MLS the listing is listed with
186
- attr_accessor :list_office_aor
185
+ # this must be set for any Moxi Works Platform transaction
186
+ #
187
+ # @return [String] the Moxi Works Platform ID of the listing
188
+ attr_accessor :moxi_works_listing_id
187
189
 
188
- # @!attribute internet_entire_listing_display_yn
190
+ # @!attribute modification_timestamp
189
191
  #
190
- # @return [Boolean] whether to display listing on internet
191
- attr_accessor :internet_entire_listing_display_yn
192
+ # @return [String] string representing date in format 'MM/DD/YYYY'
193
+ attr_accessor :modification_timestamp
192
194
 
193
195
  # @!attribute on_market
194
196
  #
@@ -200,11 +202,36 @@ module MoxiworksPlatform
200
202
  # @return [Boolean] whether there is a pool
201
203
  attr_accessor :pool_yn
202
204
 
205
+ # @!attribute postal_code
206
+ #
207
+ # @return [String] zip code of property address
208
+ attr_accessor :postal_code
209
+
210
+ # @!attribute property_features
211
+ #
212
+ # @return [Hash] property features associated with this listing
213
+ attr_accessor :property_features
214
+
203
215
  # @!attribute property_type
204
216
  #
205
217
  # @return [String] type of property, could be 'Rental' 'Residential' 'Condo-Coop' 'Townhouse' 'Land' 'Multifamily'
206
218
  attr_accessor :property_type
207
219
 
220
+ # @!attribute public_remarks
221
+ #
222
+ # @return [String] agent generated comments regarding the property
223
+ attr_accessor :public_remarks
224
+
225
+ # @!attribute single_story
226
+ #
227
+ # @return [Boolean] whether the building is single story
228
+ attr_accessor :single_story
229
+
230
+ # @!attribute state
231
+ #
232
+ # @return [String] state of property address
233
+ attr_accessor :state_or_province
234
+
208
235
  # @!attribute tax_annual_amount
209
236
  #
210
237
  # @return [Integer] Annual property tax for the property
@@ -215,38 +242,21 @@ module MoxiworksPlatform
215
242
  # @return [Integer] assessment year that property_tax reflects
216
243
  attr_accessor :tax_year
217
244
 
218
- # @!attribute single_story
219
- #
220
- # @return [Boolean] whether the building is single story
221
- attr_accessor :single_story
222
-
223
- # @!attribute living_area
224
- #
225
- # @return [Integer] square footage of the building
226
- attr_accessor :living_area
227
-
228
245
  # @!attribute view_yn
229
246
  #
230
247
  # @return [Boolean] whether the property has a view
231
248
  attr_accessor :view_yn
232
249
 
250
+ # @!attribute waterfront_yn
251
+ #
252
+ # @return [Boolean|nil] whether the property has waterfront acreage
253
+ attr_accessor :waterfront_yn
254
+
233
255
  # @!attribute year_built
234
256
  #
235
257
  # @return [Integer] year the building was built
236
258
  attr_accessor :year_built
237
259
 
238
- # @!attribute listing_images
239
- #
240
- # @return [Array] array of image Hashes in the format
241
- # {
242
- # image_thumb_url: [String] url to thumbail size image (smallest),
243
- # image_small_url: [String] url to small size image (small),
244
- # image_full_url: [String] url to full size image (medium),
245
- # image_gallery_url: [String] url to gallery size image (large),
246
- # image_raw_url: [String] url to raw image (largest)
247
- # }
248
- attr_accessor :listing_images
249
-
250
260
 
251
261
 
252
262
  # Find a listing on the Moxi Works Platform
@@ -295,12 +305,12 @@ module MoxiworksPlatform
295
305
  #
296
306
  # optional Search parameters
297
307
  #
298
- # @option opts [Integer] :page_number the page of results to return
308
+ # @option opts [String] :last_moxi_works_listing_id For multi-page responses (where the response value 'last_page' is false), send the listing ID of the last Listing in the previous page.
309
+ # @option opts [Hash] :previous_page For multi-page responses (where the response value 'last_page' is false), send the listing ID of the last Listing in the previous page.
299
310
  #
300
311
  # @return [Hash] with the format:
301
312
  # {
302
- # page_number: [Integer],
303
- # total_pages: [Integer],
313
+ # last_page: [Boolean],
304
314
  # listings: [Array] containing MoxiworkPlatform::Listing objects
305
315
  # }
306
316
  #
@@ -327,12 +337,24 @@ module MoxiworksPlatform
327
337
  def self.search(opts={}, &block)
328
338
  url ||= "#{MoxiworksPlatform::Config.url}/api/listings"
329
339
  required_opts = [:moxi_works_company_id, :updated_since]
340
+
330
341
  required_opts.each do |opt|
331
342
  raise ::MoxiworksPlatform::Exception::ArgumentError, "#{opt} required" if
332
343
  opts[opt].nil? or opts[opt].to_s.empty?
333
344
  end
345
+
346
+ prev_page = opts[:previous_page] || opts['previous_page']
347
+ unless(prev_page.nil? or
348
+ prev_page.empty? or
349
+ not prev_page.is_a?(Hash) or
350
+ prev_page['listings'].nil? or
351
+ prev_page['listings'].empty? or
352
+ not prev_page['listings'].is_a?(Array))
353
+ opts[:last_moxi_works_listing_id] ||= prev_page['listings'].last.moxi_works_listing_id
354
+ end
355
+
334
356
  results = []
335
- json = {'listings': [], 'last_page': true}
357
+ json = {'listings' => [], 'last_page' => true}
336
358
  RestClient::Request.execute(method: :get,
337
359
  url: url,
338
360
  payload: opts, headers: self.headers) do |response|
@@ -356,23 +378,5 @@ module MoxiworksPlatform
356
378
  json
357
379
  end
358
380
 
359
- def self.underscore_attribute_names(hash)
360
- hash.keys.each do |key|
361
- hash[key] = self.underscore_attribute_names hash[key] if hash[key].is_a? Hash
362
- if hash[key].is_a? Array
363
- array = hash[key]
364
- new_array = []
365
- array.each do |member|
366
- new_array << self.underscore_attribute_names(member)
367
- end
368
- hash[key] = new_array
369
- end
370
- underscored = Resource.underscore(key)
371
- hash[underscored] = hash.delete(key)
372
- end
373
- hash
374
- end
375
-
376
-
377
381
  end
378
382
  end
@@ -149,6 +149,7 @@ module MoxiworksPlatform
149
149
  payload: opts, headers: self.headers) do |response|
150
150
  puts response if MoxiworksPlatform::Config.debug
151
151
  self.check_for_error_in_response(response)
152
+
152
153
  json = JSON.parse(response)
153
154
  json['offices'].each do |r|
154
155
  results << MoxiworksPlatform::Office.new(r) unless r.nil? or r.empty?
@@ -6,6 +6,8 @@ module MoxiworksPlatform
6
6
  # provides underlying logic for connecting to Moxi Works Platform over HTTPS
7
7
  class Resource
8
8
 
9
+ # class methods
10
+
9
11
  # keep a list of attr_accessors defined in this class
10
12
  #
11
13
  # used to convert Resource child object into parameters required for saving
@@ -31,7 +33,8 @@ module MoxiworksPlatform
31
33
  {
32
34
  Authorization: auth_header,
33
35
  Accept: accept_header,
34
- 'Content-Type' => content_type_header
36
+ 'Content-Type' => content_type_header,
37
+ Cookie: Session.instance.cookie
35
38
  }
36
39
  end
37
40
 
@@ -64,9 +67,10 @@ module MoxiworksPlatform
64
67
  def self.check_for_error_in_response(response)
65
68
  begin
66
69
  json = JSON.parse(response)
70
+ MoxiworksPlatform::Session.instance.cookie = response.headers[:set_cookie].first rescue nil
67
71
  return if json.is_a?(Array)
68
- rescue => e
69
- raise MoxiworksPlatform::Exception::RemoteRequestFailure, "unable to parse remote response #{e}\n response:\n #{response}"
72
+ # rescue => e
73
+ # raise MoxiworksPlatform::Exception::RemoteRequestFailure, "unable to parse remote response #{e}\n response:\n #{response}"
70
74
  end
71
75
  message = "unable to perform remote action on Moxi Works platform\n"
72
76
  message << json['messages'].join(',') unless json['messages'].nil?
@@ -75,44 +79,6 @@ module MoxiworksPlatform
75
79
  not json['status'].nil? and (%w(error fail).include?(json['status']))
76
80
  end
77
81
 
78
-
79
- # maps Hash values to Instance variables for mapping JSON object values to our Class attributes
80
- #
81
- def initialize(hash={})
82
- self.init_attrs_from_hash(hash)
83
- end
84
-
85
- def init_attrs_from_hash(hash={})
86
- hash.each do |key,val|
87
- instance_variable_set("@#{key}", val)
88
- end
89
- end
90
-
91
- def method_missing(meth, *args, &block)
92
- name = meth.to_sym
93
- if numeric_attrs.include? name
94
- return numeric_value_for(name, type: :integer) if int_attrs.include? name
95
- return numeric_value_for(name, type: :float) if float_attrs.include? name
96
- end
97
- super(meth, *args, &block)
98
- end
99
-
100
- # all available accessors defined in this class
101
- #
102
- # @return [Array][String] all defined accessors of this class
103
- def attributes
104
- self.class.attributes + numeric_attrs
105
- end
106
-
107
- # convert this class into a Hash structure where attributes are Hash key names and attribute values are Hash values
108
- #
109
- # @return [Hash] with keys mapped to class attribute names
110
- def to_hash
111
- hash = {}
112
- self.attributes.each {|attr| hash[attr.to_sym] = self.send(attr)}
113
- hash
114
- end
115
-
116
82
  def self.send_request(method, opts={}, url=nil)
117
83
  RestClient::Request.execute(method: method,
118
84
  url: url,
@@ -145,9 +111,62 @@ module MoxiworksPlatform
145
111
  nil
146
112
  end
147
113
 
114
+ def self.underscore_attribute_names(thing)
115
+ case thing
116
+ when Array
117
+ new_thing = self.underscore_array(thing)
118
+ when Hash
119
+ new_thing = self.underscore_hash(thing)
120
+ else
121
+ new_thing = thing
122
+ end
123
+ new_thing
124
+ end
125
+
126
+ def self.underscore_array(array)
127
+ new_array = []
128
+ array.each do |member|
129
+ new_array << self.underscore_attribute_names(member)
130
+ end
131
+ new_array
132
+ end
133
+
134
+ def self.underscore_hash(hash)
135
+ hash.keys.each do |key|
136
+ hash[key] = self.underscore_attribute_names hash[key]
137
+ underscored = Resource.underscore(key)
138
+ hash[underscored] = hash.delete(key)
139
+ end
140
+ hash
141
+ end
142
+
143
+ def self.underscore(attr)
144
+ attr.gsub(/::/, '/').
145
+ gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
146
+ gsub(/([a-z\d])([A-Z])/,'\1_\2').
147
+ tr("-", "_").
148
+ downcase
149
+ end
150
+
151
+ # instance methods
152
+
153
+ # maps Hash values to Instance variables for mapping JSON object values to our Class attributes
154
+ #
155
+ def initialize(hash={})
156
+ self.init_attrs_from_hash(hash)
157
+ end
158
+
159
+ # all available accessors defined in this class
160
+ #
161
+ # @return [Array][String] all defined accessors of this class
162
+ def attributes
163
+ self.class.attributes + numeric_attrs
164
+ end
165
+
148
166
  # used by method_missing to ensure that a number is the type we expect it to be
149
- def numeric_attrs
150
- int_attrs + float_attrs
167
+ # this should be overridden if we have any float values we want to return as floats
168
+ def float_attrs
169
+ []
151
170
  end
152
171
 
153
172
  # used by method_missing to ensure that a number is the type we expect it to be
@@ -156,18 +175,33 @@ module MoxiworksPlatform
156
175
  []
157
176
  end
158
177
 
178
+ def init_attrs_from_hash(hash={})
179
+ hash.each do |key,val|
180
+ instance_variable_set("@#{key}", val)
181
+ end
182
+ end
183
+
184
+ def method_missing(meth, *args, &block)
185
+ name = meth.to_sym
186
+ if numeric_attrs.include? name
187
+ return numeric_value_for(name, type: :integer) if int_attrs.include? name
188
+ return numeric_value_for(name, type: :float) if float_attrs.include? name
189
+ end
190
+ super(meth, *args, &block)
191
+ end
192
+
159
193
  # used by method_missing to ensure that a number is the type we expect it to be
160
- # this should be overridden if we have any float values we want to return as floats
161
- def float_attrs
162
- []
194
+ def numeric_attrs
195
+ int_attrs + float_attrs
163
196
  end
164
197
 
165
- def self.underscore(attr)
166
- attr.gsub(/::/, '/').
167
- gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
168
- gsub(/([a-z\d])([A-Z])/,'\1_\2').
169
- tr("-", "_").
170
- downcase
198
+ # convert this class into a Hash structure where attributes are Hash key names and attribute values are Hash values
199
+ #
200
+ # @return [Hash] with keys mapped to class attribute names
201
+ def to_hash
202
+ hash = {}
203
+ self.attributes.each {|attr| hash[attr.to_sym] = self.send(attr)}
204
+ hash
171
205
  end
172
206
 
173
207
  end
@@ -56,7 +56,7 @@ module MoxiworksPlatform
56
56
  #
57
57
  # This will be a single digit integer that can be [1,2,3,4,5].
58
58
  # For more information on SellerTransaction stages see
59
- # <a href='https://moxiworks-platform.github.io/#sellertransaction-stages'>The Moxi Works Platform Documentation</a>
59
+ # {https://moxiworks-platform.github.io/#sellertransaction-stages The Moxi Works Platform Documentation}
60
60
  #
61
61
  # @return [Integer] the stage the SellerTransaction is in.
62
62
  attr_accessor :stage
@@ -71,7 +71,7 @@ module MoxiworksPlatform
71
71
  # This will be an enumerated string that can be can be
72
72
  # 'initialized', 'configured' , 'active' , 'pending' or 'complete'
73
73
  # For more information on SellerTransaction stages see
74
- # <a href='https://moxiworks-platform.github.io/#sellertransaction-stages'>The Moxi Works Platform Documentation</a>
74
+ # {https://moxiworks-platform.github.io/#sellertransaction-stages The Moxi Works Platform Documentation}
75
75
  #
76
76
  #
77
77
  # @return [String, enumerated] current state of SellerTransaction
@@ -119,7 +119,7 @@ module MoxiworksPlatform
119
119
  # @return [Float] number of bathrooms in property being sold
120
120
  attr_accessor :baths
121
121
 
122
- # @!attribute is_mls_transaction
122
+ # @!attribute is_mls_transaction
123
123
  #
124
124
  #
125
125
  # @return [Boolean] Whether the property being sold is being listed on an MLS.
@@ -138,7 +138,7 @@ module MoxiworksPlatform
138
138
 
139
139
  # @!attribute start_timestamp
140
140
  #
141
- # **NON MLS TRANSACTIONS ONLY ** this is the Unix timestamp
141
+ # this is the Unix timestamp
142
142
  # representing the date the agent initiated transaction discussions
143
143
  # with the client.
144
144
  #
@@ -226,7 +226,7 @@ module MoxiworksPlatform
226
226
  #
227
227
  # In order to promote a SellerTransaction to the next stage, set the
228
228
  # promote_transaction attribute to true. For more information about
229
- # SellerTransaction stages, see <a href='https://moxiworks-platform.github.io/#promoting-sellertransaction-stage>The Moxi Works Platform Documentation</a>.
229
+ # SellerTransaction stages, see {https://moxiworks-platform.github.io/#promoting-sellertransaction-stageThe Moxi Works Platform Documentation}.
230
230
  # promote_transaction is only available for SellerTransaction updates.
231
231
  # Newly created SellerTransaction objects will automatically be created in
232
232
  # stage 3 (active)
@@ -241,13 +241,13 @@ module MoxiworksPlatform
241
241
  # @option opts [String] :moxi_works_agent_id *REQUIRED* The Moxi Works Agent ID for the agent to which this transaction is to be associated
242
242
  # @option opts [String] :moxi_works_contact_id *REQUIRED* The unique identifier for the Contact on the Moxi Works Platform. Either moxi_works_contact_id or partner_contact_id is required when creating SellerTransaction objects
243
243
  # @option opts [String] :partner_contact_id *REQUIRED* Your system's unique id for associated contact. should already have been created in Moxi Works Platform. If the Contact was not created by your system, use the moxi_works_contact_id attribute. Either moxi_works_contact_id or partner_contact_id is required when creating SellerTransaction objects
244
+ # @option opts [String] :transaction_name *REQUIRED* short description of the transaction meaningful to the agent
244
245
  #
245
246
  # -- Either moxi_works_contact_id or partner_contact_id must be
246
247
  # populated; however, you should only populate one of these attributes.
247
248
  #
248
249
  # optional SellerTransaction parameters
249
250
  #
250
- # @option opts [String] :transaction_name short description of the transaction meaningful to the agent
251
251
  # @option opts [String] :notes human readable notes associated with the transaction meaningful to the agent
252
252
  # @option opts [String] :address street address of the property associated with the transaction
253
253
  # @option opts [String] :city city of the property associated with the transaction
@@ -256,9 +256,9 @@ module MoxiworksPlatform
256
256
  # @option opts [Integer] :sqft square feet of living area in the property being sold
257
257
  # @option opts [Integer] :beds number of bedrooms in the property being sold
258
258
  # @option opts [Integer or Float] :baths number of bathrooms in the property being sold
259
- # @option opts [Boolean] :is_mls_transaction Whether the property being sold is being listed on an MLS. This should be false for paperwork-only, for sale by owner, off-market, or pocket listing type transactions or any transactions that will not be tracked through an MLS. If is_mls_transaction is false, then start_timestamp should be populated.
259
+ # @option opts [Boolean] :is_mls_transaction Whether the property being sold is being listed on an MLS. This should be false for paperwork-only, for sale by owner, off-market, or pocket listing type transactions or any transactions that will not be tracked through an MLS.
260
260
  # @option opts [String] :mls_number mls number associated with the transaction -- mls_number should be populated only if is_mls_transaction is true.
261
- # @option opts [Integer] :start_timestamp Unix timestamp representing the date the property was put on sale -- start_timestamp should be populated only if is_mls_transaction is false.
261
+ # @option opts [Integer] :start_timestamp Unix timestamp representing the date the agent initiated transaction discussions with the client.
262
262
  # @option opts [Float] :commission_percentage what percentage the commission is if percentage based -- A SellerTransaction can only have either commission_percentage or commission_flat_fee populated. Both can not be populated.
263
263
  # @option opts [Integer] :commission_flat_fee how much the commission is if flat fee -- A SellerTransaction can only have either commission_percentage or commission_flat_fee populated. Both can not be populated.
264
264
  # @option opts [Integer] :target_price target price associated with the transaction if using a target price rather than price range
@@ -270,7 +270,7 @@ module MoxiworksPlatform
270
270
  # agent_identifier:'testis@testomatical.com',
271
271
  # moxi_works_contact_id:'deadbeef-dead-beef-bad4-feedfacebad',
272
272
  # notes: 'foo deeaz',
273
- # name: 'whateverz'
273
+ # transaction_name: 'whateverz'
274
274
  # address: '1234 there ave',
275
275
  # city: 'cityville'
276
276
  # state: 'provinceland',
@@ -398,9 +398,9 @@ module MoxiworksPlatform
398
398
  # @option opts [Integer] :sqft square feet of living area in the property being sold
399
399
  # @option opts [Integer] :beds number of bedrooms in the property being sold
400
400
  # @option opts [Integer or Float] :baths number of bathrooms in the property being sold
401
- # @option opts [Boolean] :is_mls_transaction Whether the property being sold is being listed on an MLS. This should be false for paperwork-only, for sale by owner, off-market, or pocket listing type transactions or any transactions that will not be tracked through an MLS. If is_mls_transaction is false, then start_timestamp should be populated.
401
+ # @option opts [Boolean] :is_mls_transaction Whether the property being sold is being listed on an MLS. This should be false for paperwork-only, for sale by owner, off-market, or pocket listing type transactions or any transactions that will not be tracked through an MLS.
402
402
  # @option opts [String] :mls_number mls number associated with the transaction -- mls_number should be populated only if is_mls_transaction is true.
403
- # @option opts [Integer] :start_timestamp Unix timestamp representing the date the property was put on sale -- start_timestamp should be populated only if is_mls_transaction is false.
403
+ # @option opts [Integer] :start_timestamp Unix timestamp representing the date the agent initiated transaction discussions with the client.
404
404
  # @option opts [Float] :commission_percentage what percentage the commission is if percentage based -- A SellerTransaction can only have either commission_percentage or commission_flat_fee populated. Both can not be populated.
405
405
  # @option opts [Integer] :commission_flat_fee how much the commission is if flat fee -- A SellerTransaction can only have either commission_percentage or commission_flat_fee populated. Both can not be populated.
406
406
  # @option opts [Integer] :target_price target price associated with the transaction if using a target price rather than price range
@@ -416,7 +416,7 @@ module MoxiworksPlatform
416
416
  # agent_identifier:'testis@testomatical.com',
417
417
  # moxi_works_transaction_id:'deadbeef-dead-beef-bad4-feedfacebad',
418
418
  # notes: 'foo deeaz',
419
- # name: 'whateverz'
419
+ # transaction_name: 'whateverz'
420
420
  # address: '1234 there ave',
421
421
  # city: 'cityville'
422
422
  # state: 'provinceland',
@@ -460,10 +460,10 @@ module MoxiworksPlatform
460
460
  # @option opts [String] :moxi_works_agent_id *REQUIRED* The Moxi Works Agent ID for the agent to which this transaction is to be associated
461
461
  # @option opts [String] :moxi_works_transaction_id *REQUIRED* The Moxi Works Platform unique ID for this transaction.
462
462
  # @option opts [String] :partner_contact_id *REQUIRED* Your system's unique ID for the Contact for whom this SellerTransaction is to be associated.
463
- # @option opts [String] :transaction_name *REQUIRED* short description of the transaction meaningful to the agent
464
463
  #
465
464
  # optional SellerTransaction parameters
466
465
  #
466
+ # @option opts [String] :transaction_name short description of the transaction meaningful to the agent
467
467
  # @option opts [String] :description longer description of the transaction
468
468
  # @option opts [Integer] :due_at Unix timestamp representing the due date
469
469
  # @option opts [Integer] :duration Length of time in minutes that the transaction should take
@@ -0,0 +1,9 @@
1
+ require 'singleton'
2
+ module MoxiworksPlatform
3
+ class Session
4
+ include Singleton
5
+
6
+ attr_accessor :cookie
7
+
8
+ end
9
+ end
@@ -1,3 +1,3 @@
1
1
  module MoxiworksPlatform
2
- VERSION = '0.10.1'
2
+ VERSION = '0.10.2'
3
3
  end
data/publish_docs.sh CHANGED
@@ -4,6 +4,8 @@ mv doc /tmp/doc/
4
4
 
5
5
  git checkout master
6
6
 
7
+ git commit -a -m "Documentation Update"
8
+
7
9
  yard doc
8
10
 
9
11
  git checkout gh-pages
@@ -21,6 +23,9 @@ git add MoxiworksPlatform
21
23
 
22
24
  git commit -a -m "Documentation Update"
23
25
 
26
+ git push origin gh-pages
27
+ git push upstream gh-pages
28
+
24
29
  git checkout master
25
30
 
26
31
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: moxiworks_platform
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.1
4
+ version: 0.10.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tres Wong-Godfrey
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-01-03 00:00:00.000000000 Z
11
+ date: 2017-05-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -98,6 +98,7 @@ files:
98
98
  - lib/moxiworks_platform/office.rb
99
99
  - lib/moxiworks_platform/resource.rb
100
100
  - lib/moxiworks_platform/seller_transaction.rb
101
+ - lib/moxiworks_platform/session.rb
101
102
  - lib/moxiworks_platform/task.rb
102
103
  - lib/moxiworks_platform/version.rb
103
104
  - moxiworks_platform.gemspec