repull 0.2.5 → 0.2.6
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 +2 -2
- data/lib/repull/api/properties_api.rb +7 -0
- data/lib/repull/models/create_connection_request.rb +1 -1
- data/lib/repull/models/property.rb +13 -1
- data/lib/repull/version.rb +1 -1
- data/openapi/v1.json +27 -2
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: eb4904bffdfd0e974a84ace8b66fbf440e840ee0ad6e4441e980b972333feca3
|
|
4
|
+
data.tar.gz: db011ab5968f90b358c9c78d6d6729302ca76dcad9524d4f1ffd8e8bfaa8b26c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4f5b03505aab77fcd052c9c6f0c24d604f8d9a6f44fef97e5ead31ef5a062cd55adcf60c72caedac9c30228c930d9e86c9a6beb6d8c01316e85e5a0b713b1411
|
|
7
|
+
data.tar.gz: 15ea78a74d128d3d0de6c7a16b94aa3b0ae88dc9e498924c00c607a1dc97e5ce2df8a4cc4cc4879dbda1005e9c25f741193c6acf543d79db9d9f788d14516f38
|
|
@@ -88,7 +88,7 @@ module Repull
|
|
|
88
88
|
end
|
|
89
89
|
|
|
90
90
|
# Connect to PMS/OTA provider
|
|
91
|
-
# 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.
|
|
91
|
+
# 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 designate FantasticStay in their Booking.com Extranet and paste their Hotel ID. Same response shape as Airbnb (`url`, `sessionId`, `expiresAt`). PMS providers (api-key based) pass `apiKey` instead; Plumguide passes `clientId`/`clientSecret`.
|
|
92
92
|
# @param provider [String] PMS provider slug (e.g., hostaway, guesty, ownerrez)
|
|
93
93
|
# @param [Hash] opts the optional parameters
|
|
94
94
|
# @option opts [CreateConnectionRequest] :create_connection_request
|
|
@@ -99,7 +99,7 @@ module Repull
|
|
|
99
99
|
end
|
|
100
100
|
|
|
101
101
|
# Connect to PMS/OTA provider
|
|
102
|
-
# 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.
|
|
102
|
+
# 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 designate FantasticStay in their Booking.com Extranet and paste their Hotel ID. Same response shape as Airbnb (`url`, `sessionId`, `expiresAt`). PMS providers (api-key based) pass `apiKey` instead; Plumguide passes `clientId`/`clientSecret`.
|
|
103
103
|
# @param provider [String] PMS provider slug (e.g., hostaway, guesty, ownerrez)
|
|
104
104
|
# @param [Hash] opts the optional parameters
|
|
105
105
|
# @option opts [CreateConnectionRequest] :create_connection_request
|
|
@@ -98,6 +98,7 @@ module Repull
|
|
|
98
98
|
# @option opts [String] :q Case-insensitive substring search on name, street, or city.
|
|
99
99
|
# @option opts [String] :status Filter by status. Default returns active only; pass `inactive` to invert or `all` to include both. (default to 'active')
|
|
100
100
|
# @option opts [String] :lifecycle_status Filter by lifecycle status (e.g. `live`, `draft`, `archived`). Pass `all` to disable the filter.
|
|
101
|
+
# @option opts [String] :channel Filter to properties with an active link on the given OTA/channel (airbnb, booking, vrbo). Omit to include every channel. Each property also returns a `channels` array listing the OTAs it is published on.
|
|
101
102
|
# @option opts [Boolean] :include_total When `true` (default), the response's `pagination.total` carries the count of rows matching the current filter, across all pages. Pass `false` to skip the count for very large workspaces where the per-page COUNT(*) cost matters. (default to true)
|
|
102
103
|
# @return [PropertyListResponse]
|
|
103
104
|
def list_properties(opts = {})
|
|
@@ -114,6 +115,7 @@ module Repull
|
|
|
114
115
|
# @option opts [String] :q Case-insensitive substring search on name, street, or city.
|
|
115
116
|
# @option opts [String] :status Filter by status. Default returns active only; pass `inactive` to invert or `all` to include both. (default to 'active')
|
|
116
117
|
# @option opts [String] :lifecycle_status Filter by lifecycle status (e.g. `live`, `draft`, `archived`). Pass `all` to disable the filter.
|
|
118
|
+
# @option opts [String] :channel Filter to properties with an active link on the given OTA/channel (airbnb, booking, vrbo). Omit to include every channel. Each property also returns a `channels` array listing the OTAs it is published on.
|
|
117
119
|
# @option opts [Boolean] :include_total When `true` (default), the response's `pagination.total` carries the count of rows matching the current filter, across all pages. Pass `false` to skip the count for very large workspaces where the per-page COUNT(*) cost matters. (default to true)
|
|
118
120
|
# @return [Array<(PropertyListResponse, Integer, Hash)>] PropertyListResponse data, response status code and response headers
|
|
119
121
|
def list_properties_with_http_info(opts = {})
|
|
@@ -140,6 +142,10 @@ module Repull
|
|
|
140
142
|
if @api_client.config.client_side_validation && opts[:'status'] && !allowable_values.include?(opts[:'status'])
|
|
141
143
|
fail ArgumentError, "invalid value for \"status\", must be one of #{allowable_values}"
|
|
142
144
|
end
|
|
145
|
+
allowable_values = ["airbnb", "booking", "vrbo"]
|
|
146
|
+
if @api_client.config.client_side_validation && opts[:'channel'] && !allowable_values.include?(opts[:'channel'])
|
|
147
|
+
fail ArgumentError, "invalid value for \"channel\", must be one of #{allowable_values}"
|
|
148
|
+
end
|
|
143
149
|
# resource path
|
|
144
150
|
local_var_path = '/v1/properties'
|
|
145
151
|
|
|
@@ -151,6 +157,7 @@ module Repull
|
|
|
151
157
|
query_params[:'q'] = opts[:'q'] if !opts[:'q'].nil?
|
|
152
158
|
query_params[:'status'] = opts[:'status'] if !opts[:'status'].nil?
|
|
153
159
|
query_params[:'lifecycle_status'] = opts[:'lifecycle_status'] if !opts[:'lifecycle_status'].nil?
|
|
160
|
+
query_params[:'channel'] = opts[:'channel'] if !opts[:'channel'].nil?
|
|
154
161
|
query_params[:'include_total'] = opts[:'include_total'] if !opts[:'include_total'].nil?
|
|
155
162
|
|
|
156
163
|
# header parameters
|
|
@@ -16,7 +16,7 @@ require 'time'
|
|
|
16
16
|
module Repull
|
|
17
17
|
# Provider-specific credentials (apiKey, clientId/clientSecret, etc.) or OAuth init params for Airbnb.
|
|
18
18
|
class CreateConnectionRequest < ApiModelBase
|
|
19
|
-
# Airbnb
|
|
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
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).
|
|
@@ -50,6 +50,9 @@ module Repull
|
|
|
50
50
|
# Source PMS
|
|
51
51
|
attr_accessor :provider
|
|
52
52
|
|
|
53
|
+
# OTAs/channels this property is actively published on (e.g. `airbnb`, `booking`, `vrbo`). Empty array when the property has no active channel links.
|
|
54
|
+
attr_accessor :channels
|
|
55
|
+
|
|
53
56
|
# Amenity rows for the property. **Only present when the caller passes `?include=amenities`.** Empty array (`[]`) when the property has no amenity rows.
|
|
54
57
|
attr_accessor :amenities
|
|
55
58
|
|
|
@@ -70,6 +73,7 @@ module Repull
|
|
|
70
73
|
:'max_guests' => :'maxGuests',
|
|
71
74
|
:'thumbnail' => :'thumbnail',
|
|
72
75
|
:'provider' => :'provider',
|
|
76
|
+
:'channels' => :'channels',
|
|
73
77
|
:'amenities' => :'amenities'
|
|
74
78
|
}
|
|
75
79
|
end
|
|
@@ -101,6 +105,7 @@ module Repull
|
|
|
101
105
|
:'max_guests' => :'Integer',
|
|
102
106
|
:'thumbnail' => :'String',
|
|
103
107
|
:'provider' => :'String',
|
|
108
|
+
:'channels' => :'Array<String>',
|
|
104
109
|
:'amenities' => :'Array<ListingAmenity>'
|
|
105
110
|
}
|
|
106
111
|
end
|
|
@@ -183,6 +188,12 @@ module Repull
|
|
|
183
188
|
self.provider = attributes[:'provider']
|
|
184
189
|
end
|
|
185
190
|
|
|
191
|
+
if attributes.key?(:'channels')
|
|
192
|
+
if (value = attributes[:'channels']).is_a?(Array)
|
|
193
|
+
self.channels = value
|
|
194
|
+
end
|
|
195
|
+
end
|
|
196
|
+
|
|
186
197
|
if attributes.key?(:'amenities')
|
|
187
198
|
if (value = attributes[:'amenities']).is_a?(Array)
|
|
188
199
|
self.amenities = value
|
|
@@ -224,6 +235,7 @@ module Repull
|
|
|
224
235
|
max_guests == o.max_guests &&
|
|
225
236
|
thumbnail == o.thumbnail &&
|
|
226
237
|
provider == o.provider &&
|
|
238
|
+
channels == o.channels &&
|
|
227
239
|
amenities == o.amenities
|
|
228
240
|
end
|
|
229
241
|
|
|
@@ -236,7 +248,7 @@ module Repull
|
|
|
236
248
|
# Calculates hash code according to all attributes.
|
|
237
249
|
# @return [Integer] Hash code
|
|
238
250
|
def hash
|
|
239
|
-
[id, external_id, name, address, city, state, country, latitude, longitude, bedrooms, bathrooms, max_guests, thumbnail, provider, amenities].hash
|
|
251
|
+
[id, external_id, name, address, city, state, country, latitude, longitude, bedrooms, bathrooms, max_guests, thumbnail, provider, channels, amenities].hash
|
|
240
252
|
end
|
|
241
253
|
|
|
242
254
|
# Builds the object from hash
|
data/lib/repull/version.rb
CHANGED
data/openapi/v1.json
CHANGED
|
@@ -213,6 +213,17 @@
|
|
|
213
213
|
"description": "Source PMS",
|
|
214
214
|
"example": "hostaway"
|
|
215
215
|
},
|
|
216
|
+
"channels": {
|
|
217
|
+
"type": "array",
|
|
218
|
+
"items": {
|
|
219
|
+
"type": "string"
|
|
220
|
+
},
|
|
221
|
+
"description": "OTAs/channels this property is actively published on (e.g. `airbnb`, `booking`, `vrbo`). Empty array when the property has no active channel links.",
|
|
222
|
+
"example": [
|
|
223
|
+
"airbnb",
|
|
224
|
+
"booking"
|
|
225
|
+
]
|
|
226
|
+
},
|
|
216
227
|
"amenities": {
|
|
217
228
|
"type": "array",
|
|
218
229
|
"items": {
|
|
@@ -6481,6 +6492,20 @@
|
|
|
6481
6492
|
},
|
|
6482
6493
|
"description": "Filter by lifecycle status (e.g. `live`, `draft`, `archived`). Pass `all` to disable the filter."
|
|
6483
6494
|
},
|
|
6495
|
+
{
|
|
6496
|
+
"name": "channel",
|
|
6497
|
+
"in": "query",
|
|
6498
|
+
"schema": {
|
|
6499
|
+
"type": "string",
|
|
6500
|
+
"enum": [
|
|
6501
|
+
"airbnb",
|
|
6502
|
+
"booking",
|
|
6503
|
+
"vrbo"
|
|
6504
|
+
],
|
|
6505
|
+
"example": "airbnb"
|
|
6506
|
+
},
|
|
6507
|
+
"description": "Filter to properties with an active link on the given OTA/channel (airbnb, booking, vrbo). Omit to include every channel. Each property also returns a `channels` array listing the OTAs it is published on."
|
|
6508
|
+
},
|
|
6484
6509
|
{
|
|
6485
6510
|
"$ref": "#/components/parameters/IncludeTotal"
|
|
6486
6511
|
}
|
|
@@ -7733,7 +7758,7 @@
|
|
|
7733
7758
|
"post": {
|
|
7734
7759
|
"operationId": "create_connection",
|
|
7735
7760
|
"summary": "Connect to PMS/OTA provider",
|
|
7736
|
-
"description": "Establish a connection to a PMS or OTA platform. Credentials vary by provider \u2014 see docs for each provider.\n\nAirbnb-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` \u2014 the default \u2014 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.",
|
|
7761
|
+
"description": "Establish a connection to a PMS or OTA platform. Credentials vary by provider \u2014 see docs for each provider.\n\nAirbnb-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` \u2014 the default \u2014 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.\n\nBooking.com: pass `redirectUrl` (no `accessType`). The response returns a hosted `url` \u2014 send the user there to designate FantasticStay in their Booking.com Extranet and paste their Hotel ID. Same response shape as Airbnb (`url`, `sessionId`, `expiresAt`).\n\nPMS providers (api-key based) pass `apiKey` instead; Plumguide passes `clientId`/`clientSecret`.",
|
|
7737
7762
|
"tags": [
|
|
7738
7763
|
"Connect"
|
|
7739
7764
|
],
|
|
@@ -7752,7 +7777,7 @@
|
|
|
7752
7777
|
"redirectUrl": {
|
|
7753
7778
|
"type": "string",
|
|
7754
7779
|
"format": "uri",
|
|
7755
|
-
"description": "Airbnb
|
|
7780
|
+
"description": "Airbnb + Booking.com \u2014 where to redirect the user after they finish the hosted connect flow."
|
|
7756
7781
|
},
|
|
7757
7782
|
"accessType": {
|
|
7758
7783
|
"type": "string",
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: repull
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ivan Nikolov
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-06-
|
|
11
|
+
date: 2026-06-25 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: typhoeus
|