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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5453d00d2254c37064fb3d591020d9e271661e295606bcc092651c529c9297ca
4
- data.tar.gz: a07e127de3d76576429fad4115560ee74fceacb5a1e9045092eaa87704c11896
3
+ metadata.gz: eb4904bffdfd0e974a84ace8b66fbf440e840ee0ad6e4441e980b972333feca3
4
+ data.tar.gz: db011ab5968f90b358c9c78d6d6729302ca76dcad9524d4f1ffd8e8bfaa8b26c
5
5
  SHA512:
6
- metadata.gz: 2ef3b9b10250794a6d8f00dc6ab02dfb35de1647330259e79eeb2a14a4f40a29aa03a361db6fcdc087c3c11ea5bd6880bdeda5f8652f7f1456ef7eba1ac751d1
7
- data.tar.gz: b269cfed6040af04000f8a432328dbc12c215dd667d74497aa62a954b45f42de2e92524f2b3f70a043529dedfbda6a7d66ff5232174dd1d3e86e538c6af5984c
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 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).
@@ -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.6'
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
  }
@@ -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 only \u2014 where to redirect the user after the OAuth flow completes."
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.5
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-24 00:00:00.000000000 Z
11
+ date: 2026-06-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: typhoeus