repull 0.2.5 → 0.2.7
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_connect_session_request.rb +16 -5
- data/lib/repull/models/create_connection_request.rb +16 -5
- data/lib/repull/models/property.rb +13 -1
- data/lib/repull/version.rb +1 -1
- data/openapi/v1.json +39 -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: 2002ffeade6c17fff58ce091ca2b9ef17dc9e2bb8b78ce00f5be7c384bf2dab1
|
|
4
|
+
data.tar.gz: f95b91551c7e754d0f274a4bed957a3fedd46e3afff565e350f89659b2b91293
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1b1b860a983ba03fd156f3b2d8feeff8c33cae0b3711f9ca1553f77d649353a7bd4573a895e945029fcd1f137dc994b4fc4ab298bd4e38c4170f9c910fe64dcd
|
|
7
|
+
data.tar.gz: 5228ab1cdbd8b06e884f45d3cb7533aec85e0105afb5ab1deb51b1586fadd8ff24a66dd9e3fbfba6b1d2b637749c0db83f9b3e0efd3d4b36c254f1db8e576185
|
|
@@ -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
|
|
@@ -24,12 +24,16 @@ module Repull
|
|
|
24
24
|
# Optional whitelist of provider IDs the picker should expose. Omit to show every channel in the registry.
|
|
25
25
|
attr_accessor :allowed_providers
|
|
26
26
|
|
|
27
|
+
# Optional UI language for the hosted Connect pages. Accepts any supported locale code (currently `en`, `fr`). When set it pins the language for the whole flow, overriding the workspace `default_language`. Unknown codes are ignored and the page falls back to the workspace default, then `Accept-Language`, then `en`. The end user can still override per-visit with a `?locale=` query param on the hosted page.
|
|
28
|
+
attr_accessor :locale
|
|
29
|
+
|
|
27
30
|
# Attribute mapping from ruby-style variable name to JSON key.
|
|
28
31
|
def self.attribute_map
|
|
29
32
|
{
|
|
30
33
|
:'redirect_url' => :'redirectUrl',
|
|
31
34
|
:'state' => :'state',
|
|
32
|
-
:'allowed_providers' => :'allowedProviders'
|
|
35
|
+
:'allowed_providers' => :'allowedProviders',
|
|
36
|
+
:'locale' => :'locale'
|
|
33
37
|
}
|
|
34
38
|
end
|
|
35
39
|
|
|
@@ -48,7 +52,8 @@ module Repull
|
|
|
48
52
|
{
|
|
49
53
|
:'redirect_url' => :'String',
|
|
50
54
|
:'state' => :'String',
|
|
51
|
-
:'allowed_providers' => :'Array<String>'
|
|
55
|
+
:'allowed_providers' => :'Array<String>',
|
|
56
|
+
:'locale' => :'String'
|
|
52
57
|
}
|
|
53
58
|
end
|
|
54
59
|
|
|
@@ -56,7 +61,8 @@ module Repull
|
|
|
56
61
|
def self.openapi_nullable
|
|
57
62
|
Set.new([
|
|
58
63
|
:'state',
|
|
59
|
-
:'allowed_providers'
|
|
64
|
+
:'allowed_providers',
|
|
65
|
+
:'locale'
|
|
60
66
|
])
|
|
61
67
|
end
|
|
62
68
|
|
|
@@ -91,6 +97,10 @@ module Repull
|
|
|
91
97
|
self.allowed_providers = value
|
|
92
98
|
end
|
|
93
99
|
end
|
|
100
|
+
|
|
101
|
+
if attributes.key?(:'locale')
|
|
102
|
+
self.locale = attributes[:'locale']
|
|
103
|
+
end
|
|
94
104
|
end
|
|
95
105
|
|
|
96
106
|
# Show invalid properties with the reasons. Usually used together with valid?
|
|
@@ -130,7 +140,8 @@ module Repull
|
|
|
130
140
|
self.class == o.class &&
|
|
131
141
|
redirect_url == o.redirect_url &&
|
|
132
142
|
state == o.state &&
|
|
133
|
-
allowed_providers == o.allowed_providers
|
|
143
|
+
allowed_providers == o.allowed_providers &&
|
|
144
|
+
locale == o.locale
|
|
134
145
|
end
|
|
135
146
|
|
|
136
147
|
# @see the `==` method
|
|
@@ -142,7 +153,7 @@ module Repull
|
|
|
142
153
|
# Calculates hash code according to all attributes.
|
|
143
154
|
# @return [Integer] Hash code
|
|
144
155
|
def hash
|
|
145
|
-
[redirect_url, state, allowed_providers].hash
|
|
156
|
+
[redirect_url, state, allowed_providers, locale].hash
|
|
146
157
|
end
|
|
147
158
|
|
|
148
159
|
# Builds the object from hash
|
|
@@ -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).
|
|
@@ -31,6 +31,9 @@ module Repull
|
|
|
31
31
|
# Plumguide — client secret.
|
|
32
32
|
attr_accessor :client_secret
|
|
33
33
|
|
|
34
|
+
# 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`.
|
|
35
|
+
attr_accessor :locale
|
|
36
|
+
|
|
34
37
|
class EnumAttributeValidator
|
|
35
38
|
attr_reader :datatype
|
|
36
39
|
attr_reader :allowable_values
|
|
@@ -60,7 +63,8 @@ module Repull
|
|
|
60
63
|
:'access_type' => :'accessType',
|
|
61
64
|
:'api_key' => :'apiKey',
|
|
62
65
|
:'client_id' => :'clientId',
|
|
63
|
-
:'client_secret' => :'clientSecret'
|
|
66
|
+
:'client_secret' => :'clientSecret',
|
|
67
|
+
:'locale' => :'locale'
|
|
64
68
|
}
|
|
65
69
|
end
|
|
66
70
|
|
|
@@ -81,13 +85,15 @@ module Repull
|
|
|
81
85
|
:'access_type' => :'String',
|
|
82
86
|
:'api_key' => :'String',
|
|
83
87
|
:'client_id' => :'String',
|
|
84
|
-
:'client_secret' => :'String'
|
|
88
|
+
:'client_secret' => :'String',
|
|
89
|
+
:'locale' => :'String'
|
|
85
90
|
}
|
|
86
91
|
end
|
|
87
92
|
|
|
88
93
|
# List of attributes with nullable: true
|
|
89
94
|
def self.openapi_nullable
|
|
90
95
|
Set.new([
|
|
96
|
+
:'locale'
|
|
91
97
|
])
|
|
92
98
|
end
|
|
93
99
|
|
|
@@ -128,6 +134,10 @@ module Repull
|
|
|
128
134
|
if attributes.key?(:'client_secret')
|
|
129
135
|
self.client_secret = attributes[:'client_secret']
|
|
130
136
|
end
|
|
137
|
+
|
|
138
|
+
if attributes.key?(:'locale')
|
|
139
|
+
self.locale = attributes[:'locale']
|
|
140
|
+
end
|
|
131
141
|
end
|
|
132
142
|
|
|
133
143
|
# Show invalid properties with the reasons. Usually used together with valid?
|
|
@@ -166,7 +176,8 @@ module Repull
|
|
|
166
176
|
access_type == o.access_type &&
|
|
167
177
|
api_key == o.api_key &&
|
|
168
178
|
client_id == o.client_id &&
|
|
169
|
-
client_secret == o.client_secret
|
|
179
|
+
client_secret == o.client_secret &&
|
|
180
|
+
locale == o.locale
|
|
170
181
|
end
|
|
171
182
|
|
|
172
183
|
# @see the `==` method
|
|
@@ -178,7 +189,7 @@ module Repull
|
|
|
178
189
|
# Calculates hash code according to all attributes.
|
|
179
190
|
# @return [Integer] Hash code
|
|
180
191
|
def hash
|
|
181
|
-
[redirect_url, access_type, api_key, client_id, client_secret].hash
|
|
192
|
+
[redirect_url, access_type, api_key, client_id, client_secret, locale].hash
|
|
182
193
|
end
|
|
183
194
|
|
|
184
195
|
# Builds the object from hash
|
|
@@ -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
|
}
|
|
@@ -7607,6 +7632,12 @@
|
|
|
7607
7632
|
},
|
|
7608
7633
|
"nullable": true,
|
|
7609
7634
|
"description": "Optional whitelist of provider IDs the picker should expose. Omit to show every channel in the registry."
|
|
7635
|
+
},
|
|
7636
|
+
"locale": {
|
|
7637
|
+
"type": "string",
|
|
7638
|
+
"nullable": true,
|
|
7639
|
+
"description": "Optional UI language for the hosted Connect pages. Accepts any supported locale code (currently `en`, `fr`). When set it pins the language for the whole flow, overriding the workspace `default_language`. Unknown codes are ignored and the page falls back to the workspace default, then `Accept-Language`, then `en`. The end user can still override per-visit with a `?locale=` query param on the hosted page.",
|
|
7640
|
+
"example": "fr"
|
|
7610
7641
|
}
|
|
7611
7642
|
}
|
|
7612
7643
|
}
|
|
@@ -7733,7 +7764,7 @@
|
|
|
7733
7764
|
"post": {
|
|
7734
7765
|
"operationId": "create_connection",
|
|
7735
7766
|
"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.",
|
|
7767
|
+
"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
7768
|
"tags": [
|
|
7738
7769
|
"Connect"
|
|
7739
7770
|
],
|
|
@@ -7752,7 +7783,7 @@
|
|
|
7752
7783
|
"redirectUrl": {
|
|
7753
7784
|
"type": "string",
|
|
7754
7785
|
"format": "uri",
|
|
7755
|
-
"description": "Airbnb
|
|
7786
|
+
"description": "Airbnb + Booking.com \u2014 where to redirect the user after they finish the hosted connect flow."
|
|
7756
7787
|
},
|
|
7757
7788
|
"accessType": {
|
|
7758
7789
|
"type": "string",
|
|
@@ -7775,6 +7806,12 @@
|
|
|
7775
7806
|
"clientSecret": {
|
|
7776
7807
|
"type": "string",
|
|
7777
7808
|
"description": "Plumguide \u2014 client secret."
|
|
7809
|
+
},
|
|
7810
|
+
"locale": {
|
|
7811
|
+
"type": "string",
|
|
7812
|
+
"nullable": true,
|
|
7813
|
+
"description": "Airbnb only \u2014 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`.",
|
|
7814
|
+
"example": "fr"
|
|
7778
7815
|
}
|
|
7779
7816
|
}
|
|
7780
7817
|
}
|
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.7
|
|
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-30 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: typhoeus
|