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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5453d00d2254c37064fb3d591020d9e271661e295606bcc092651c529c9297ca
4
- data.tar.gz: a07e127de3d76576429fad4115560ee74fceacb5a1e9045092eaa87704c11896
3
+ metadata.gz: 2002ffeade6c17fff58ce091ca2b9ef17dc9e2bb8b78ce00f5be7c384bf2dab1
4
+ data.tar.gz: f95b91551c7e754d0f274a4bed957a3fedd46e3afff565e350f89659b2b91293
5
5
  SHA512:
6
- metadata.gz: 2ef3b9b10250794a6d8f00dc6ab02dfb35de1647330259e79eeb2a14a4f40a29aa03a361db6fcdc087c3c11ea5bd6880bdeda5f8652f7f1456ef7eba1ac751d1
7
- data.tar.gz: b269cfed6040af04000f8a432328dbc12c215dd667d74497aa62a954b45f42de2e92524f2b3f70a043529dedfbda6a7d66ff5232174dd1d3e86e538c6af5984c
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 only — where to redirect the user after the OAuth flow completes.
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
@@ -11,5 +11,5 @@ Generator version: 7.22.0
11
11
  =end
12
12
 
13
13
  module Repull
14
- VERSION = '0.2.5'
14
+ VERSION = '0.2.7'
15
15
  end
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 only \u2014 where to redirect the user after the OAuth flow completes."
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.5
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-24 00:00:00.000000000 Z
11
+ date: 2026-06-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: typhoeus