repull 0.2.34 → 0.2.35
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 +4 -4
- data/lib/repull/api/connect_api.rb +4 -4
- data/lib/repull/api/health_api.rb +3 -3
- data/lib/repull/models/connect_session_completed_payload.rb +1 -1
- data/lib/repull/models/connect_status_accounts_inner.rb +12 -1
- data/lib/repull/models/create_connect_session_request.rb +25 -1
- data/lib/repull/models/create_connection_request.rb +2 -22
- data/lib/repull/models/list_connection_units200_response.rb +12 -1
- data/lib/repull/models/list_connection_units200_response_units_inner.rb +1 -0
- data/lib/repull/models/listing_address.rb +62 -5
- data/lib/repull/models/message.rb +24 -1
- data/lib/repull/models/{calendar_updated_payload.rb → postal_address.rb} +67 -35
- data/lib/repull/models/property.rb +12 -2
- data/lib/repull/models/webhook_event.rb +0 -2
- data/lib/repull/models/webhook_event_type.rb +1 -2
- data/lib/repull/version.rb +1 -1
- data/lib/repull.rb +1 -6
- data/openapi/v1.json +132 -355
- metadata +3 -8
- data/lib/repull/api/plumguide_api.rb +0 -552
- data/lib/repull/models/calendar_updated_event.rb +0 -281
- data/lib/repull/models/calendar_updated_payload_range.rb +0 -156
- data/lib/repull/models/plumguide_listing.rb +0 -167
- data/lib/repull/models/plumguide_listing_list_response.rb +0 -158
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3dd1b14c70b71a270a2738f370441e46162ee0810eaa4ea90df885938bc6ff4f
|
|
4
|
+
data.tar.gz: 86146a261bcd64bf93ded286fd2f9d10d0515713b6eb2c6ba0c8419cf498b0bb
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: '093ca68ae94804a08972248fefaa9138cee9d8032cc6f9b09bd0b8b649fbb406577e439b93b07283d4b8c27db71554c1ee5acd2a3325bd9a4d12d0df7f70dd9c'
|
|
7
|
+
data.tar.gz: 9681728ae90f98c2effa583ba82a9925b920dcdfcca0e2f0daae376f0468256beacdc56806c4bdb0c5503a195bca732ff33d853e045a0ad29959473bebfb3d8e
|
|
@@ -156,7 +156,7 @@ module Repull
|
|
|
156
156
|
end
|
|
157
157
|
|
|
158
158
|
# Connect to PMS/OTA provider
|
|
159
|
-
# Establish a connection to a PMS or OTA platform. Credentials vary by provider — see docs for each provider. Airbnb-specific: pass `redirectUrl` (where to send the user after consent) and optionally `accessType`. Three tiers: `read_only` grants read-only scopes; `messaging` grants read scopes plus message read/send but NOT property management, so it can coexist with another app (e.g. an existing PMS) that already holds property management on the same Airbnb account; `full_access` — the default — grants full host scopes including the exclusive property management (only one app per Airbnb account can hold it). The response returns a hosted `url` to redirect the user to. Booking.com: pass `redirectUrl` (no `accessType`). The response returns a hosted `url` — send the user there to
|
|
159
|
+
# Establish a connection to a PMS or OTA platform. Credentials vary by provider — see docs for each provider. Airbnb-specific: pass `redirectUrl` (where to send the user after consent) and optionally `accessType`. Three tiers: `read_only` grants read-only scopes; `messaging` (shown to hosts as \"Messaging & reviews\") grants read scopes plus message read/send and review writes (reply to guest reviews, submit host reviews — Airbnb's `reviews_write`) but NOT property management, so it can coexist with another app (e.g. an existing PMS) that already holds property management on the same Airbnb account; `full_access` — the default — grants full host scopes including the exclusive property management (only one app per Airbnb account can hold it). The response returns a hosted `url` to redirect the user to. Booking.com: pass `redirectUrl` (no `accessType`). The response returns a hosted `url` — send the user there to select our connectivity provider in their Booking.com Extranet and paste their Hotel ID. Same response shape as Airbnb (`url`, `sessionId`, `expiresAt`). PMS providers are not connected by this call: send their credentials to `POST /v1/connect/{provider}/credentials`, or start a hosted session with `POST /v1/connect`.
|
|
160
160
|
# @param provider [String] PMS provider slug (e.g., hostaway, guesty, ownerrez)
|
|
161
161
|
# @param [Hash] opts the optional parameters
|
|
162
162
|
# @option opts [CreateConnectionRequest] :create_connection_request
|
|
@@ -167,7 +167,7 @@ module Repull
|
|
|
167
167
|
end
|
|
168
168
|
|
|
169
169
|
# Connect to PMS/OTA provider
|
|
170
|
-
# Establish a connection to a PMS or OTA platform. Credentials vary by provider — see docs for each provider. Airbnb-specific: pass `redirectUrl` (where to send the user after consent) and optionally `accessType`. Three tiers: `read_only` grants read-only scopes; `messaging` grants read scopes plus message read/send but NOT property management, so it can coexist with another app (e.g. an existing PMS) that already holds property management on the same Airbnb account; `full_access` — the default — grants full host scopes including the exclusive property management (only one app per Airbnb account can hold it). The response returns a hosted `url` to redirect the user to. Booking.com: pass `redirectUrl` (no `accessType`). The response returns a hosted `url` — send the user there to
|
|
170
|
+
# Establish a connection to a PMS or OTA platform. Credentials vary by provider — see docs for each provider. Airbnb-specific: pass `redirectUrl` (where to send the user after consent) and optionally `accessType`. Three tiers: `read_only` grants read-only scopes; `messaging` (shown to hosts as \"Messaging & reviews\") grants read scopes plus message read/send and review writes (reply to guest reviews, submit host reviews — Airbnb's `reviews_write`) but NOT property management, so it can coexist with another app (e.g. an existing PMS) that already holds property management on the same Airbnb account; `full_access` — the default — grants full host scopes including the exclusive property management (only one app per Airbnb account can hold it). The response returns a hosted `url` to redirect the user to. Booking.com: pass `redirectUrl` (no `accessType`). The response returns a hosted `url` — send the user there to select our connectivity provider in their Booking.com Extranet and paste their Hotel ID. Same response shape as Airbnb (`url`, `sessionId`, `expiresAt`). PMS providers are not connected by this call: send their credentials to `POST /v1/connect/{provider}/credentials`, or start a hosted session with `POST /v1/connect`.
|
|
171
171
|
# @param provider [String] PMS provider slug (e.g., hostaway, guesty, ownerrez)
|
|
172
172
|
# @param [Hash] opts the optional parameters
|
|
173
173
|
# @option opts [CreateConnectionRequest] :create_connection_request
|
|
@@ -2311,7 +2311,7 @@ module Repull
|
|
|
2311
2311
|
end
|
|
2312
2312
|
|
|
2313
2313
|
# Verify a Booking.com hotel ID for a Connect session
|
|
2314
|
-
# Manual-paste fallback that closes the Booking.com claim flow. Call this after the customer completes Stage 1 designation in their Booking Extranet (
|
|
2314
|
+
# Manual-paste fallback that closes the Booking.com claim flow. Call this after the customer completes Stage 1 designation in their Booking Extranet (selecting our connectivity provider, named on the hosted Connect page) and pastes their Hotel ID into the hosted picker. Validates the hotel against Booking's property API, persists the `pms_connections` row, kicks off the room import, and transitions the Connect session to `awaiting_room_mapping`. No API key required — the `sessionId` is the capability token. Sessions in any terminal state are rejected.
|
|
2315
2315
|
# @param booking_verify_hotel_request [BookingVerifyHotelRequest]
|
|
2316
2316
|
# @param [Hash] opts the optional parameters
|
|
2317
2317
|
# @return [BookingVerifyHotelResponse]
|
|
@@ -2321,7 +2321,7 @@ module Repull
|
|
|
2321
2321
|
end
|
|
2322
2322
|
|
|
2323
2323
|
# Verify a Booking.com hotel ID for a Connect session
|
|
2324
|
-
# Manual-paste fallback that closes the Booking.com claim flow. Call this after the customer completes Stage 1 designation in their Booking Extranet (
|
|
2324
|
+
# Manual-paste fallback that closes the Booking.com claim flow. Call this after the customer completes Stage 1 designation in their Booking Extranet (selecting our connectivity provider, named on the hosted Connect page) and pastes their Hotel ID into the hosted picker. Validates the hotel against Booking's property API, persists the `pms_connections` row, kicks off the room import, and transitions the Connect session to `awaiting_room_mapping`. No API key required — the `sessionId` is the capability token. Sessions in any terminal state are rejected.
|
|
2325
2325
|
# @param booking_verify_hotel_request [BookingVerifyHotelRequest]
|
|
2326
2326
|
# @param [Hash] opts the optional parameters
|
|
2327
2327
|
# @return [Array<(BookingVerifyHotelResponse, Integer, Hash)>] BookingVerifyHotelResponse data, response status code and response headers
|
|
@@ -77,7 +77,7 @@ module Repull
|
|
|
77
77
|
end
|
|
78
78
|
|
|
79
79
|
# Per-channel connectivity health
|
|
80
|
-
# Reports reachability and auth state for one channel (`airbnb`, `booking`, `vrbo
|
|
80
|
+
# Reports reachability and auth state for one channel (`airbnb`, `booking`, `vrbo`). Use it to tell \"the channel is down\" apart from \"this workspace's connection expired\". `200` when `status` is `ok`, `503` when `degraded` or `down` (the body's `status` and `message` say which and why). **`vrbo`** reports the connector's own signals in a `vrbo` block: connected accounts, accounts VRBO signed out (their bookings, messages and calendar stop until reconnected — `down`), accounts whose inbox sync is late (`degraded`), and the calendar push queue backlog and its oldest wait (`degraded` past 3 hours). Its rate is calendar pushes VRBO refused over finished ones in the last 3 hours; failures inside Repull's own connector are reported apart as `vrbo.connector_errors` and do not count (`vrbo.window_hours`; `refresh_attempts_24h` / `refresh_rejections_24h` count that window for VRBO), judged only once at least 50 pushes finished and at least 5 failed — VRBO pushes run in bursts, so a day-long window would keep reporting a problem already fixed.
|
|
81
81
|
# @param channel [String]
|
|
82
82
|
# @param [Hash] opts the optional parameters
|
|
83
83
|
# @return [GetChannelHealth200Response]
|
|
@@ -87,7 +87,7 @@ module Repull
|
|
|
87
87
|
end
|
|
88
88
|
|
|
89
89
|
# Per-channel connectivity health
|
|
90
|
-
# Reports reachability and auth state for one channel (`airbnb`, `booking`, `vrbo`
|
|
90
|
+
# Reports reachability and auth state for one channel (`airbnb`, `booking`, `vrbo`). Use it to tell \"the channel is down\" apart from \"this workspace's connection expired\". `200` when `status` is `ok`, `503` when `degraded` or `down` (the body's `status` and `message` say which and why). **`vrbo`** reports the connector's own signals in a `vrbo` block: connected accounts, accounts VRBO signed out (their bookings, messages and calendar stop until reconnected — `down`), accounts whose inbox sync is late (`degraded`), and the calendar push queue backlog and its oldest wait (`degraded` past 3 hours). Its rate is calendar pushes VRBO refused over finished ones in the last 3 hours; failures inside Repull's own connector are reported apart as `vrbo.connector_errors` and do not count (`vrbo.window_hours`; `refresh_attempts_24h` / `refresh_rejections_24h` count that window for VRBO), judged only once at least 50 pushes finished and at least 5 failed — VRBO pushes run in bursts, so a day-long window would keep reporting a problem already fixed.
|
|
91
91
|
# @param channel [String]
|
|
92
92
|
# @param [Hash] opts the optional parameters
|
|
93
93
|
# @return [Array<(GetChannelHealth200Response, Integer, Hash)>] GetChannelHealth200Response data, response status code and response headers
|
|
@@ -100,7 +100,7 @@ module Repull
|
|
|
100
100
|
fail ArgumentError, "Missing the required parameter 'channel' when calling HealthApi.get_channel_health"
|
|
101
101
|
end
|
|
102
102
|
# verify enum value
|
|
103
|
-
allowable_values = ["airbnb", "booking", "vrbo"
|
|
103
|
+
allowable_values = ["airbnb", "booking", "vrbo"]
|
|
104
104
|
if @api_client.config.client_side_validation && !allowable_values.include?(channel)
|
|
105
105
|
fail ArgumentError, "invalid value for \"channel\", must be one of #{allowable_values}"
|
|
106
106
|
end
|
|
@@ -21,7 +21,7 @@ module Repull
|
|
|
21
21
|
# The `state` you passed when creating the session.
|
|
22
22
|
attr_accessor :state
|
|
23
23
|
|
|
24
|
-
# Channel or PMS: airbnb, booking, booking_extranet, vrbo,
|
|
24
|
+
# Channel or PMS: airbnb, booking, booking_extranet, vrbo, hostaway, …
|
|
25
25
|
attr_accessor :provider
|
|
26
26
|
|
|
27
27
|
# The provider's own account id — Airbnb host id, Booking.com hotel id, Vrbo account id, or the PMS account.
|
|
@@ -33,6 +33,9 @@ module Repull
|
|
|
33
33
|
# Vrbo only.
|
|
34
34
|
attr_accessor :access_type
|
|
35
35
|
|
|
36
|
+
# Vrbo only. The address the host can add on Vrbo as a secondary email (with message and reservation notifications on) so new bookings, inquiries and messages arrive within a minute instead of at the scheduled check. Ask every host to add it: notifications are how Vrbo updates reach Repull, the scheduled check is the backup. Hosted Connect shows it on its mapping screen; show it in your own app when you create sessions with `mapping: \"api\"`.
|
|
37
|
+
attr_accessor :notification_email
|
|
38
|
+
|
|
36
39
|
# Vrbo only: where the account import stands.
|
|
37
40
|
attr_accessor :import
|
|
38
41
|
|
|
@@ -68,6 +71,7 @@ module Repull
|
|
|
68
71
|
:'connected' => :'connected',
|
|
69
72
|
:'email' => :'email',
|
|
70
73
|
:'access_type' => :'accessType',
|
|
74
|
+
:'notification_email' => :'notificationEmail',
|
|
71
75
|
:'import' => :'import'
|
|
72
76
|
}
|
|
73
77
|
end
|
|
@@ -92,6 +96,7 @@ module Repull
|
|
|
92
96
|
:'connected' => :'Boolean',
|
|
93
97
|
:'email' => :'String',
|
|
94
98
|
:'access_type' => :'String',
|
|
99
|
+
:'notification_email' => :'String',
|
|
95
100
|
:'import' => :'VrboImportStatus'
|
|
96
101
|
}
|
|
97
102
|
end
|
|
@@ -104,6 +109,7 @@ module Repull
|
|
|
104
109
|
:'status',
|
|
105
110
|
:'email',
|
|
106
111
|
:'access_type',
|
|
112
|
+
:'notification_email',
|
|
107
113
|
:'import'
|
|
108
114
|
])
|
|
109
115
|
end
|
|
@@ -152,6 +158,10 @@ module Repull
|
|
|
152
158
|
self.access_type = attributes[:'access_type']
|
|
153
159
|
end
|
|
154
160
|
|
|
161
|
+
if attributes.key?(:'notification_email')
|
|
162
|
+
self.notification_email = attributes[:'notification_email']
|
|
163
|
+
end
|
|
164
|
+
|
|
155
165
|
if attributes.key?(:'import')
|
|
156
166
|
self.import = attributes[:'import']
|
|
157
167
|
end
|
|
@@ -196,6 +206,7 @@ module Repull
|
|
|
196
206
|
connected == o.connected &&
|
|
197
207
|
email == o.email &&
|
|
198
208
|
access_type == o.access_type &&
|
|
209
|
+
notification_email == o.notification_email &&
|
|
199
210
|
import == o.import
|
|
200
211
|
end
|
|
201
212
|
|
|
@@ -208,7 +219,7 @@ module Repull
|
|
|
208
219
|
# Calculates hash code according to all attributes.
|
|
209
220
|
# @return [Integer] Hash code
|
|
210
221
|
def hash
|
|
211
|
-
[external_account_id, name, picture_url, status, connected, email, access_type, import].hash
|
|
222
|
+
[external_account_id, name, picture_url, status, connected, email, access_type, notification_email, import].hash
|
|
212
223
|
end
|
|
213
224
|
|
|
214
225
|
# Builds the object from hash
|
|
@@ -24,6 +24,9 @@ module Repull
|
|
|
24
24
|
# Airbnb — how many months of past reservations the first import pulls (1–60). Omit it for the default window. Upcoming stays are always imported. A wider window takes longer to import, because every extra month is more stays to fetch.
|
|
25
25
|
attr_accessor :reservation_history_months
|
|
26
26
|
|
|
27
|
+
# Where the channel's units get linked to listings. `hosted` (default): after a Vrbo or Booking.com Extranet sign-in, Connect shows a mapping step and returns to `redirectUrl` when it's confirmed. `api`: Connect skips that step and finishes right after sign-in. The connection reaches you in the `connect.session.completed` webhook (and as `connectionId` in the popup message), its handle is `vrbo:{connectionId}` or `booking_extranet:{connectionId}`; you list the units with `GET /v1/connections/{id}/units` and link them with `POST /v1/connections/{id}/mappings`. Nothing is imported until you post the mappings. Other providers ignore it.
|
|
28
|
+
attr_accessor :mapping
|
|
29
|
+
|
|
27
30
|
# What the connection may do. Airbnb: the OAuth scope tier. Vrbo: `messaging` (or `read_only`) imports bookings and messages and never pushes the calendar; `full_access` also pushes prices and availability. Setting it locks the choice; omit it to let the host choose on the hosted page (default `full_access`).
|
|
28
31
|
attr_accessor :access_type
|
|
29
32
|
|
|
@@ -74,6 +77,7 @@ module Repull
|
|
|
74
77
|
:'redirect_url' => :'redirectUrl',
|
|
75
78
|
:'state' => :'state',
|
|
76
79
|
:'reservation_history_months' => :'reservationHistoryMonths',
|
|
80
|
+
:'mapping' => :'mapping',
|
|
77
81
|
:'access_type' => :'accessType',
|
|
78
82
|
:'allowed_providers' => :'allowedProviders',
|
|
79
83
|
:'include_request_only' => :'includeRequestOnly',
|
|
@@ -101,6 +105,7 @@ module Repull
|
|
|
101
105
|
:'redirect_url' => :'String',
|
|
102
106
|
:'state' => :'String',
|
|
103
107
|
:'reservation_history_months' => :'Integer',
|
|
108
|
+
:'mapping' => :'String',
|
|
104
109
|
:'access_type' => :'String',
|
|
105
110
|
:'allowed_providers' => :'Array<String>',
|
|
106
111
|
:'include_request_only' => :'Boolean',
|
|
@@ -151,6 +156,12 @@ module Repull
|
|
|
151
156
|
self.reservation_history_months = attributes[:'reservation_history_months']
|
|
152
157
|
end
|
|
153
158
|
|
|
159
|
+
if attributes.key?(:'mapping')
|
|
160
|
+
self.mapping = attributes[:'mapping']
|
|
161
|
+
else
|
|
162
|
+
self.mapping = 'hosted'
|
|
163
|
+
end
|
|
164
|
+
|
|
154
165
|
if attributes.key?(:'access_type')
|
|
155
166
|
self.access_type = attributes[:'access_type']
|
|
156
167
|
end
|
|
@@ -219,6 +230,8 @@ module Repull
|
|
|
219
230
|
return false if @redirect_url.nil?
|
|
220
231
|
return false if !@reservation_history_months.nil? && @reservation_history_months > 60
|
|
221
232
|
return false if !@reservation_history_months.nil? && @reservation_history_months < 1
|
|
233
|
+
mapping_validator = EnumAttributeValidator.new('String', ["hosted", "api"])
|
|
234
|
+
return false unless mapping_validator.valid?(@mapping)
|
|
222
235
|
access_type_validator = EnumAttributeValidator.new('String', ["full_access", "messaging", "read_only"])
|
|
223
236
|
return false unless access_type_validator.valid?(@access_type)
|
|
224
237
|
purpose_validator = EnumAttributeValidator.new('String', ["connect", "migrate"])
|
|
@@ -254,6 +267,16 @@ module Repull
|
|
|
254
267
|
@reservation_history_months = reservation_history_months
|
|
255
268
|
end
|
|
256
269
|
|
|
270
|
+
# Custom attribute writer method checking allowed values (enum).
|
|
271
|
+
# @param [Object] mapping Object to be assigned
|
|
272
|
+
def mapping=(mapping)
|
|
273
|
+
validator = EnumAttributeValidator.new('String', ["hosted", "api"])
|
|
274
|
+
unless validator.valid?(mapping)
|
|
275
|
+
fail ArgumentError, "invalid value for \"mapping\", must be one of #{validator.allowable_values}."
|
|
276
|
+
end
|
|
277
|
+
@mapping = mapping
|
|
278
|
+
end
|
|
279
|
+
|
|
257
280
|
# Custom attribute writer method checking allowed values (enum).
|
|
258
281
|
# @param [Object] access_type Object to be assigned
|
|
259
282
|
def access_type=(access_type)
|
|
@@ -282,6 +305,7 @@ module Repull
|
|
|
282
305
|
redirect_url == o.redirect_url &&
|
|
283
306
|
state == o.state &&
|
|
284
307
|
reservation_history_months == o.reservation_history_months &&
|
|
308
|
+
mapping == o.mapping &&
|
|
285
309
|
access_type == o.access_type &&
|
|
286
310
|
allowed_providers == o.allowed_providers &&
|
|
287
311
|
include_request_only == o.include_request_only &&
|
|
@@ -301,7 +325,7 @@ module Repull
|
|
|
301
325
|
# Calculates hash code according to all attributes.
|
|
302
326
|
# @return [Integer] Hash code
|
|
303
327
|
def hash
|
|
304
|
-
[redirect_url, state, reservation_history_months, access_type, allowed_providers, include_request_only, locale, purpose, workspace, copy, scope].hash
|
|
328
|
+
[redirect_url, state, reservation_history_months, mapping, access_type, allowed_providers, include_request_only, locale, purpose, workspace, copy, scope].hash
|
|
305
329
|
end
|
|
306
330
|
|
|
307
331
|
# Builds the object from hash
|
|
@@ -19,7 +19,7 @@ module Repull
|
|
|
19
19
|
# Airbnb + Booking.com — where to redirect the user after they finish the hosted connect flow.
|
|
20
20
|
attr_accessor :redirect_url
|
|
21
21
|
|
|
22
|
-
# Airbnb only — selects the OAuth scope set. 'read_only' grants read-only scopes; 'messaging' grants read scopes plus message read/send but NOT property management, so it can coexist with another app (e.g. an existing PMS) that already holds property management on the same Airbnb account; 'full_access' (default) grants full host scopes including the exclusive property management (only one app per Airbnb account can hold it). The hosted consent screen normally lets the host pick a tier; passing `accessType` explicitly fixes the tier and hides that choice, so the host can only continue with the tier you requested. Omit it to let the host choose.
|
|
22
|
+
# Airbnb only — selects the OAuth scope set. 'read_only' grants read-only scopes; 'messaging' (shown to hosts as \"Messaging & reviews\") grants read scopes plus message read/send and review writes (reply to guest reviews, submit host reviews — Airbnb's reviews_write) but NOT property management, so it can coexist with another app (e.g. an existing PMS) that already holds property management on the same Airbnb account; 'full_access' (default) grants full host scopes including the exclusive property management (only one app per Airbnb account can hold it). The hosted consent screen normally lets the host pick a tier; passing `accessType` explicitly fixes the tier and hides that choice, so the host can only continue with the tier you requested. Omit it to let the host choose.
|
|
23
23
|
attr_accessor :access_type
|
|
24
24
|
|
|
25
25
|
# Airbnb — how many months of past reservations the first import pulls (1–60). Omit it for the default window. Upcoming stays are always imported. A wider window takes longer to import, because every extra month is more stays to fetch.
|
|
@@ -28,12 +28,6 @@ module Repull
|
|
|
28
28
|
# Airbnb + Booking.com — your own correlation token, e.g. your user id (at most 500 characters). Echoed on the redirect back (`&state=`) and in the `connect.session.completed` webhook.
|
|
29
29
|
attr_accessor :state
|
|
30
30
|
|
|
31
|
-
# Plumguide — client ID.
|
|
32
|
-
attr_accessor :client_id
|
|
33
|
-
|
|
34
|
-
# Plumguide — client secret.
|
|
35
|
-
attr_accessor :client_secret
|
|
36
|
-
|
|
37
31
|
# Airbnb only — optional UI language for the hosted Connect pages. Accepts any supported locale code (currently `en`, `fr`); unknown codes are ignored and resolution falls back to the workspace `default_language`, then `Accept-Language`, then `en`.
|
|
38
32
|
attr_accessor :locale
|
|
39
33
|
|
|
@@ -66,8 +60,6 @@ module Repull
|
|
|
66
60
|
:'access_type' => :'accessType',
|
|
67
61
|
:'reservation_history_months' => :'reservationHistoryMonths',
|
|
68
62
|
:'state' => :'state',
|
|
69
|
-
:'client_id' => :'clientId',
|
|
70
|
-
:'client_secret' => :'clientSecret',
|
|
71
63
|
:'locale' => :'locale'
|
|
72
64
|
}
|
|
73
65
|
end
|
|
@@ -89,8 +81,6 @@ module Repull
|
|
|
89
81
|
:'access_type' => :'String',
|
|
90
82
|
:'reservation_history_months' => :'Integer',
|
|
91
83
|
:'state' => :'String',
|
|
92
|
-
:'client_id' => :'String',
|
|
93
|
-
:'client_secret' => :'String',
|
|
94
84
|
:'locale' => :'String'
|
|
95
85
|
}
|
|
96
86
|
end
|
|
@@ -136,14 +126,6 @@ module Repull
|
|
|
136
126
|
self.state = attributes[:'state']
|
|
137
127
|
end
|
|
138
128
|
|
|
139
|
-
if attributes.key?(:'client_id')
|
|
140
|
-
self.client_id = attributes[:'client_id']
|
|
141
|
-
end
|
|
142
|
-
|
|
143
|
-
if attributes.key?(:'client_secret')
|
|
144
|
-
self.client_secret = attributes[:'client_secret']
|
|
145
|
-
end
|
|
146
|
-
|
|
147
129
|
if attributes.key?(:'locale')
|
|
148
130
|
self.locale = attributes[:'locale']
|
|
149
131
|
end
|
|
@@ -213,8 +195,6 @@ module Repull
|
|
|
213
195
|
access_type == o.access_type &&
|
|
214
196
|
reservation_history_months == o.reservation_history_months &&
|
|
215
197
|
state == o.state &&
|
|
216
|
-
client_id == o.client_id &&
|
|
217
|
-
client_secret == o.client_secret &&
|
|
218
198
|
locale == o.locale
|
|
219
199
|
end
|
|
220
200
|
|
|
@@ -227,7 +207,7 @@ module Repull
|
|
|
227
207
|
# Calculates hash code according to all attributes.
|
|
228
208
|
# @return [Integer] Hash code
|
|
229
209
|
def hash
|
|
230
|
-
[redirect_url, access_type, reservation_history_months, state,
|
|
210
|
+
[redirect_url, access_type, reservation_history_months, state, locale].hash
|
|
231
211
|
end
|
|
232
212
|
|
|
233
213
|
# Builds the object from hash
|
|
@@ -21,6 +21,9 @@ module Repull
|
|
|
21
21
|
|
|
22
22
|
attr_accessor :status
|
|
23
23
|
|
|
24
|
+
# Vrbo only. Ask the host to add this address on Vrbo as a secondary email, with message and reservation notifications on. It is how new bookings, inquiries and guest messages reach Repull within a minute; without it they arrive at the next scheduled check. Hosted Connect asks for it on its mapping screen, so show it in your own flow when you map with `mapping: \"api\"`.
|
|
25
|
+
attr_accessor :notification_email
|
|
26
|
+
|
|
24
27
|
attr_accessor :units
|
|
25
28
|
|
|
26
29
|
attr_accessor :listing_options
|
|
@@ -58,6 +61,7 @@ module Repull
|
|
|
58
61
|
:'connection_id' => :'connection_id',
|
|
59
62
|
:'channel' => :'channel',
|
|
60
63
|
:'status' => :'status',
|
|
64
|
+
:'notification_email' => :'notification_email',
|
|
61
65
|
:'units' => :'units',
|
|
62
66
|
:'listing_options' => :'listing_options',
|
|
63
67
|
:'missing_capabilities' => :'missing_capabilities',
|
|
@@ -81,6 +85,7 @@ module Repull
|
|
|
81
85
|
:'connection_id' => :'String',
|
|
82
86
|
:'channel' => :'String',
|
|
83
87
|
:'status' => :'String',
|
|
88
|
+
:'notification_email' => :'String',
|
|
84
89
|
:'units' => :'Array<ListConnectionUnits200ResponseUnitsInner>',
|
|
85
90
|
:'listing_options' => :'Array<ListConnectionUnits200ResponseListingOptionsInner>',
|
|
86
91
|
:'missing_capabilities' => :'Array<String>',
|
|
@@ -91,6 +96,7 @@ module Repull
|
|
|
91
96
|
# List of attributes with nullable: true
|
|
92
97
|
def self.openapi_nullable
|
|
93
98
|
Set.new([
|
|
99
|
+
:'notification_email',
|
|
94
100
|
])
|
|
95
101
|
end
|
|
96
102
|
|
|
@@ -122,6 +128,10 @@ module Repull
|
|
|
122
128
|
self.status = attributes[:'status']
|
|
123
129
|
end
|
|
124
130
|
|
|
131
|
+
if attributes.key?(:'notification_email')
|
|
132
|
+
self.notification_email = attributes[:'notification_email']
|
|
133
|
+
end
|
|
134
|
+
|
|
125
135
|
if attributes.key?(:'units')
|
|
126
136
|
if (value = attributes[:'units']).is_a?(Array)
|
|
127
137
|
self.units = value
|
|
@@ -180,6 +190,7 @@ module Repull
|
|
|
180
190
|
connection_id == o.connection_id &&
|
|
181
191
|
channel == o.channel &&
|
|
182
192
|
status == o.status &&
|
|
193
|
+
notification_email == o.notification_email &&
|
|
183
194
|
units == o.units &&
|
|
184
195
|
listing_options == o.listing_options &&
|
|
185
196
|
missing_capabilities == o.missing_capabilities &&
|
|
@@ -195,7 +206,7 @@ module Repull
|
|
|
195
206
|
# Calculates hash code according to all attributes.
|
|
196
207
|
# @return [Integer] Hash code
|
|
197
208
|
def hash
|
|
198
|
-
[connection_id, channel, status, units, listing_options, missing_capabilities, listing_options_total].hash
|
|
209
|
+
[connection_id, channel, status, notification_email, units, listing_options, missing_capabilities, listing_options_total].hash
|
|
199
210
|
end
|
|
200
211
|
|
|
201
212
|
# Builds the object from hash
|
|
@@ -25,6 +25,7 @@ module Repull
|
|
|
25
25
|
|
|
26
26
|
attr_accessor :suggested_listing_id
|
|
27
27
|
|
|
28
|
+
# Channel details that identify the unit. Booking.com Extranet: `hotel` (property name), `hotelId` (Booking.com property ID), `roomId` (Booking.com room ID), `city`. Vrbo: `headline`, `address`, `vrboStatus`; the Vrbo listing ID is `unit_id`.
|
|
28
29
|
attr_accessor :meta
|
|
29
30
|
|
|
30
31
|
# Attribute mapping from ruby-style variable name to JSON key.
|
|
@@ -14,16 +14,38 @@ require 'date'
|
|
|
14
14
|
require 'time'
|
|
15
15
|
|
|
16
16
|
module Repull
|
|
17
|
+
# The listing's postal address, unit included. Each part is read from the listing first, then from the connected channels (Airbnb, Vrbo, Booking.com). On an inactive row only `city` is present.
|
|
17
18
|
class ListingAddress < ApiModelBase
|
|
19
|
+
# Street line as stored on the listing. Kept for existing integrations; same value as `line1` unless the listing has no street of its own.
|
|
18
20
|
attr_accessor :street
|
|
19
21
|
|
|
22
|
+
# Street address: number and street.
|
|
23
|
+
attr_accessor :line1
|
|
24
|
+
|
|
25
|
+
# Apartment, unit, suite or building.
|
|
26
|
+
attr_accessor :line2
|
|
27
|
+
|
|
20
28
|
attr_accessor :city
|
|
21
29
|
|
|
30
|
+
# State, province or region.
|
|
31
|
+
attr_accessor :state
|
|
32
|
+
|
|
33
|
+
# Postal or ZIP code.
|
|
34
|
+
attr_accessor :postal_code
|
|
35
|
+
|
|
36
|
+
# ISO 3166-1 alpha-2 country code.
|
|
37
|
+
attr_accessor :country_code
|
|
38
|
+
|
|
22
39
|
# Attribute mapping from ruby-style variable name to JSON key.
|
|
23
40
|
def self.attribute_map
|
|
24
41
|
{
|
|
25
42
|
:'street' => :'street',
|
|
26
|
-
:'
|
|
43
|
+
:'line1' => :'line1',
|
|
44
|
+
:'line2' => :'line2',
|
|
45
|
+
:'city' => :'city',
|
|
46
|
+
:'state' => :'state',
|
|
47
|
+
:'postal_code' => :'postalCode',
|
|
48
|
+
:'country_code' => :'countryCode'
|
|
27
49
|
}
|
|
28
50
|
end
|
|
29
51
|
|
|
@@ -41,7 +63,12 @@ module Repull
|
|
|
41
63
|
def self.openapi_types
|
|
42
64
|
{
|
|
43
65
|
:'street' => :'String',
|
|
44
|
-
:'
|
|
66
|
+
:'line1' => :'String',
|
|
67
|
+
:'line2' => :'String',
|
|
68
|
+
:'city' => :'String',
|
|
69
|
+
:'state' => :'String',
|
|
70
|
+
:'postal_code' => :'String',
|
|
71
|
+
:'country_code' => :'String'
|
|
45
72
|
}
|
|
46
73
|
end
|
|
47
74
|
|
|
@@ -49,7 +76,12 @@ module Repull
|
|
|
49
76
|
def self.openapi_nullable
|
|
50
77
|
Set.new([
|
|
51
78
|
:'street',
|
|
52
|
-
:'
|
|
79
|
+
:'line1',
|
|
80
|
+
:'line2',
|
|
81
|
+
:'city',
|
|
82
|
+
:'state',
|
|
83
|
+
:'postal_code',
|
|
84
|
+
:'country_code'
|
|
53
85
|
])
|
|
54
86
|
end
|
|
55
87
|
|
|
@@ -73,9 +105,29 @@ module Repull
|
|
|
73
105
|
self.street = attributes[:'street']
|
|
74
106
|
end
|
|
75
107
|
|
|
108
|
+
if attributes.key?(:'line1')
|
|
109
|
+
self.line1 = attributes[:'line1']
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
if attributes.key?(:'line2')
|
|
113
|
+
self.line2 = attributes[:'line2']
|
|
114
|
+
end
|
|
115
|
+
|
|
76
116
|
if attributes.key?(:'city')
|
|
77
117
|
self.city = attributes[:'city']
|
|
78
118
|
end
|
|
119
|
+
|
|
120
|
+
if attributes.key?(:'state')
|
|
121
|
+
self.state = attributes[:'state']
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
if attributes.key?(:'postal_code')
|
|
125
|
+
self.postal_code = attributes[:'postal_code']
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
if attributes.key?(:'country_code')
|
|
129
|
+
self.country_code = attributes[:'country_code']
|
|
130
|
+
end
|
|
79
131
|
end
|
|
80
132
|
|
|
81
133
|
# Show invalid properties with the reasons. Usually used together with valid?
|
|
@@ -99,7 +151,12 @@ module Repull
|
|
|
99
151
|
return true if self.equal?(o)
|
|
100
152
|
self.class == o.class &&
|
|
101
153
|
street == o.street &&
|
|
102
|
-
|
|
154
|
+
line1 == o.line1 &&
|
|
155
|
+
line2 == o.line2 &&
|
|
156
|
+
city == o.city &&
|
|
157
|
+
state == o.state &&
|
|
158
|
+
postal_code == o.postal_code &&
|
|
159
|
+
country_code == o.country_code
|
|
103
160
|
end
|
|
104
161
|
|
|
105
162
|
# @see the `==` method
|
|
@@ -111,7 +168,7 @@ module Repull
|
|
|
111
168
|
# Calculates hash code according to all attributes.
|
|
112
169
|
# @return [Integer] Hash code
|
|
113
170
|
def hash
|
|
114
|
-
[street, city].hash
|
|
171
|
+
[street, line1, line2, city, state, postal_code, country_code].hash
|
|
115
172
|
end
|
|
116
173
|
|
|
117
174
|
# Builds the object from hash
|
|
@@ -23,6 +23,12 @@ module Repull
|
|
|
23
23
|
|
|
24
24
|
attr_accessor :direction
|
|
25
25
|
|
|
26
|
+
# Delivery state. Inbound messages are `received`. An outbound message is `sending` while it is queued to the channel, `sent` once the channel accepted it, or `failed`. Only `sent` (or `received`) means the guest can see it.
|
|
27
|
+
attr_accessor :status
|
|
28
|
+
|
|
29
|
+
# Why a message is still `sending` or `failed`, in plain words. `null` otherwise.
|
|
30
|
+
attr_accessor :status_reason
|
|
31
|
+
|
|
26
32
|
# Free-form sender role from the channel (e.g. `guest`, `host`, `system`, `airbnb`). Use `direction` for binary inbound/outbound logic.
|
|
27
33
|
attr_accessor :sender_type
|
|
28
34
|
|
|
@@ -50,6 +56,7 @@ module Repull
|
|
|
50
56
|
|
|
51
57
|
attr_accessor :sent_at
|
|
52
58
|
|
|
59
|
+
# When the message reached the channel. `null` while it is `sending` or when it `failed`.
|
|
53
60
|
attr_accessor :delivered_at
|
|
54
61
|
|
|
55
62
|
attr_accessor :read_at
|
|
@@ -60,6 +67,8 @@ module Repull
|
|
|
60
67
|
:'id' => :'id',
|
|
61
68
|
:'external_message_id' => :'externalMessageId',
|
|
62
69
|
:'direction' => :'direction',
|
|
70
|
+
:'status' => :'status',
|
|
71
|
+
:'status_reason' => :'statusReason',
|
|
63
72
|
:'sender_type' => :'senderType',
|
|
64
73
|
:'sender_name' => :'senderName',
|
|
65
74
|
:'sender_avatar' => :'senderAvatar',
|
|
@@ -91,6 +100,8 @@ module Repull
|
|
|
91
100
|
:'id' => :'String',
|
|
92
101
|
:'external_message_id' => :'String',
|
|
93
102
|
:'direction' => :'String',
|
|
103
|
+
:'status' => :'String',
|
|
104
|
+
:'status_reason' => :'String',
|
|
94
105
|
:'sender_type' => :'String',
|
|
95
106
|
:'sender_name' => :'String',
|
|
96
107
|
:'sender_avatar' => :'String',
|
|
@@ -110,10 +121,12 @@ module Repull
|
|
|
110
121
|
def self.openapi_nullable
|
|
111
122
|
Set.new([
|
|
112
123
|
:'external_message_id',
|
|
124
|
+
:'status_reason',
|
|
113
125
|
:'sender_type',
|
|
114
126
|
:'sender_avatar',
|
|
115
127
|
:'channel',
|
|
116
128
|
:'translated_body',
|
|
129
|
+
:'delivered_at',
|
|
117
130
|
:'read_at'
|
|
118
131
|
])
|
|
119
132
|
end
|
|
@@ -146,6 +159,14 @@ module Repull
|
|
|
146
159
|
self.direction = attributes[:'direction']
|
|
147
160
|
end
|
|
148
161
|
|
|
162
|
+
if attributes.key?(:'status')
|
|
163
|
+
self.status = attributes[:'status']
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
if attributes.key?(:'status_reason')
|
|
167
|
+
self.status_reason = attributes[:'status_reason']
|
|
168
|
+
end
|
|
169
|
+
|
|
149
170
|
if attributes.key?(:'sender_type')
|
|
150
171
|
self.sender_type = attributes[:'sender_type']
|
|
151
172
|
end
|
|
@@ -220,6 +241,8 @@ module Repull
|
|
|
220
241
|
id == o.id &&
|
|
221
242
|
external_message_id == o.external_message_id &&
|
|
222
243
|
direction == o.direction &&
|
|
244
|
+
status == o.status &&
|
|
245
|
+
status_reason == o.status_reason &&
|
|
223
246
|
sender_type == o.sender_type &&
|
|
224
247
|
sender_name == o.sender_name &&
|
|
225
248
|
sender_avatar == o.sender_avatar &&
|
|
@@ -243,7 +266,7 @@ module Repull
|
|
|
243
266
|
# Calculates hash code according to all attributes.
|
|
244
267
|
# @return [Integer] Hash code
|
|
245
268
|
def hash
|
|
246
|
-
[id, external_message_id, direction, sender_type, sender_name, sender_avatar, channel, body, translated_body, attachments, is_automated, ai_generated, sent_at, delivered_at, read_at].hash
|
|
269
|
+
[id, external_message_id, direction, status, status_reason, sender_type, sender_name, sender_avatar, channel, body, translated_body, attachments, is_automated, ai_generated, sent_at, delivered_at, read_at].hash
|
|
247
270
|
end
|
|
248
271
|
|
|
249
272
|
# Builds the object from hash
|