repull 0.2.9 → 0.2.14

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.
Files changed (376) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/lib/repull/api/airbnb_api.rb +1703 -196
  4. data/lib/repull/api/atlas_api.rb +5 -5
  5. data/lib/repull/api/availability_api.rb +241 -0
  6. data/lib/repull/api/billing_api.rb +227 -1
  7. data/lib/repull/api/booking_com_api.rb +777 -31
  8. data/lib/repull/api/connect_api.rb +761 -8
  9. data/lib/repull/api/conversations_api.rb +92 -11
  10. data/lib/repull/api/guests_api.rb +82 -7
  11. data/lib/repull/api/health_api.rb +318 -0
  12. data/lib/repull/api/kv_api.rb +1 -1
  13. data/lib/repull/api/listings_api.rb +303 -24
  14. data/lib/repull/api/markets_api.rb +3 -3
  15. data/lib/repull/api/plumguide_api.rb +262 -9
  16. data/lib/repull/api/pricing_api.rb +15 -15
  17. data/lib/repull/api/properties_api.rb +12 -9
  18. data/lib/repull/api/quotes_api.rb +109 -0
  19. data/lib/repull/api/reservations_api.rb +166 -7
  20. data/lib/repull/api/reviews_api.rb +81 -7
  21. data/lib/repull/api/schema_api.rb +1 -1
  22. data/lib/repull/api/system_api.rb +1 -1
  23. data/lib/repull/api/vrbo_api.rb +10 -10
  24. data/lib/repull/api/webhooks_api.rb +11 -9
  25. data/lib/repull/api_client.rb +1 -1
  26. data/lib/repull/api_error.rb +1 -1
  27. data/lib/repull/api_model_base.rb +1 -1
  28. data/lib/repull/configuration.rb +1 -1
  29. data/lib/repull/models/account_created_event.rb +1 -1
  30. data/lib/repull/models/account_created_payload.rb +1 -1
  31. data/lib/repull/models/account_disconnected_event.rb +1 -1
  32. data/lib/repull/models/account_disconnected_payload.rb +1 -1
  33. data/lib/repull/models/acknowledge_booking_reservations_request.rb +176 -0
  34. data/lib/repull/models/ai_operation.rb +1 -1
  35. data/lib/repull/models/ai_operation_completed_event.rb +1 -1
  36. data/lib/repull/models/ai_operation_completed_payload.rb +1 -1
  37. data/lib/repull/models/ai_operation_failed_event.rb +1 -1
  38. data/lib/repull/models/ai_operation_failed_payload.rb +1 -1
  39. data/lib/repull/models/ai_operation_failed_payload_error.rb +1 -1
  40. data/lib/repull/models/airbnb_alteration.rb +335 -0
  41. data/lib/repull/models/airbnb_amenity.rb +171 -0
  42. data/lib/repull/models/airbnb_availability_write_request.rb +20 -1
  43. data/lib/repull/models/airbnb_calendar_operation.rb +97 -8
  44. data/lib/repull/models/airbnb_connection.rb +4 -4
  45. data/lib/repull/models/airbnb_connection_accessibility_amenities_inner.rb +1 -1
  46. data/lib/repull/models/airbnb_connection_amenities_inner.rb +1 -1
  47. data/lib/repull/models/airbnb_connection_host.rb +1 -1
  48. data/lib/repull/models/airbnb_connection_response.rb +1 -1
  49. data/lib/repull/models/airbnb_connection_summary.rb +1 -1
  50. data/lib/repull/models/airbnb_data_freshness.rb +3 -3
  51. data/lib/repull/models/airbnb_listing.rb +2 -2
  52. data/lib/repull/models/airbnb_listing_action_request.rb +1 -1
  53. data/lib/repull/models/airbnb_listing_list_response.rb +2 -2
  54. data/lib/repull/models/airbnb_pricing_write_request.rb +54 -3
  55. data/lib/repull/models/airbnb_pricing_write_request_records_inner.rb +236 -0
  56. data/lib/repull/models/airbnb_reservation.rb +1 -1
  57. data/lib/repull/models/airbnb_reservation_list_response.rb +2 -2
  58. data/lib/repull/models/airbnb_review.rb +1 -1
  59. data/lib/repull/models/airbnb_review_list_response.rb +1 -1
  60. data/lib/repull/models/airbnb_thread.rb +1 -1
  61. data/lib/repull/models/airbnb_thread_list_response.rb +1 -1
  62. data/lib/repull/models/airbnb_transaction.rb +502 -0
  63. data/lib/repull/models/airbnb_transaction_guest_breakdown.rb +171 -0
  64. data/lib/repull/models/airbnb_transaction_host_breakdown.rb +246 -0
  65. data/lib/repull/models/airbnb_transaction_payout.rb +175 -0
  66. data/lib/repull/models/alteration_change.rb +161 -0
  67. data/lib/repull/models/alteration_webhook_object.rb +296 -0
  68. data/lib/repull/models/availability_batch_write_request.rb +296 -0
  69. data/lib/repull/models/availability_write_request.rb +259 -0
  70. data/lib/repull/models/availability_write_result.rb +178 -0
  71. data/lib/repull/models/availability_write_result_synced.rb +176 -0
  72. data/lib/repull/models/availability_write_settings.rb +215 -0
  73. data/lib/repull/models/booking_availability_state_response.rb +149 -0
  74. data/lib/repull/models/booking_availability_update.rb +1 -1
  75. data/lib/repull/models/booking_availability_update_request.rb +1 -1
  76. data/lib/repull/models/booking_availability_update_request_property_id.rb +1 -1
  77. data/lib/repull/models/booking_availability_update_request_updates_inner.rb +1 -1
  78. data/lib/repull/models/booking_connect_listing_option.rb +1 -1
  79. data/lib/repull/models/booking_connect_room.rb +1 -1
  80. data/lib/repull/models/booking_connect_rooms_response.rb +39 -5
  81. data/lib/repull/models/booking_conversation.rb +1 -1
  82. data/lib/repull/models/booking_pricing_rate_update.rb +1 -1
  83. data/lib/repull/models/booking_pricing_rate_update_date_range.rb +1 -1
  84. data/lib/repull/models/booking_pricing_rate_update_restrictions.rb +1 -1
  85. data/lib/repull/models/booking_pricing_response.rb +1 -1
  86. data/lib/repull/models/booking_pricing_update_request.rb +1 -1
  87. data/lib/repull/models/booking_pricing_update_response.rb +1 -1
  88. data/lib/repull/models/booking_property.rb +1 -1
  89. data/lib/repull/models/booking_reservation.rb +277 -0
  90. data/lib/repull/models/booking_reservation_room.rb +271 -0
  91. data/lib/repull/models/booking_room_mapping.rb +18 -8
  92. data/lib/repull/models/booking_rooms_rates_response.rb +170 -0
  93. data/lib/repull/models/booking_rooms_rates_response_rooms_inner.rb +170 -0
  94. data/lib/repull/models/booking_rooms_rates_response_rooms_inner_rates_inner.rb +212 -0
  95. data/lib/repull/models/booking_setup_request.rb +220 -0
  96. data/lib/repull/models/booking_verify_hotel_request.rb +1 -1
  97. data/lib/repull/models/booking_verify_hotel_response.rb +40 -6
  98. data/lib/repull/models/bulk_pricing_failure.rb +1 -1
  99. data/lib/repull/models/bulk_pricing_item.rb +1 -1
  100. data/lib/repull/models/bulk_pricing_request.rb +1 -1
  101. data/lib/repull/models/bulk_pricing_response.rb +1 -1
  102. data/lib/repull/models/calendar_day.rb +1 -1
  103. data/lib/repull/models/calendar_response.rb +1 -1
  104. data/lib/repull/models/calendar_updated_event.rb +1 -1
  105. data/lib/repull/models/calendar_updated_payload.rb +1 -1
  106. data/lib/repull/models/calendar_updated_payload_range.rb +1 -1
  107. data/lib/repull/models/clear_kv200_response.rb +1 -1
  108. data/lib/repull/models/connect_host.rb +1 -1
  109. data/lib/repull/models/connect_provider.rb +1 -1
  110. data/lib/repull/models/connect_provider_list_response.rb +1 -1
  111. data/lib/repull/models/connect_session.rb +1 -1
  112. data/lib/repull/models/connect_status.rb +18 -6
  113. data/lib/repull/models/connect_status_accounts_inner.rb +188 -0
  114. data/lib/repull/models/connection.rb +1 -1
  115. data/lib/repull/models/connection_list_response.rb +1 -1
  116. data/lib/repull/models/conversation.rb +13 -2
  117. data/lib/repull/models/conversation_detail.rb +13 -2
  118. data/lib/repull/models/conversation_guest.rb +1 -1
  119. data/lib/repull/models/conversation_guest_contact.rb +1 -1
  120. data/lib/repull/models/conversation_host.rb +1 -1
  121. data/lib/repull/models/conversation_list_response.rb +1 -1
  122. data/lib/repull/models/conversation_message_attachment.rb +1 -1
  123. data/lib/repull/models/create_airbnb_alteration_request.rb +195 -0
  124. data/lib/repull/models/create_airbnb_offer_request.rb +211 -0
  125. data/lib/repull/models/create_billing_checkout_request.rb +1 -1
  126. data/lib/repull/models/create_booking_webhook_request.rb +192 -0
  127. data/lib/repull/models/create_connect_session_request.rb +1 -1
  128. data/lib/repull/models/create_connection_request.rb +2 -2
  129. data/lib/repull/models/create_webhook_request.rb +1 -1
  130. data/lib/repull/models/custom_schema.rb +1 -1
  131. data/lib/repull/models/custom_schema_create.rb +1 -1
  132. data/lib/repull/models/custom_schema_create_response.rb +1 -1
  133. data/lib/repull/models/custom_schema_delete_response.rb +1 -1
  134. data/lib/repull/models/custom_schema_list_response.rb +1 -1
  135. data/lib/repull/models/custom_schema_summary.rb +1 -1
  136. data/lib/repull/models/custom_schema_update.rb +1 -1
  137. data/lib/repull/models/{studio_error.rb → delete_airbnb_listing_photo200_response.rb} +11 -12
  138. data/lib/repull/models/delete_connection200_response.rb +234 -0
  139. data/lib/repull/models/delete_kv200_response.rb +1 -1
  140. data/lib/repull/models/error.rb +1 -1
  141. data/lib/repull/models/error_error.rb +14 -2
  142. data/lib/repull/models/error_error_support.rb +1 -1
  143. data/lib/repull/models/get_airbnb_alteration200_response.rb +190 -0
  144. data/lib/repull/models/get_airbnb_checkin_guide200_response.rb +192 -0
  145. data/lib/repull/models/get_airbnb_listing_quality200_response.rb +177 -0
  146. data/lib/repull/models/get_airbnb_listing_settings200_response.rb +177 -0
  147. data/lib/repull/models/{sandbox_fixture_ref.rb → get_airbnb_thread200_response.rb} +35 -38
  148. data/lib/repull/models/get_health200_response.rb +1 -1
  149. data/lib/repull/models/{vrbo_listing_list_response.rb → get_usage_logs200_response.rb} +18 -9
  150. data/lib/repull/models/get_usage_logs200_response_data_inner.rb +264 -0
  151. data/lib/repull/models/get_usage_logs200_response_pagination.rb +166 -0
  152. data/lib/repull/models/get_usage_summary200_response.rb +232 -0
  153. data/lib/repull/models/get_usage_summary200_response_breakdown_inner.rb +183 -0
  154. data/lib/repull/models/get_usage_summary200_response_limits.rb +158 -0
  155. data/lib/repull/models/get_usage_summary200_response_remaining.rb +158 -0
  156. data/lib/repull/models/get_usage_summary200_response_status_distribution.rb +174 -0
  157. data/lib/repull/models/get_usage_summary200_response_timeline_inner.rb +165 -0
  158. data/lib/repull/models/get_usage_summary200_response_totals.rb +165 -0
  159. data/lib/repull/models/get_usage_summary200_response_used.rb +156 -0
  160. data/lib/repull/models/get_usage_tier200_response.rb +183 -0
  161. data/lib/repull/models/get_usage_tier200_response_limits.rb +168 -0
  162. data/lib/repull/models/get_usage_tier200_response_remaining.rb +168 -0
  163. data/lib/repull/models/get_usage_tier200_response_used.rb +165 -0
  164. data/lib/repull/models/guest.rb +1 -1
  165. data/lib/repull/models/guest_contact.rb +1 -1
  166. data/lib/repull/models/guest_create_request.rb +250 -0
  167. data/lib/repull/models/guest_create_response.rb +227 -0
  168. data/lib/repull/models/guest_create_response_contacts_inner.rb +199 -0
  169. data/lib/repull/models/guest_flag.rb +1 -1
  170. data/lib/repull/models/guest_list_response.rb +1 -1
  171. data/lib/repull/models/guest_note.rb +1 -1
  172. data/lib/repull/models/guest_profile.rb +1 -1
  173. data/lib/repull/models/guest_reservations_summary.rb +1 -1
  174. data/lib/repull/models/list_airbnb_alterations200_response.rb +192 -0
  175. data/lib/repull/models/list_airbnb_listing_amenities200_response.rb +190 -0
  176. data/lib/repull/models/list_airbnb_listing_amenities200_response_data.rb +160 -0
  177. data/lib/repull/models/list_airbnb_transactions200_response.rb +192 -0
  178. data/lib/repull/models/list_booking_reservations200_response.rb +104 -0
  179. data/lib/repull/models/list_kv200_response.rb +1 -1
  180. data/lib/repull/models/list_kv200_response_data_inner.rb +1 -1
  181. data/lib/repull/models/list_kv200_response_pagination.rb +2 -2
  182. data/lib/repull/models/listing.rb +2 -2
  183. data/lib/repull/models/listing_active_request.rb +2 -2
  184. data/lib/repull/models/listing_active_response.rb +1 -1
  185. data/lib/repull/models/listing_address.rb +1 -1
  186. data/lib/repull/models/listing_amenity.rb +1 -1
  187. data/lib/repull/models/listing_channel.rb +1 -1
  188. data/lib/repull/models/listing_comp.rb +1 -1
  189. data/lib/repull/models/listing_comp_nightly.rb +1 -1
  190. data/lib/repull/models/listing_comp_ratings.rb +1 -1
  191. data/lib/repull/models/listing_comps_response.rb +1 -1
  192. data/lib/repull/models/listing_content.rb +1 -1
  193. data/lib/repull/models/listing_content_update_request.rb +1 -1
  194. data/lib/repull/models/listing_content_update_request_address.rb +1 -1
  195. data/lib/repull/models/listing_content_update_request_amenities.rb +1 -1
  196. data/lib/repull/models/listing_content_update_request_amenities_one_of_inner.rb +1 -1
  197. data/lib/repull/models/listing_content_update_request_occupancy.rb +1 -1
  198. data/lib/repull/models/listing_content_update_request_photos_inner.rb +1 -1
  199. data/lib/repull/models/listing_content_update_request_photos_inner_one_of.rb +1 -1
  200. data/lib/repull/models/listing_content_update_request_policies.rb +1 -1
  201. data/lib/repull/models/listing_content_update_response.rb +1 -1
  202. data/lib/repull/models/listing_create_request.rb +1 -1
  203. data/lib/repull/models/listing_create_response.rb +1 -1
  204. data/lib/repull/models/listing_created_event.rb +1 -1
  205. data/lib/repull/models/listing_created_payload.rb +1 -1
  206. data/lib/repull/models/listing_created_payload_address.rb +1 -1
  207. data/lib/repull/models/listing_deleted_event.rb +1 -1
  208. data/lib/repull/models/listing_deleted_payload.rb +1 -1
  209. data/lib/repull/models/listing_details.rb +1 -1
  210. data/lib/repull/models/listing_generate_content_request.rb +1 -1
  211. data/lib/repull/models/listing_generate_content_response.rb +1 -1
  212. data/lib/repull/models/listing_list_response.rb +1 -1
  213. data/lib/repull/models/{studio_file.rb → listing_photo.rb} +23 -34
  214. data/lib/repull/models/listing_photo_delete_request.rb +165 -0
  215. data/lib/repull/models/listing_photo_delete_response.rb +156 -0
  216. data/lib/repull/models/listing_photo_upload_url_request.rb +203 -0
  217. data/lib/repull/models/listing_photo_upload_url_response.rb +198 -0
  218. data/lib/repull/models/{booking_property_list_response.rb → listing_photos_response.rb} +19 -19
  219. data/lib/repull/models/listing_pricing_apply_request.rb +1 -1
  220. data/lib/repull/models/listing_pricing_apply_response.rb +1 -1
  221. data/lib/repull/models/listing_pricing_history_entry.rb +2 -2
  222. data/lib/repull/models/listing_pricing_history_response.rb +1 -1
  223. data/lib/repull/models/listing_pricing_recommendation.rb +1 -1
  224. data/lib/repull/models/listing_pricing_response.rb +1 -1
  225. data/lib/repull/models/listing_pricing_response_comp_summary.rb +1 -1
  226. data/lib/repull/models/listing_pricing_response_date_range.rb +1 -1
  227. data/lib/repull/models/listing_pricing_response_listing.rb +1 -1
  228. data/lib/repull/models/listing_pricing_strategy.rb +1 -1
  229. data/lib/repull/models/listing_pricing_strategy_input.rb +1 -1
  230. data/lib/repull/models/listing_publish_airbnb_request.rb +1 -1
  231. data/lib/repull/models/listing_publish_response.rb +1 -1
  232. data/lib/repull/models/listing_publish_status_channel.rb +1 -1
  233. data/lib/repull/models/listing_publish_status_connection.rb +1 -1
  234. data/lib/repull/models/listing_publish_status_response.rb +1 -1
  235. data/lib/repull/models/listing_quality_tier.rb +1 -1
  236. data/lib/repull/models/listing_segment.rb +1 -1
  237. data/lib/repull/models/listing_segment_recommendation.rb +1 -1
  238. data/lib/repull/models/listing_segments_response.rb +1 -1
  239. data/lib/repull/models/listing_segments_response_scope.rb +1 -1
  240. data/lib/repull/models/listing_status_batch_request.rb +212 -0
  241. data/lib/repull/models/listing_status_batch_response.rb +223 -0
  242. data/lib/repull/models/listing_updated_event.rb +1 -1
  243. data/lib/repull/models/listing_updated_payload.rb +1 -1
  244. data/lib/repull/models/map_airbnb_listing_request.rb +1 -1
  245. data/lib/repull/models/map_airbnb_listing_response.rb +1 -1
  246. data/lib/repull/models/map_connect_booking_rooms_request.rb +1 -1
  247. data/lib/repull/models/map_connect_booking_rooms_response.rb +16 -5
  248. data/lib/repull/models/market_browse_category.rb +1 -1
  249. data/lib/repull/models/market_browse_entry.rb +1 -1
  250. data/lib/repull/models/market_browse_featured.rb +1 -1
  251. data/lib/repull/models/market_browse_response.rb +1 -1
  252. data/lib/repull/models/market_calendar_day.rb +1 -1
  253. data/lib/repull/models/market_calendar_day_events_inner.rb +1 -1
  254. data/lib/repull/models/market_calendar_response.rb +1 -1
  255. data/lib/repull/models/market_detail_response.rb +1 -1
  256. data/lib/repull/models/market_detail_response_price_distribution_inner.rb +1 -1
  257. data/lib/repull/models/market_detail_response_property_type_mix_inner.rb +1 -1
  258. data/lib/repull/models/market_detail_response_supply_trend_inner.rb +1 -1
  259. data/lib/repull/models/market_detail_response_top_comps.rb +1 -1
  260. data/lib/repull/models/market_event.rb +1 -1
  261. data/lib/repull/models/market_my_listing.rb +1 -1
  262. data/lib/repull/models/market_summary.rb +1 -1
  263. data/lib/repull/models/market_top_comp.rb +1 -1
  264. data/lib/repull/models/markets_overview_response.rb +1 -1
  265. data/lib/repull/models/markets_overview_response_browse.rb +1 -1
  266. data/lib/repull/models/markets_overview_response_subscriptions.rb +1 -1
  267. data/lib/repull/models/markets_overview_response_totals.rb +1 -1
  268. data/lib/repull/models/message.rb +1 -1
  269. data/lib/repull/models/message_list_response.rb +1 -1
  270. data/lib/repull/models/pagination.rb +1 -1
  271. data/lib/repull/models/payment_completed_event.rb +1 -1
  272. data/lib/repull/models/payment_completed_payload.rb +1 -1
  273. data/lib/repull/models/payment_refunded_event.rb +1 -1
  274. data/lib/repull/models/payment_refunded_payload.rb +1 -1
  275. data/lib/repull/models/plumguide_listing.rb +1 -1
  276. data/lib/repull/models/plumguide_listing_list_response.rb +1 -1
  277. data/lib/repull/models/property.rb +17 -7
  278. data/lib/repull/models/property_availability.rb +248 -0
  279. data/lib/repull/models/property_availability_coverage.rb +222 -0
  280. data/lib/repull/models/property_availability_day.rb +247 -0
  281. data/lib/repull/models/property_list_response.rb +1 -1
  282. data/lib/repull/models/quote.rb +240 -0
  283. data/lib/repull/models/quote_pricing.rb +218 -0
  284. data/lib/repull/models/reply_booking_review200_response.rb +1 -1
  285. data/lib/repull/models/reply_booking_review_request.rb +1 -1
  286. data/lib/repull/models/reply_to_review201_response.rb +165 -0
  287. data/lib/repull/models/reply_to_review_request.rb +165 -0
  288. data/lib/repull/models/repull_ping_event.rb +1 -1
  289. data/lib/repull/models/repull_ping_payload.rb +1 -1
  290. data/lib/repull/models/reservation.rb +1 -1
  291. data/lib/repull/models/{studio_deployment.rb → reservation_alteration_created_event.rb} +67 -57
  292. data/lib/repull/models/reservation_alteration_created_payload.rb +177 -0
  293. data/lib/repull/models/reservation_alteration_responded_event.rb +217 -0
  294. data/lib/repull/models/reservation_alteration_responded_payload.rb +175 -0
  295. data/lib/repull/models/reservation_cancelled_event.rb +1 -1
  296. data/lib/repull/models/reservation_cancelled_payload.rb +1 -1
  297. data/lib/repull/models/reservation_create_request.rb +403 -0
  298. data/lib/repull/models/reservation_create_response.rb +233 -0
  299. data/lib/repull/models/reservation_created_event.rb +1 -1
  300. data/lib/repull/models/reservation_created_payload.rb +1 -1
  301. data/lib/repull/models/reservation_financials.rb +36 -8
  302. data/lib/repull/models/reservation_guest_financials.rb +173 -0
  303. data/lib/repull/models/reservation_guest_input.rb +193 -0
  304. data/lib/repull/models/reservation_host_financials.rb +207 -0
  305. data/lib/repull/models/reservation_list_response.rb +1 -1
  306. data/lib/repull/models/reservation_message_received_event.rb +1 -1
  307. data/lib/repull/models/reservation_message_received_payload.rb +1 -1
  308. data/lib/repull/models/reservation_message_received_payload_from.rb +1 -1
  309. data/lib/repull/models/reservation_money_line.rb +216 -0
  310. data/lib/repull/models/reservation_occupancy.rb +1 -1
  311. data/lib/repull/models/reservation_primary_guest.rb +1 -1
  312. data/lib/repull/models/reservation_update_request.rb +255 -0
  313. data/lib/repull/models/reservation_update_response.rb +240 -0
  314. data/lib/repull/models/reservation_updated_event.rb +1 -1
  315. data/lib/repull/models/reservation_updated_payload.rb +1 -1
  316. data/lib/repull/models/reservation_webhook_object.rb +1 -1
  317. data/lib/repull/models/respond_airbnb_review_request.rb +1 -1
  318. data/lib/repull/models/review.rb +14 -3
  319. data/lib/repull/models/review_category.rb +1 -1
  320. data/lib/repull/models/{sandbox_reset_result.rb → review_created_event.rb} +59 -59
  321. data/lib/repull/models/review_created_payload.rb +165 -0
  322. data/lib/repull/models/review_list_response.rb +1 -1
  323. data/lib/repull/models/review_responded_event.rb +217 -0
  324. data/lib/repull/models/review_responded_payload.rb +175 -0
  325. data/lib/repull/models/review_response.rb +1 -1
  326. data/lib/repull/models/review_webhook_object.rb +277 -0
  327. data/lib/repull/models/rotate_webhook_secret200_response.rb +1 -1
  328. data/lib/repull/models/select_connect_provider_request.rb +1 -1
  329. data/lib/repull/models/select_provider_response.rb +1 -1
  330. data/lib/repull/models/send_airbnb_message_request.rb +187 -0
  331. data/lib/repull/models/{sandbox_reset_result_deleted.rb → send_booking_message_request.rb} +53 -50
  332. data/lib/repull/models/{studio_error_error.rb → send_message_request.rb} +31 -50
  333. data/lib/repull/models/send_message_response.rb +241 -0
  334. data/lib/repull/models/set_kv_request.rb +1 -1
  335. data/lib/repull/models/{booking_conversation_list_response.rb → submit_beds24_credentials200_response.rb} +19 -19
  336. data/lib/repull/models/submit_beds24_credentials_request.rb +177 -0
  337. data/lib/repull/models/submit_bookingsync_credentials_request.rb +177 -0
  338. data/lib/repull/models/submit_guesty_credentials_request.rb +177 -0
  339. data/lib/repull/models/submit_hospitable_credentials_request.rb +177 -0
  340. data/lib/repull/models/submit_hostaway_credentials_request.rb +177 -0
  341. data/lib/repull/models/submit_igms_credentials_request.rb +177 -0
  342. data/lib/repull/models/submit_lodgify_credentials_request.rb +177 -0
  343. data/lib/repull/models/submit_ownerrez_credentials_request.rb +177 -0
  344. data/lib/repull/models/submit_smoobu_credentials_request.rb +177 -0
  345. data/lib/repull/models/submit_vrbo_credentials_request.rb +177 -0
  346. data/lib/repull/models/sync_airbnb_transactions200_response.rb +191 -0
  347. data/lib/repull/models/sync_airbnb_transactions_request.rb +201 -0
  348. data/lib/repull/models/test_webhook_request.rb +1 -1
  349. data/lib/repull/models/update_airbnb_message_request.rb +209 -0
  350. data/lib/repull/models/update_booking_charges_request.rb +194 -0
  351. data/lib/repull/models/update_listing_pricing_strategy200_response.rb +1 -1
  352. data/lib/repull/models/update_webhook_request.rb +1 -1
  353. data/lib/repull/models/vrbo_listing.rb +1 -1
  354. data/lib/repull/models/vrbo_reservation.rb +1 -1
  355. data/lib/repull/models/vrbo_reservation_list_response.rb +1 -1
  356. data/lib/repull/models/webhook_delivery.rb +1 -1
  357. data/lib/repull/models/webhook_delivery_detail.rb +1 -1
  358. data/lib/repull/models/webhook_delivery_list_response.rb +1 -1
  359. data/lib/repull/models/webhook_event.rb +12 -4
  360. data/lib/repull/models/webhook_event_catalog.rb +1 -1
  361. data/lib/repull/models/webhook_event_catalog_domains_inner.rb +1 -1
  362. data/lib/repull/models/webhook_event_catalog_entry.rb +1 -1
  363. data/lib/repull/models/webhook_event_type.rb +6 -2
  364. data/lib/repull/models/webhook_list_response.rb +1 -1
  365. data/lib/repull/models/webhook_subscription.rb +1 -1
  366. data/lib/repull/version.rb +2 -2
  367. data/lib/repull.rb +111 -15
  368. data/openapi/v1.json +9877 -3482
  369. data/scripts/check-spec-freshness.py +399 -0
  370. data/scripts/regen.sh +32 -3
  371. metadata +113 -18
  372. data/lib/repull/api/sandbox_api.rb +0 -136
  373. data/lib/repull/models/sandbox_seed_result.rb +0 -278
  374. data/lib/repull/models/studio_generation.rb +0 -215
  375. data/lib/repull/models/studio_project.rb +0 -241
  376. data/spec/api/ai_api_spec.rb +0 -47
@@ -1,7 +1,7 @@
1
1
  =begin
2
2
  #Repull API
3
3
 
4
- #The unified API for vacation rental tech. Connect to 50+ PMS platforms and 4 OTA channels through one REST API. Built-in AI operations for guest communication, pricing, and listing optimization. ## Designed for AI agents Every error response on this API includes machine-parseable fields so an LLM (Claude in MCP, Cursor, Cline, GPT, etc.) can self-recover without escalating to a human: - `error.code` — stable string identifier (e.g. `invalid_params`, `rate_limit_exceeded`) - `error.message` — human-readable cause - `error.fix` — exact recovery steps (e.g. \"Pass `check_in_after` as ISO 8601: `?check_in_after=2026-01-15`\") - `error.docs_url` — link to the canonical write-up at `https://repull.dev/docs/errors/{code}` - `error.request_id` — id to correlate with server-side logs - `error.field` / `error.value_received` / `error.valid_values` / `error.did_you_mean` — when the error is parameter-specific - `error.retry_after` — seconds to wait before retrying (rate-limit + transient upstream) `Access-Control-Expose-Headers` lists `x-request-id` and the `X-RateLimit-*` family so browsers can read them on cross-origin responses. ## Quick Start 1. Get an API key at https://repull.dev/dashboard 2. Connect a PMS: `POST /v1/connect/{provider}` 3. List properties: `GET /v1/properties` 4. Get reservations: `GET /v1/reservations` ## Authentication All requests require a Bearer token: ``` Authorization: Bearer sk_test_YOUR_API_KEY ``` Sandbox keys start with `sk_test_`, production with `sk_live_`. ## Request Correlation (X-Request-ID) Every response carries an `X-Request-ID` header, e.g. `X-Request-ID: req_01HXY...`. Include this id in support tickets and bug reports — we can trace the full request lifecycle (auth, rate limit, handler, downstream calls, log row) from a single id. You may set the header on the inbound request to forward your own trace id; we will echo it back instead of generating a new one. Accepted format: `^[\\\\w.-]{1,128}$`. The id is also embedded in error envelopes as `request_id` so server-side log diffs work even when the response headers are stripped by an intermediate proxy. ## Rate Limits The public API enforces a per-API-key sliding-window rate limit on top of the per-tier monthly + daily-AI quotas. **Default policy:** 600 requests per 60 seconds, per API key. Sliding window — there is no fixed-minute boundary you can burst across. Every response includes: | Header | Meaning | |---|---| | `X-RateLimit-Limit` | Requests permitted in the current window. | | `X-RateLimit-Remaining` | Requests left in the current window after this call. | | `X-RateLimit-Reset` | Unix epoch (seconds) when the next slot opens. | | `X-RateLimit-Policy` | Machine-readable policy descriptor, e.g. `600;w=60`. | | `Retry-After` | Seconds to wait before retrying. **Only present on 429 responses.** | **On 429 (rate_limit_exceeded):** the response body matches the standard error envelope with `code: \"rate_limit_exceeded\"`, plus `limit`, `window_seconds`, `retry_after`, and `request_id` fields. SDKs MUST honor `Retry-After` and use exponential backoff with jitter on subsequent retries — never a tight loop. Recommended backoff: ``` sleep_ms = (Retry-After * 1000) + random(0..250) ``` Monthly + daily-AI tier quotas (`free`, `starter`, `custom`) are enforced separately and also surface as 429s; they include `tier`, `scope`, and `resets_at` fields. ## Plan Limits (402 — `listings_limit_exceeded`) The Repull API also enforces a per-tier cap on **active listings**: | Tier | Active listings cap | |---|---| | `free` | 3 | | `starter` | 50 | | `custom` | unlimited | When a customer's active-listing count is above their tier cap, the API returns **`402 Payment Required`** with `error.code = \"listings_limit_exceeded\"` on every route EXCEPT: - `/v1/health` — uptime probes are never gated. - `/v1/usage/*` — so dashboards can render the over-cap state. - Any `DELETE` — so the customer can trim listings to get back under the cap without paying. Unlike 429, 402 is NOT a \"wait and retry\" condition — `Retry-After` is not set. The only paths back to 200 are: 1. `DELETE` enough listings to come back under the cap, or 2. Upgrade at `https://repull.dev/dashboard/billing`. The server-side usage cache is 60s, so the first 200 after an upgrade may take up to a minute. The envelope mirrors `rate_limit_exceeded` for SDK ergonomics: `tier`, `limit`, `active_listings`, `upgrade_url`, plus the standard `code` / `message` / `fix` / `docs_url` / `request_id`.
4
+ #The unified API for vacation rental tech. Connect to 50+ PMS platforms and 4 OTA channels through one REST API. Built-in AI operations for guest communication, pricing, and listing optimization. ## Designed for AI agents Every error response on this API includes machine-parseable fields so an LLM (Claude in MCP, Cursor, Cline, GPT, etc.) can self-recover without escalating to a human: - `error.code` — stable string identifier (e.g. `invalid_params`, `rate_limit_exceeded`) - `error.message` — human-readable cause - `error.fix` — exact recovery steps (e.g. \"Pass `check_in_after` as ISO 8601: `?check_in_after=2026-01-15`\") - `error.docs_url` — link to the canonical write-up at `https://repull.dev/docs/errors/{code}` - `error.request_id` — id to correlate with server-side logs - `error.field` / `error.value_received` / `error.valid_values` / `error.did_you_mean` — when the error is parameter-specific - `error.retry_after` — seconds to wait before retrying (rate-limit + transient upstream) `Access-Control-Expose-Headers` lists `x-request-id` and the `X-RateLimit-*` family so browsers can read them on cross-origin responses. ## Quick Start 1. Get an API key at https://repull.dev/dashboard 2. Connect a PMS: `POST /v1/connect/{provider}` 3. List properties: `GET /v1/properties` 4. Get reservations: `GET /v1/reservations` ## Authentication All requests require a Bearer token: ``` Authorization: Bearer sk_live_YOUR_API_KEY ``` ## Request Correlation (X-Request-ID) Every response carries an `X-Request-ID` header, e.g. `X-Request-ID: req_01HXY...`. Include this id in support tickets and bug reports — we can trace the full request lifecycle (auth, rate limit, handler, downstream calls, log row) from a single id. You may set the header on the inbound request to forward your own trace id; we will echo it back instead of generating a new one. Accepted format: `^[\\\\w.-]{1,128}$`. The id is also embedded in error envelopes as `request_id` so server-side log diffs work even when the response headers are stripped by an intermediate proxy. ## Rate Limits The public API enforces a per-API-key sliding-window rate limit on top of the per-tier monthly + daily-AI quotas. **Default policy:** 600 requests per 60 seconds, per API key. Sliding window — there is no fixed-minute boundary you can burst across. Every response includes: | Header | Meaning | |---|---| | `X-RateLimit-Limit` | Requests permitted in the current window. | | `X-RateLimit-Remaining` | Requests left in the current window after this call. | | `X-RateLimit-Reset` | Unix epoch (seconds) when the next slot opens. | | `X-RateLimit-Policy` | Machine-readable policy descriptor, e.g. `600;w=60`. | | `Retry-After` | Seconds to wait before retrying. **Only present on 429 responses.** | **On 429 (rate_limit_exceeded):** the response body matches the standard error envelope with `code: \"rate_limit_exceeded\"`, plus `limit`, `window_seconds`, `retry_after`, and `request_id` fields. SDKs MUST honor `Retry-After` and use exponential backoff with jitter on subsequent retries — never a tight loop. Recommended backoff: ``` sleep_ms = (Retry-After * 1000) + random(0..250) ``` Monthly + daily-AI tier quotas (`free`, `starter`, `custom`) are enforced separately and also surface as 429s; they include `tier`, `scope`, and `resetsAt` fields. ## Plan Limits (402 — `listings_limit_exceeded`) The Repull API also enforces a per-tier cap on **active listings**: | Tier | Active listings cap | |---|---| | `free` | 3 | | `starter` | 50 | | `custom` | unlimited | When a customer's active-listing count is above their tier cap, the API returns **`402 Payment Required`** with `error.code = \"listings_limit_exceeded\"` on every route EXCEPT: - `/v1/health` — uptime probes are never gated. - `/v1/usage/*` — so dashboards can render the over-cap state. - Any `DELETE` — so the customer can trim listings to get back under the cap without paying. Unlike 429, 402 is NOT a \"wait and retry\" condition — `Retry-After` is not set. The only paths back to 200 are: 1. `DELETE` enough listings to come back under the cap, or 2. Upgrade at `https://repull.dev/dashboard/billing`. The server-side usage cache is 60s, so the first 200 after an upgrade may take up to a minute. The envelope mirrors `rate_limit_exceeded` for SDK ergonomics: `tier`, `limit`, `active_listings`, `upgrade_url`, plus the standard `code` / `message` / `fix` / `docs_url` / `request_id`.
5
5
 
6
6
  The version of the OpenAPI document: 1.0.0
7
7
  Contact: ivan@vanio.ai
@@ -19,8 +19,416 @@ module Repull
19
19
  def initialize(api_client = ApiClient.default)
20
20
  @api_client = api_client
21
21
  end
22
+ # Acknowledge Booking.com reservations
23
+ # Acknowledge one or more reservations so Booking.com removes them from the `new` queue. The body carries `reservation_ids` (non-empty array). Acknowledge only after you have durably persisted each reservation. Only reservations that belong to this workspace can be acknowledged. If any id in `reservation_ids` is not one of this workspace's Booking.com reservations (`confirmationCode` on `GET /v1/reservations?platform=booking`), nothing is acknowledged and the response is `404 not_found` naming those ids in `reservation_ids`.
24
+ # @param acknowledge_booking_reservations_request [AcknowledgeBookingReservationsRequest]
25
+ # @param [Hash] opts the optional parameters
26
+ # @return [nil]
27
+ def acknowledge_booking_reservations(acknowledge_booking_reservations_request, opts = {})
28
+ acknowledge_booking_reservations_with_http_info(acknowledge_booking_reservations_request, opts)
29
+ nil
30
+ end
31
+
32
+ # Acknowledge Booking.com reservations
33
+ # Acknowledge one or more reservations so Booking.com removes them from the `new` queue. The body carries `reservation_ids` (non-empty array). Acknowledge only after you have durably persisted each reservation. Only reservations that belong to this workspace can be acknowledged. If any id in `reservation_ids` is not one of this workspace's Booking.com reservations (`confirmationCode` on `GET /v1/reservations?platform=booking`), nothing is acknowledged and the response is `404 not_found` naming those ids in `reservation_ids`.
34
+ # @param acknowledge_booking_reservations_request [AcknowledgeBookingReservationsRequest]
35
+ # @param [Hash] opts the optional parameters
36
+ # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
37
+ def acknowledge_booking_reservations_with_http_info(acknowledge_booking_reservations_request, opts = {})
38
+ if @api_client.config.debugging
39
+ @api_client.config.logger.debug 'Calling API: BookingComApi.acknowledge_booking_reservations ...'
40
+ end
41
+ # verify the required parameter 'acknowledge_booking_reservations_request' is set
42
+ if @api_client.config.client_side_validation && acknowledge_booking_reservations_request.nil?
43
+ fail ArgumentError, "Missing the required parameter 'acknowledge_booking_reservations_request' when calling BookingComApi.acknowledge_booking_reservations"
44
+ end
45
+ # resource path
46
+ local_var_path = '/v1/channels/booking/reservations'
47
+
48
+ # query parameters
49
+ query_params = opts[:query_params] || {}
50
+
51
+ # header parameters
52
+ header_params = opts[:header_params] || {}
53
+ # HTTP header 'Accept' (if needed)
54
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
55
+ # HTTP header 'Content-Type'
56
+ content_type = @api_client.select_header_content_type(['application/json'])
57
+ if !content_type.nil?
58
+ header_params['Content-Type'] = content_type
59
+ end
60
+
61
+ # form parameters
62
+ form_params = opts[:form_params] || {}
63
+
64
+ # http body (model)
65
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(acknowledge_booking_reservations_request)
66
+
67
+ # return_type
68
+ return_type = opts[:debug_return_type]
69
+
70
+ # auth_names
71
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
72
+
73
+ new_options = opts.merge(
74
+ :operation => :"BookingComApi.acknowledge_booking_reservations",
75
+ :header_params => header_params,
76
+ :query_params => query_params,
77
+ :form_params => form_params,
78
+ :body => post_body,
79
+ :auth_names => auth_names,
80
+ :return_type => return_type
81
+ )
82
+
83
+ data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
84
+ if @api_client.config.debugging
85
+ @api_client.config.logger.debug "API called: BookingComApi#acknowledge_booking_reservations\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
86
+ end
87
+ return data, status_code, headers
88
+ end
89
+
90
+ # Booking.com property setup actions
91
+ # Action-router for onboarding a property onto Booking.com. Select the step with `action`: - `create-legal-entity` — register the legal entity (returns 201). - `check-legal-status` — poll legal-entity status by `leid`. - `check-readiness` — check whether a property is ready to open (`property_id`). - `open-property` — open the property for sale (`property_id`). - `set-contacts` — set property contacts (`property_id`, `contacts`). - `set-policies` — set property policies (`property_id`, plus policy fields). Missing required fields per action return a validation error; upstream failures surface as `booking_error`. Every action that takes a `property_id` requires a property connected to this workspace; any other id returns `404 not_found`. Returns `403 listing_inactive` when any listing mapped to the Booking.com property is inactive. An inactive listing keeps syncing, but cannot be read or changed through the API until it is activated.
92
+ # @param booking_setup_request [BookingSetupRequest]
93
+ # @param [Hash] opts the optional parameters
94
+ # @return [nil]
95
+ def booking_setup(booking_setup_request, opts = {})
96
+ booking_setup_with_http_info(booking_setup_request, opts)
97
+ nil
98
+ end
99
+
100
+ # Booking.com property setup actions
101
+ # Action-router for onboarding a property onto Booking.com. Select the step with &#x60;action&#x60;: - &#x60;create-legal-entity&#x60; — register the legal entity (returns 201). - &#x60;check-legal-status&#x60; — poll legal-entity status by &#x60;leid&#x60;. - &#x60;check-readiness&#x60; — check whether a property is ready to open (&#x60;property_id&#x60;). - &#x60;open-property&#x60; — open the property for sale (&#x60;property_id&#x60;). - &#x60;set-contacts&#x60; — set property contacts (&#x60;property_id&#x60;, &#x60;contacts&#x60;). - &#x60;set-policies&#x60; — set property policies (&#x60;property_id&#x60;, plus policy fields). Missing required fields per action return a validation error; upstream failures surface as &#x60;booking_error&#x60;. Every action that takes a &#x60;property_id&#x60; requires a property connected to this workspace; any other id returns &#x60;404 not_found&#x60;. Returns &#x60;403 listing_inactive&#x60; when any listing mapped to the Booking.com property is inactive. An inactive listing keeps syncing, but cannot be read or changed through the API until it is activated.
102
+ # @param booking_setup_request [BookingSetupRequest]
103
+ # @param [Hash] opts the optional parameters
104
+ # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
105
+ def booking_setup_with_http_info(booking_setup_request, opts = {})
106
+ if @api_client.config.debugging
107
+ @api_client.config.logger.debug 'Calling API: BookingComApi.booking_setup ...'
108
+ end
109
+ # verify the required parameter 'booking_setup_request' is set
110
+ if @api_client.config.client_side_validation && booking_setup_request.nil?
111
+ fail ArgumentError, "Missing the required parameter 'booking_setup_request' when calling BookingComApi.booking_setup"
112
+ end
113
+ # resource path
114
+ local_var_path = '/v1/channels/booking/setup'
115
+
116
+ # query parameters
117
+ query_params = opts[:query_params] || {}
118
+
119
+ # header parameters
120
+ header_params = opts[:header_params] || {}
121
+ # HTTP header 'Accept' (if needed)
122
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
123
+ # HTTP header 'Content-Type'
124
+ content_type = @api_client.select_header_content_type(['application/json'])
125
+ if !content_type.nil?
126
+ header_params['Content-Type'] = content_type
127
+ end
128
+
129
+ # form parameters
130
+ form_params = opts[:form_params] || {}
131
+
132
+ # http body (model)
133
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(booking_setup_request)
134
+
135
+ # return_type
136
+ return_type = opts[:debug_return_type]
137
+
138
+ # auth_names
139
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
140
+
141
+ new_options = opts.merge(
142
+ :operation => :"BookingComApi.booking_setup",
143
+ :header_params => header_params,
144
+ :query_params => query_params,
145
+ :form_params => form_params,
146
+ :body => post_body,
147
+ :auth_names => auth_names,
148
+ :return_type => return_type
149
+ )
150
+
151
+ data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
152
+ if @api_client.config.debugging
153
+ @api_client.config.logger.debug "API called: BookingComApi#booking_setup\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
154
+ end
155
+ return data, status_code, headers
156
+ end
157
+
158
+ # Subscribe to a Booking.com notification
159
+ # **Not available through the API — always returns `403 forbidden`.** Booking.com notification subscriptions belong to the Repull platform account that every workspace shares: they are per notification type, not per property, so reading or changing them would affect every workspace. Booking.com events for your own properties are delivered through Repull webhooks — subscribe with `POST /v1/webhooks`.
160
+ # @param create_booking_webhook_request [CreateBookingWebhookRequest]
161
+ # @param [Hash] opts the optional parameters
162
+ # @return [nil]
163
+ def create_booking_webhook(create_booking_webhook_request, opts = {})
164
+ create_booking_webhook_with_http_info(create_booking_webhook_request, opts)
165
+ nil
166
+ end
167
+
168
+ # Subscribe to a Booking.com notification
169
+ # **Not available through the API — always returns &#x60;403 forbidden&#x60;.** Booking.com notification subscriptions belong to the Repull platform account that every workspace shares: they are per notification type, not per property, so reading or changing them would affect every workspace. Booking.com events for your own properties are delivered through Repull webhooks — subscribe with &#x60;POST /v1/webhooks&#x60;.
170
+ # @param create_booking_webhook_request [CreateBookingWebhookRequest]
171
+ # @param [Hash] opts the optional parameters
172
+ # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
173
+ def create_booking_webhook_with_http_info(create_booking_webhook_request, opts = {})
174
+ if @api_client.config.debugging
175
+ @api_client.config.logger.debug 'Calling API: BookingComApi.create_booking_webhook ...'
176
+ end
177
+ # verify the required parameter 'create_booking_webhook_request' is set
178
+ if @api_client.config.client_side_validation && create_booking_webhook_request.nil?
179
+ fail ArgumentError, "Missing the required parameter 'create_booking_webhook_request' when calling BookingComApi.create_booking_webhook"
180
+ end
181
+ # resource path
182
+ local_var_path = '/v1/channels/booking/webhooks'
183
+
184
+ # query parameters
185
+ query_params = opts[:query_params] || {}
186
+
187
+ # header parameters
188
+ header_params = opts[:header_params] || {}
189
+ # HTTP header 'Accept' (if needed)
190
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
191
+ # HTTP header 'Content-Type'
192
+ content_type = @api_client.select_header_content_type(['application/json'])
193
+ if !content_type.nil?
194
+ header_params['Content-Type'] = content_type
195
+ end
196
+
197
+ # form parameters
198
+ form_params = opts[:form_params] || {}
199
+
200
+ # http body (model)
201
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(create_booking_webhook_request)
202
+
203
+ # return_type
204
+ return_type = opts[:debug_return_type]
205
+
206
+ # auth_names
207
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
208
+
209
+ new_options = opts.merge(
210
+ :operation => :"BookingComApi.create_booking_webhook",
211
+ :header_params => header_params,
212
+ :query_params => query_params,
213
+ :form_params => form_params,
214
+ :body => post_body,
215
+ :auth_names => auth_names,
216
+ :return_type => return_type
217
+ )
218
+
219
+ data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
220
+ if @api_client.config.debugging
221
+ @api_client.config.logger.debug "API called: BookingComApi#create_booking_webhook\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
222
+ end
223
+ return data, status_code, headers
224
+ end
225
+
226
+ # Unsubscribe from a Booking.com notification
227
+ # **Not available through the API — always returns `403 forbidden`.** Booking.com notification subscriptions belong to the Repull platform account that every workspace shares: they are per notification type, not per property, so reading or changing them would affect every workspace. Booking.com events for your own properties are delivered through Repull webhooks — subscribe with `POST /v1/webhooks`.
228
+ # @param notification_type [String] Booking.com CNS notification type to unsubscribe.
229
+ # @param [Hash] opts the optional parameters
230
+ # @return [nil]
231
+ def delete_booking_webhook(notification_type, opts = {})
232
+ delete_booking_webhook_with_http_info(notification_type, opts)
233
+ nil
234
+ end
235
+
236
+ # Unsubscribe from a Booking.com notification
237
+ # **Not available through the API — always returns &#x60;403 forbidden&#x60;.** Booking.com notification subscriptions belong to the Repull platform account that every workspace shares: they are per notification type, not per property, so reading or changing them would affect every workspace. Booking.com events for your own properties are delivered through Repull webhooks — subscribe with &#x60;POST /v1/webhooks&#x60;.
238
+ # @param notification_type [String] Booking.com CNS notification type to unsubscribe.
239
+ # @param [Hash] opts the optional parameters
240
+ # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
241
+ def delete_booking_webhook_with_http_info(notification_type, opts = {})
242
+ if @api_client.config.debugging
243
+ @api_client.config.logger.debug 'Calling API: BookingComApi.delete_booking_webhook ...'
244
+ end
245
+ # verify the required parameter 'notification_type' is set
246
+ if @api_client.config.client_side_validation && notification_type.nil?
247
+ fail ArgumentError, "Missing the required parameter 'notification_type' when calling BookingComApi.delete_booking_webhook"
248
+ end
249
+ # resource path
250
+ local_var_path = '/v1/channels/booking/webhooks'
251
+
252
+ # query parameters
253
+ query_params = opts[:query_params] || {}
254
+ query_params[:'notification_type'] = notification_type
255
+
256
+ # header parameters
257
+ header_params = opts[:header_params] || {}
258
+ # HTTP header 'Accept' (if needed)
259
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
260
+
261
+ # form parameters
262
+ form_params = opts[:form_params] || {}
263
+
264
+ # http body (model)
265
+ post_body = opts[:debug_body]
266
+
267
+ # return_type
268
+ return_type = opts[:debug_return_type]
269
+
270
+ # auth_names
271
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
272
+
273
+ new_options = opts.merge(
274
+ :operation => :"BookingComApi.delete_booking_webhook",
275
+ :header_params => header_params,
276
+ :query_params => query_params,
277
+ :form_params => form_params,
278
+ :body => post_body,
279
+ :auth_names => auth_names,
280
+ :return_type => return_type
281
+ )
282
+
283
+ data, status_code, headers = @api_client.call_api(:DELETE, local_var_path, new_options)
284
+ if @api_client.config.debugging
285
+ @api_client.config.logger.debug "API called: BookingComApi#delete_booking_webhook\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
286
+ end
287
+ return data, status_code, headers
288
+ end
289
+
290
+ # Read current Booking.com rates/availability/restrictions
291
+ # Read the current rate, availability, and restriction state for a Booking.com property so you can reconcile before writing with the PUT on this path. Keyed by `property_id` (the Booking hotel id), symmetric with the PUT. Proxies Booking's `getRoomRateAvailability` — the returned fields (price, rooms-to-sell, min/max stay, closed-to-arrival/departure, stop-sell) are whatever Booking.com emits for the window. A listing-id-keyed equivalent is available at `GET /v1/channels/booking/listings/{id}/pricing`. `property_id` must be a Booking.com property connected to this workspace (`GET /v1/channels/booking/properties` lists them). Any other id — including one connected to a different workspace — returns `404 not_found`, the same answer as an id that does not exist. Returns `403 listing_inactive` when any listing mapped to the Booking.com property is inactive. An inactive listing keeps syncing, but cannot be read or changed through the API until it is activated.
292
+ # @param property_id [String] Booking.com hotel/property id.
293
+ # @param [Hash] opts the optional parameters
294
+ # @option opts [Date] :start_date Window start (ISO YYYY-MM-DD).
295
+ # @option opts [Integer] :number_of_days Window length in days.
296
+ # @option opts [String] :room_id Restrict to a single Booking.com room id.
297
+ # @option opts [Boolean] :room_level When true, returns room-level (vs rate-plan-level) state.
298
+ # @return [BookingAvailabilityStateResponse]
299
+ def get_booking_availability(property_id, opts = {})
300
+ data, _status_code, _headers = get_booking_availability_with_http_info(property_id, opts)
301
+ data
302
+ end
303
+
304
+ # Read current Booking.com rates/availability/restrictions
305
+ # Read the current rate, availability, and restriction state for a Booking.com property so you can reconcile before writing with the PUT on this path. Keyed by &#x60;property_id&#x60; (the Booking hotel id), symmetric with the PUT. Proxies Booking&#39;s &#x60;getRoomRateAvailability&#x60; — the returned fields (price, rooms-to-sell, min/max stay, closed-to-arrival/departure, stop-sell) are whatever Booking.com emits for the window. A listing-id-keyed equivalent is available at &#x60;GET /v1/channels/booking/listings/{id}/pricing&#x60;. &#x60;property_id&#x60; must be a Booking.com property connected to this workspace (&#x60;GET /v1/channels/booking/properties&#x60; lists them). Any other id — including one connected to a different workspace — returns &#x60;404 not_found&#x60;, the same answer as an id that does not exist. Returns &#x60;403 listing_inactive&#x60; when any listing mapped to the Booking.com property is inactive. An inactive listing keeps syncing, but cannot be read or changed through the API until it is activated.
306
+ # @param property_id [String] Booking.com hotel/property id.
307
+ # @param [Hash] opts the optional parameters
308
+ # @option opts [Date] :start_date Window start (ISO YYYY-MM-DD).
309
+ # @option opts [Integer] :number_of_days Window length in days.
310
+ # @option opts [String] :room_id Restrict to a single Booking.com room id.
311
+ # @option opts [Boolean] :room_level When true, returns room-level (vs rate-plan-level) state.
312
+ # @return [Array<(BookingAvailabilityStateResponse, Integer, Hash)>] BookingAvailabilityStateResponse data, response status code and response headers
313
+ def get_booking_availability_with_http_info(property_id, opts = {})
314
+ if @api_client.config.debugging
315
+ @api_client.config.logger.debug 'Calling API: BookingComApi.get_booking_availability ...'
316
+ end
317
+ # verify the required parameter 'property_id' is set
318
+ if @api_client.config.client_side_validation && property_id.nil?
319
+ fail ArgumentError, "Missing the required parameter 'property_id' when calling BookingComApi.get_booking_availability"
320
+ end
321
+ # resource path
322
+ local_var_path = '/v1/channels/booking/availability'
323
+
324
+ # query parameters
325
+ query_params = opts[:query_params] || {}
326
+ query_params[:'property_id'] = property_id
327
+ query_params[:'start_date'] = opts[:'start_date'] if !opts[:'start_date'].nil?
328
+ query_params[:'number_of_days'] = opts[:'number_of_days'] if !opts[:'number_of_days'].nil?
329
+ query_params[:'room_id'] = opts[:'room_id'] if !opts[:'room_id'].nil?
330
+ query_params[:'room_level'] = opts[:'room_level'] if !opts[:'room_level'].nil?
331
+
332
+ # header parameters
333
+ header_params = opts[:header_params] || {}
334
+ # HTTP header 'Accept' (if needed)
335
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
336
+
337
+ # form parameters
338
+ form_params = opts[:form_params] || {}
339
+
340
+ # http body (model)
341
+ post_body = opts[:debug_body]
342
+
343
+ # return_type
344
+ return_type = opts[:debug_return_type] || 'BookingAvailabilityStateResponse'
345
+
346
+ # auth_names
347
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
348
+
349
+ new_options = opts.merge(
350
+ :operation => :"BookingComApi.get_booking_availability",
351
+ :header_params => header_params,
352
+ :query_params => query_params,
353
+ :form_params => form_params,
354
+ :body => post_body,
355
+ :auth_names => auth_names,
356
+ :return_type => return_type
357
+ )
358
+
359
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
360
+ if @api_client.config.debugging
361
+ @api_client.config.logger.debug "API called: BookingComApi#get_booking_availability\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
362
+ end
363
+ return data, status_code, headers
364
+ end
365
+
366
+ # Get Booking.com charges
367
+ # Fetch the extra-charge set (cleaning fee, resort fee, city tax, etc.) configured for a Booking.com property. Pass the Booking.com `property_id` as a query param — required. `property_id` must be a Booking.com property connected to this workspace (`GET /v1/channels/booking/properties` lists them). Any other id — including one connected to a different workspace — returns `404 not_found`, the same answer as an id that does not exist. Returns `403 listing_inactive` when any listing mapped to the Booking.com property is inactive. An inactive listing keeps syncing, but cannot be read or changed through the API until it is activated.
368
+ # @param property_id [String] Booking.com hotel/property id.
369
+ # @param [Hash] opts the optional parameters
370
+ # @return [nil]
371
+ def get_booking_charges(property_id, opts = {})
372
+ get_booking_charges_with_http_info(property_id, opts)
373
+ nil
374
+ end
375
+
376
+ # Get Booking.com charges
377
+ # Fetch the extra-charge set (cleaning fee, resort fee, city tax, etc.) configured for a Booking.com property. Pass the Booking.com &#x60;property_id&#x60; as a query param — required. &#x60;property_id&#x60; must be a Booking.com property connected to this workspace (&#x60;GET /v1/channels/booking/properties&#x60; lists them). Any other id — including one connected to a different workspace — returns &#x60;404 not_found&#x60;, the same answer as an id that does not exist. Returns &#x60;403 listing_inactive&#x60; when any listing mapped to the Booking.com property is inactive. An inactive listing keeps syncing, but cannot be read or changed through the API until it is activated.
378
+ # @param property_id [String] Booking.com hotel/property id.
379
+ # @param [Hash] opts the optional parameters
380
+ # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
381
+ def get_booking_charges_with_http_info(property_id, opts = {})
382
+ if @api_client.config.debugging
383
+ @api_client.config.logger.debug 'Calling API: BookingComApi.get_booking_charges ...'
384
+ end
385
+ # verify the required parameter 'property_id' is set
386
+ if @api_client.config.client_side_validation && property_id.nil?
387
+ fail ArgumentError, "Missing the required parameter 'property_id' when calling BookingComApi.get_booking_charges"
388
+ end
389
+ # resource path
390
+ local_var_path = '/v1/channels/booking/charges'
391
+
392
+ # query parameters
393
+ query_params = opts[:query_params] || {}
394
+ query_params[:'property_id'] = property_id
395
+
396
+ # header parameters
397
+ header_params = opts[:header_params] || {}
398
+ # HTTP header 'Accept' (if needed)
399
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
400
+
401
+ # form parameters
402
+ form_params = opts[:form_params] || {}
403
+
404
+ # http body (model)
405
+ post_body = opts[:debug_body]
406
+
407
+ # return_type
408
+ return_type = opts[:debug_return_type]
409
+
410
+ # auth_names
411
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
412
+
413
+ new_options = opts.merge(
414
+ :operation => :"BookingComApi.get_booking_charges",
415
+ :header_params => header_params,
416
+ :query_params => query_params,
417
+ :form_params => form_params,
418
+ :body => post_body,
419
+ :auth_names => auth_names,
420
+ :return_type => return_type
421
+ )
422
+
423
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
424
+ if @api_client.config.debugging
425
+ @api_client.config.logger.debug "API called: BookingComApi#get_booking_charges\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
426
+ end
427
+ return data, status_code, headers
428
+ end
429
+
22
430
  # Get Booking.com content
23
- # Fetch the current content (descriptions, amenities, photos) for a Booking.com property. Used to round-trip edits through Repull.
431
+ # Fetch the current content (descriptions, amenities, photos) for a Booking.com property. Used to round-trip edits through Repull. `property_id` must be a Booking.com property connected to this workspace (`GET /v1/channels/booking/properties` lists them). Any other id — including one connected to a different workspace — returns `404 not_found`, the same answer as an id that does not exist. Returns `403 listing_inactive` when any listing mapped to the Booking.com property is inactive. An inactive listing keeps syncing, but cannot be read or changed through the API until it is activated.
24
432
  # @param [Hash] opts the optional parameters
25
433
  # @return [nil]
26
434
  def get_booking_content(opts = {})
@@ -29,7 +437,7 @@ module Repull
29
437
  end
30
438
 
31
439
  # Get Booking.com content
32
- # Fetch the current content (descriptions, amenities, photos) for a Booking.com property. Used to round-trip edits through Repull.
440
+ # Fetch the current content (descriptions, amenities, photos) for a Booking.com property. Used to round-trip edits through Repull. &#x60;property_id&#x60; must be a Booking.com property connected to this workspace (&#x60;GET /v1/channels/booking/properties&#x60; lists them). Any other id — including one connected to a different workspace — returns &#x60;404 not_found&#x60;, the same answer as an id that does not exist. Returns &#x60;403 listing_inactive&#x60; when any listing mapped to the Booking.com property is inactive. An inactive listing keeps syncing, but cannot be read or changed through the API until it is activated.
33
441
  # @param [Hash] opts the optional parameters
34
442
  # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
35
443
  def get_booking_content_with_http_info(opts = {})
@@ -44,6 +452,8 @@ module Repull
44
452
 
45
453
  # header parameters
46
454
  header_params = opts[:header_params] || {}
455
+ # HTTP header 'Accept' (if needed)
456
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
47
457
 
48
458
  # form parameters
49
459
  form_params = opts[:form_params] || {}
@@ -75,7 +485,7 @@ module Repull
75
485
  end
76
486
 
77
487
  # Get Booking.com pricing for a listing
78
- # Resolves the Vanio listing ID to its Booking.com `hotel_id` (via the `listings_booking` mapping owned by the authenticated workspace), then proxies Booking's `getRoomRateAvailability` for the requested window. Pricing on Booking is per-room/per-rate-plan, so `room_id` and `room_level` flow through query params unchanged. Mirrors the per-channel `/listings/{id}/pricing` shape used by Airbnb so SDK consumers can carry a Vanio listing ID across channels.
488
+ # Resolves the Vanio listing ID to its Booking.com `hotel_id` (via the `listings_booking` mapping owned by the authenticated workspace), then proxies Booking's `getRoomRateAvailability` for the requested window. Pricing on Booking is per-room/per-rate-plan, so `room_id` and `room_level` flow through query params unchanged. Mirrors the per-channel `/listings/{id}/pricing` shape used by Airbnb so SDK consumers can carry a Vanio listing ID across channels. Returns `403 listing_inactive` when the listing is inactive. An inactive listing keeps syncing, but cannot be read or changed through the API until it is activated.
79
489
  # @param id [Integer] Vanio listing ID — resolved to a Booking.com hotel ID via the workspace mapping.
80
490
  # @param [Hash] opts the optional parameters
81
491
  # @option opts [Date] :start_date
@@ -89,7 +499,7 @@ module Repull
89
499
  end
90
500
 
91
501
  # Get Booking.com pricing for a listing
92
- # Resolves the Vanio listing ID to its Booking.com &#x60;hotel_id&#x60; (via the &#x60;listings_booking&#x60; mapping owned by the authenticated workspace), then proxies Booking&#39;s &#x60;getRoomRateAvailability&#x60; for the requested window. Pricing on Booking is per-room/per-rate-plan, so &#x60;room_id&#x60; and &#x60;room_level&#x60; flow through query params unchanged. Mirrors the per-channel &#x60;/listings/{id}/pricing&#x60; shape used by Airbnb so SDK consumers can carry a Vanio listing ID across channels.
502
+ # Resolves the Vanio listing ID to its Booking.com &#x60;hotel_id&#x60; (via the &#x60;listings_booking&#x60; mapping owned by the authenticated workspace), then proxies Booking&#39;s &#x60;getRoomRateAvailability&#x60; for the requested window. Pricing on Booking is per-room/per-rate-plan, so &#x60;room_id&#x60; and &#x60;room_level&#x60; flow through query params unchanged. Mirrors the per-channel &#x60;/listings/{id}/pricing&#x60; shape used by Airbnb so SDK consumers can carry a Vanio listing ID across channels. Returns &#x60;403 listing_inactive&#x60; when the listing is inactive. An inactive listing keeps syncing, but cannot be read or changed through the API until it is activated.
93
503
  # @param id [Integer] Vanio listing ID — resolved to a Booking.com hotel ID via the workspace mapping.
94
504
  # @param [Hash] opts the optional parameters
95
505
  # @option opts [Date] :start_date
@@ -149,19 +559,82 @@ module Repull
149
559
  return data, status_code, headers
150
560
  end
151
561
 
562
+ # Get Booking.com connection for a listing
563
+ # Return the Booking.com connection record(s) for a Vanio listing — the linked Booking hotel id, sync flags, markup, sync category, and suspension state. Scoped to the authenticated workspace; a listing with no Booking.com connection returns 404. Returns `403 listing_inactive` when the listing is inactive. An inactive listing keeps syncing, but cannot be read or changed through the API until it is activated.
564
+ # @param id [Integer] Vanio listing ID.
565
+ # @param [Hash] opts the optional parameters
566
+ # @return [nil]
567
+ def get_booking_property(id, opts = {})
568
+ get_booking_property_with_http_info(id, opts)
569
+ nil
570
+ end
571
+
572
+ # Get Booking.com connection for a listing
573
+ # Return the Booking.com connection record(s) for a Vanio listing — the linked Booking hotel id, sync flags, markup, sync category, and suspension state. Scoped to the authenticated workspace; a listing with no Booking.com connection returns 404. Returns &#x60;403 listing_inactive&#x60; when the listing is inactive. An inactive listing keeps syncing, but cannot be read or changed through the API until it is activated.
574
+ # @param id [Integer] Vanio listing ID.
575
+ # @param [Hash] opts the optional parameters
576
+ # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
577
+ def get_booking_property_with_http_info(id, opts = {})
578
+ if @api_client.config.debugging
579
+ @api_client.config.logger.debug 'Calling API: BookingComApi.get_booking_property ...'
580
+ end
581
+ # verify the required parameter 'id' is set
582
+ if @api_client.config.client_side_validation && id.nil?
583
+ fail ArgumentError, "Missing the required parameter 'id' when calling BookingComApi.get_booking_property"
584
+ end
585
+ # resource path
586
+ local_var_path = '/v1/channels/booking/properties/{id}'.sub('{id}', CGI.escape(id.to_s))
587
+
588
+ # query parameters
589
+ query_params = opts[:query_params] || {}
590
+
591
+ # header parameters
592
+ header_params = opts[:header_params] || {}
593
+ # HTTP header 'Accept' (if needed)
594
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
595
+
596
+ # form parameters
597
+ form_params = opts[:form_params] || {}
598
+
599
+ # http body (model)
600
+ post_body = opts[:debug_body]
601
+
602
+ # return_type
603
+ return_type = opts[:debug_return_type]
604
+
605
+ # auth_names
606
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
607
+
608
+ new_options = opts.merge(
609
+ :operation => :"BookingComApi.get_booking_property",
610
+ :header_params => header_params,
611
+ :query_params => query_params,
612
+ :form_params => form_params,
613
+ :body => post_body,
614
+ :auth_names => auth_names,
615
+ :return_type => return_type
616
+ )
617
+
618
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
619
+ if @api_client.config.debugging
620
+ @api_client.config.logger.debug "API called: BookingComApi#get_booking_property\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
621
+ end
622
+ return data, status_code, headers
623
+ end
624
+
152
625
  # List Booking.com conversations
153
- # List Booking.com guest conversations. Cursor-paginated. Use the messaging POST to send a reply.
626
+ # List Booking.com guest conversations. Cursor-paginated. Use the messaging POST to send a reply. Scoped to this workspace. With `property_id`, the property must be connected to this workspace — any other id returns `404 not_found`. Without it, only messages for this workspace's own Booking.com properties are returned. Returns `403 listing_inactive` when any listing mapped to the Booking.com property is inactive. An inactive listing keeps syncing, but cannot be read or changed through the API until it is activated.
154
627
  # @param [Hash] opts the optional parameters
155
- # @return [BookingConversationListResponse]
628
+ # @return [Array<BookingConversation>]
156
629
  def list_booking_conversations(opts = {})
157
630
  data, _status_code, _headers = list_booking_conversations_with_http_info(opts)
158
631
  data
159
632
  end
160
633
 
161
634
  # List Booking.com conversations
162
- # List Booking.com guest conversations. Cursor-paginated. Use the messaging POST to send a reply.
635
+ # List Booking.com guest conversations. Cursor-paginated. Use the messaging POST to send a reply. Scoped to this workspace. With &#x60;property_id&#x60;, the property must be connected to this workspace — any other id returns &#x60;404 not_found&#x60;. Without it, only messages for this workspace&#39;s own Booking.com properties are returned. Returns &#x60;403 listing_inactive&#x60; when any listing mapped to the Booking.com property is inactive. An inactive listing keeps syncing, but cannot be read or changed through the API until it is activated.
163
636
  # @param [Hash] opts the optional parameters
164
- # @return [Array<(BookingConversationListResponse, Integer, Hash)>] BookingConversationListResponse data, response status code and response headers
637
+ # @return [Array<(Array<BookingConversation>, Integer, Hash)>] Array<BookingConversation> data, response status code and response headers
165
638
  def list_booking_conversations_with_http_info(opts = {})
166
639
  if @api_client.config.debugging
167
640
  @api_client.config.logger.debug 'Calling API: BookingComApi.list_booking_conversations ...'
@@ -184,7 +657,7 @@ module Repull
184
657
  post_body = opts[:debug_body]
185
658
 
186
659
  # return_type
187
- return_type = opts[:debug_return_type] || 'BookingConversationListResponse'
660
+ return_type = opts[:debug_return_type] || 'Array<BookingConversation>'
188
661
 
189
662
  # auth_names
190
663
  auth_names = opts[:debug_auth_names] || ['bearerAuth']
@@ -207,18 +680,18 @@ module Repull
207
680
  end
208
681
 
209
682
  # List Booking.com properties
210
- # List Booking.com hotels claimed by this workspace. Each row includes the Booking-side hotel id and the connected room types.
683
+ # List Booking.com hotels claimed by this workspace. Each row includes the Booking-side hotel id and the connected room types. Inactive listings are left out; they keep syncing and reappear once activated. Use `GET /v1/listings?status=inactive` to find them.
211
684
  # @param [Hash] opts the optional parameters
212
- # @return [BookingPropertyListResponse]
685
+ # @return [Array<BookingProperty>]
213
686
  def list_booking_properties(opts = {})
214
687
  data, _status_code, _headers = list_booking_properties_with_http_info(opts)
215
688
  data
216
689
  end
217
690
 
218
691
  # List Booking.com properties
219
- # List Booking.com hotels claimed by this workspace. Each row includes the Booking-side hotel id and the connected room types.
692
+ # List Booking.com hotels claimed by this workspace. Each row includes the Booking-side hotel id and the connected room types. Inactive listings are left out; they keep syncing and reappear once activated. Use &#x60;GET /v1/listings?status&#x3D;inactive&#x60; to find them.
220
693
  # @param [Hash] opts the optional parameters
221
- # @return [Array<(BookingPropertyListResponse, Integer, Hash)>] BookingPropertyListResponse data, response status code and response headers
694
+ # @return [Array<(Array<BookingProperty>, Integer, Hash)>] Array<BookingProperty> data, response status code and response headers
222
695
  def list_booking_properties_with_http_info(opts = {})
223
696
  if @api_client.config.debugging
224
697
  @api_client.config.logger.debug 'Calling API: BookingComApi.list_booking_properties ...'
@@ -241,7 +714,7 @@ module Repull
241
714
  post_body = opts[:debug_body]
242
715
 
243
716
  # return_type
244
- return_type = opts[:debug_return_type] || 'BookingPropertyListResponse'
717
+ return_type = opts[:debug_return_type] || 'Array<BookingProperty>'
245
718
 
246
719
  # auth_names
247
720
  auth_names = opts[:debug_auth_names] || ['bearerAuth']
@@ -263,8 +736,141 @@ module Repull
263
736
  return data, status_code, headers
264
737
  end
265
738
 
739
+ # List Booking.com rooms + rate-plan ids for a listing
740
+ # Return every Booking.com room and its rate plans for a listing, each with the `roomId` / `rateId` needed to assemble a restriction write via `PUT /v1/channels/booking/availability`. `id` is a Vanio listing id — resolved to the Booking `hotel_id` via the workspace mapping (a listing with no active Booking.com mapping returns 404). Sourced from Booking's B.XML roomrates feed, which returns rooms and rate plans together (the rooms-unit feed alone omits rate-plan ids). This is the API-key surface for the room/rate ids that were previously only reachable inside the hosted Connect room-mapping flow. Returns `403 listing_inactive` when the listing is inactive. An inactive listing keeps syncing, but cannot be read or changed through the API until it is activated.
741
+ # @param id [Integer] Vanio listing id — resolved to a Booking.com hotel id via the workspace mapping.
742
+ # @param [Hash] opts the optional parameters
743
+ # @return [BookingRoomsRatesResponse]
744
+ def list_booking_property_rooms(id, opts = {})
745
+ data, _status_code, _headers = list_booking_property_rooms_with_http_info(id, opts)
746
+ data
747
+ end
748
+
749
+ # List Booking.com rooms + rate-plan ids for a listing
750
+ # Return every Booking.com room and its rate plans for a listing, each with the &#x60;roomId&#x60; / &#x60;rateId&#x60; needed to assemble a restriction write via &#x60;PUT /v1/channels/booking/availability&#x60;. &#x60;id&#x60; is a Vanio listing id — resolved to the Booking &#x60;hotel_id&#x60; via the workspace mapping (a listing with no active Booking.com mapping returns 404). Sourced from Booking&#39;s B.XML roomrates feed, which returns rooms and rate plans together (the rooms-unit feed alone omits rate-plan ids). This is the API-key surface for the room/rate ids that were previously only reachable inside the hosted Connect room-mapping flow. Returns &#x60;403 listing_inactive&#x60; when the listing is inactive. An inactive listing keeps syncing, but cannot be read or changed through the API until it is activated.
751
+ # @param id [Integer] Vanio listing id — resolved to a Booking.com hotel id via the workspace mapping.
752
+ # @param [Hash] opts the optional parameters
753
+ # @return [Array<(BookingRoomsRatesResponse, Integer, Hash)>] BookingRoomsRatesResponse data, response status code and response headers
754
+ def list_booking_property_rooms_with_http_info(id, opts = {})
755
+ if @api_client.config.debugging
756
+ @api_client.config.logger.debug 'Calling API: BookingComApi.list_booking_property_rooms ...'
757
+ end
758
+ # verify the required parameter 'id' is set
759
+ if @api_client.config.client_side_validation && id.nil?
760
+ fail ArgumentError, "Missing the required parameter 'id' when calling BookingComApi.list_booking_property_rooms"
761
+ end
762
+ # resource path
763
+ local_var_path = '/v1/channels/booking/properties/{id}/rooms'.sub('{id}', CGI.escape(id.to_s))
764
+
765
+ # query parameters
766
+ query_params = opts[:query_params] || {}
767
+
768
+ # header parameters
769
+ header_params = opts[:header_params] || {}
770
+ # HTTP header 'Accept' (if needed)
771
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
772
+
773
+ # form parameters
774
+ form_params = opts[:form_params] || {}
775
+
776
+ # http body (model)
777
+ post_body = opts[:debug_body]
778
+
779
+ # return_type
780
+ return_type = opts[:debug_return_type] || 'BookingRoomsRatesResponse'
781
+
782
+ # auth_names
783
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
784
+
785
+ new_options = opts.merge(
786
+ :operation => :"BookingComApi.list_booking_property_rooms",
787
+ :header_params => header_params,
788
+ :query_params => query_params,
789
+ :form_params => form_params,
790
+ :body => post_body,
791
+ :auth_names => auth_names,
792
+ :return_type => return_type
793
+ )
794
+
795
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
796
+ if @api_client.config.debugging
797
+ @api_client.config.logger.debug "API called: BookingComApi#list_booking_property_rooms\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
798
+ end
799
+ return data, status_code, headers
800
+ end
801
+
802
+ # List Booking.com reservations
803
+ # Pull reservations from Booking.com. `type=new` (default) returns un-acknowledged bookings; `type=modified` returns changed bookings. Pass both `reservation_id` and `hotel_id` to fetch a single reservation's full details. Acknowledge processed reservations with the POST so Booking stops re-serving them in the `new` queue. Scoped to this workspace. `hotel_id` (or its alias `property_id`) must be a property connected to this workspace; any other id returns `404 not_found`, the same as an id that does not exist. Without a hotel, `new`/`modified` cover every Booking.com property this workspace holds (and return `404 not_found` if it holds none). A `reservation_id` that belongs to another workspace returns `404 not_found`. Returns `403 listing_inactive` when any listing mapped to the Booking.com property is inactive. An inactive listing keeps syncing, but cannot be read or changed through the API until it is activated.
804
+ # @param [Hash] opts the optional parameters
805
+ # @option opts [String] :type Which set to pull. &#x60;details&#x60; requires &#x60;reservation_id&#x60; + &#x60;hotel_id&#x60;. (default to 'new')
806
+ # @option opts [String] :hotel_id Booking.com hotel id — filters &#x60;new&#x60;/&#x60;modified&#x60;, and is required with &#x60;reservation_id&#x60; for details.
807
+ # @option opts [String] :reservation_id Booking.com reservation id — with &#x60;hotel_id&#x60;, returns that reservation&#39;s details.
808
+ # @return [ListBookingReservations200Response]
809
+ def list_booking_reservations(opts = {})
810
+ data, _status_code, _headers = list_booking_reservations_with_http_info(opts)
811
+ data
812
+ end
813
+
814
+ # List Booking.com reservations
815
+ # Pull reservations from Booking.com. &#x60;type&#x3D;new&#x60; (default) returns un-acknowledged bookings; &#x60;type&#x3D;modified&#x60; returns changed bookings. Pass both &#x60;reservation_id&#x60; and &#x60;hotel_id&#x60; to fetch a single reservation&#39;s full details. Acknowledge processed reservations with the POST so Booking stops re-serving them in the &#x60;new&#x60; queue. Scoped to this workspace. &#x60;hotel_id&#x60; (or its alias &#x60;property_id&#x60;) must be a property connected to this workspace; any other id returns &#x60;404 not_found&#x60;, the same as an id that does not exist. Without a hotel, &#x60;new&#x60;/&#x60;modified&#x60; cover every Booking.com property this workspace holds (and return &#x60;404 not_found&#x60; if it holds none). A &#x60;reservation_id&#x60; that belongs to another workspace returns &#x60;404 not_found&#x60;. Returns &#x60;403 listing_inactive&#x60; when any listing mapped to the Booking.com property is inactive. An inactive listing keeps syncing, but cannot be read or changed through the API until it is activated.
816
+ # @param [Hash] opts the optional parameters
817
+ # @option opts [String] :type Which set to pull. &#x60;details&#x60; requires &#x60;reservation_id&#x60; + &#x60;hotel_id&#x60;. (default to 'new')
818
+ # @option opts [String] :hotel_id Booking.com hotel id — filters &#x60;new&#x60;/&#x60;modified&#x60;, and is required with &#x60;reservation_id&#x60; for details.
819
+ # @option opts [String] :reservation_id Booking.com reservation id — with &#x60;hotel_id&#x60;, returns that reservation&#39;s details.
820
+ # @return [Array<(ListBookingReservations200Response, Integer, Hash)>] ListBookingReservations200Response data, response status code and response headers
821
+ def list_booking_reservations_with_http_info(opts = {})
822
+ if @api_client.config.debugging
823
+ @api_client.config.logger.debug 'Calling API: BookingComApi.list_booking_reservations ...'
824
+ end
825
+ allowable_values = ["new", "modified", "details"]
826
+ if @api_client.config.client_side_validation && opts[:'type'] && !allowable_values.include?(opts[:'type'])
827
+ fail ArgumentError, "invalid value for \"type\", must be one of #{allowable_values}"
828
+ end
829
+ # resource path
830
+ local_var_path = '/v1/channels/booking/reservations'
831
+
832
+ # query parameters
833
+ query_params = opts[:query_params] || {}
834
+ query_params[:'type'] = opts[:'type'] if !opts[:'type'].nil?
835
+ query_params[:'hotel_id'] = opts[:'hotel_id'] if !opts[:'hotel_id'].nil?
836
+ query_params[:'reservation_id'] = opts[:'reservation_id'] if !opts[:'reservation_id'].nil?
837
+
838
+ # header parameters
839
+ header_params = opts[:header_params] || {}
840
+ # HTTP header 'Accept' (if needed)
841
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
842
+
843
+ # form parameters
844
+ form_params = opts[:form_params] || {}
845
+
846
+ # http body (model)
847
+ post_body = opts[:debug_body]
848
+
849
+ # return_type
850
+ return_type = opts[:debug_return_type] || 'ListBookingReservations200Response'
851
+
852
+ # auth_names
853
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
854
+
855
+ new_options = opts.merge(
856
+ :operation => :"BookingComApi.list_booking_reservations",
857
+ :header_params => header_params,
858
+ :query_params => query_params,
859
+ :form_params => form_params,
860
+ :body => post_body,
861
+ :auth_names => auth_names,
862
+ :return_type => return_type
863
+ )
864
+
865
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
866
+ if @api_client.config.debugging
867
+ @api_client.config.logger.debug "API called: BookingComApi#list_booking_reservations\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
868
+ end
869
+ return data, status_code, headers
870
+ end
871
+
266
872
  # List Booking.com reviews
267
- # List guest reviews for a Booking.com property. Pass `property_id` (the Booking.com hotel id) as a query param — required.
873
+ # List guest reviews for a Booking.com property. Pass `property_id` (the Booking.com hotel id) as a query param — required. `property_id` must be a Booking.com property connected to this workspace (`GET /v1/channels/booking/properties` lists them). Any other id — including one connected to a different workspace — returns `404 not_found`, the same answer as an id that does not exist. Returns `403 listing_inactive` when any listing mapped to the Booking.com property is inactive. An inactive listing keeps syncing, but cannot be read or changed through the API until it is activated.
268
874
  # @param property_id [String] Booking.com hotel/property id.
269
875
  # @param [Hash] opts the optional parameters
270
876
  # @return [nil]
@@ -274,7 +880,7 @@ module Repull
274
880
  end
275
881
 
276
882
  # List Booking.com reviews
277
- # List guest reviews for a Booking.com property. Pass &#x60;property_id&#x60; (the Booking.com hotel id) as a query param — required.
883
+ # List guest reviews for a Booking.com property. Pass &#x60;property_id&#x60; (the Booking.com hotel id) as a query param — required. &#x60;property_id&#x60; must be a Booking.com property connected to this workspace (&#x60;GET /v1/channels/booking/properties&#x60; lists them). Any other id — including one connected to a different workspace — returns &#x60;404 not_found&#x60;, the same answer as an id that does not exist. Returns &#x60;403 listing_inactive&#x60; when any listing mapped to the Booking.com property is inactive. An inactive listing keeps syncing, but cannot be read or changed through the API until it is activated.
278
884
  # @param property_id [String] Booking.com hotel/property id.
279
885
  # @param [Hash] opts the optional parameters
280
886
  # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
@@ -327,8 +933,65 @@ module Repull
327
933
  return data, status_code, headers
328
934
  end
329
935
 
936
+ # List Booking.com webhook subscriptions
937
+ # **Not available through the API — always returns `403 forbidden`.** Booking.com notification subscriptions belong to the Repull platform account that every workspace shares: they are per notification type, not per property, so reading or changing them would affect every workspace. Booking.com events for your own properties are delivered through Repull webhooks — subscribe with `POST /v1/webhooks`.
938
+ # @param [Hash] opts the optional parameters
939
+ # @return [nil]
940
+ def list_booking_webhooks(opts = {})
941
+ list_booking_webhooks_with_http_info(opts)
942
+ nil
943
+ end
944
+
945
+ # List Booking.com webhook subscriptions
946
+ # **Not available through the API — always returns &#x60;403 forbidden&#x60;.** Booking.com notification subscriptions belong to the Repull platform account that every workspace shares: they are per notification type, not per property, so reading or changing them would affect every workspace. Booking.com events for your own properties are delivered through Repull webhooks — subscribe with &#x60;POST /v1/webhooks&#x60;.
947
+ # @param [Hash] opts the optional parameters
948
+ # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
949
+ def list_booking_webhooks_with_http_info(opts = {})
950
+ if @api_client.config.debugging
951
+ @api_client.config.logger.debug 'Calling API: BookingComApi.list_booking_webhooks ...'
952
+ end
953
+ # resource path
954
+ local_var_path = '/v1/channels/booking/webhooks'
955
+
956
+ # query parameters
957
+ query_params = opts[:query_params] || {}
958
+
959
+ # header parameters
960
+ header_params = opts[:header_params] || {}
961
+ # HTTP header 'Accept' (if needed)
962
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
963
+
964
+ # form parameters
965
+ form_params = opts[:form_params] || {}
966
+
967
+ # http body (model)
968
+ post_body = opts[:debug_body]
969
+
970
+ # return_type
971
+ return_type = opts[:debug_return_type]
972
+
973
+ # auth_names
974
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
975
+
976
+ new_options = opts.merge(
977
+ :operation => :"BookingComApi.list_booking_webhooks",
978
+ :header_params => header_params,
979
+ :query_params => query_params,
980
+ :form_params => form_params,
981
+ :body => post_body,
982
+ :auth_names => auth_names,
983
+ :return_type => return_type
984
+ )
985
+
986
+ data, status_code, headers = @api_client.call_api(:GET, local_var_path, new_options)
987
+ if @api_client.config.debugging
988
+ @api_client.config.logger.debug "API called: BookingComApi#list_booking_webhooks\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
989
+ end
990
+ return data, status_code, headers
991
+ end
992
+
330
993
  # Reply to Booking.com review
331
- # Post a public host reply to a guest review on Booking.com. Booking allows one host reply per review — repeated POSTs are rejected by upstream. Booking.com does NOT support host-authored reviews of guests via the API (platform-level limitation), so this endpoint is reply-only.
994
+ # Post a public host reply to a guest review on Booking.com. Booking allows one host reply per review — repeated POSTs are rejected by upstream. Booking.com does NOT support host-authored reviews of guests via the API (platform-level limitation), so this endpoint is reply-only. `property_id` must be a Booking.com property connected to this workspace (`GET /v1/channels/booking/properties` lists them). Any other id — including one connected to a different workspace — returns `404 not_found`, the same answer as an id that does not exist. Returns `403 listing_inactive` when any listing mapped to the Booking.com property is inactive. An inactive listing keeps syncing, but cannot be read or changed through the API until it is activated.
332
995
  # @param reply_booking_review_request [ReplyBookingReviewRequest]
333
996
  # @param [Hash] opts the optional parameters
334
997
  # @return [ReplyBookingReview200Response]
@@ -338,7 +1001,7 @@ module Repull
338
1001
  end
339
1002
 
340
1003
  # Reply to Booking.com review
341
- # Post a public host reply to a guest review on Booking.com. Booking allows one host reply per review — repeated POSTs are rejected by upstream. Booking.com does NOT support host-authored reviews of guests via the API (platform-level limitation), so this endpoint is reply-only.
1004
+ # Post a public host reply to a guest review on Booking.com. Booking allows one host reply per review — repeated POSTs are rejected by upstream. Booking.com does NOT support host-authored reviews of guests via the API (platform-level limitation), so this endpoint is reply-only. &#x60;property_id&#x60; must be a Booking.com property connected to this workspace (&#x60;GET /v1/channels/booking/properties&#x60; lists them). Any other id — including one connected to a different workspace — returns &#x60;404 not_found&#x60;, the same answer as an id that does not exist. Returns &#x60;403 listing_inactive&#x60; when any listing mapped to the Booking.com property is inactive. An inactive listing keeps syncing, but cannot be read or changed through the API until it is activated.
342
1005
  # @param reply_booking_review_request [ReplyBookingReviewRequest]
343
1006
  # @param [Hash] opts the optional parameters
344
1007
  # @return [Array<(ReplyBookingReview200Response, Integer, Hash)>] ReplyBookingReview200Response data, response status code and response headers
@@ -396,22 +1059,28 @@ module Repull
396
1059
  end
397
1060
 
398
1061
  # Send Booking.com message
399
- # Send a message in a Booking.com conversation as the host. Booking enforces content rules similar to Airbnb.
1062
+ # Send a message in a Booking.com conversation as the host. Booking enforces content rules similar to Airbnb. `property_id` must be a Booking.com property connected to this workspace (`GET /v1/channels/booking/properties` lists them). Any other id — including one connected to a different workspace — returns `404 not_found`, the same answer as an id that does not exist. Returns `403 listing_inactive` when any listing mapped to the Booking.com property is inactive. An inactive listing keeps syncing, but cannot be read or changed through the API until it is activated.
1063
+ # @param send_booking_message_request [SendBookingMessageRequest]
400
1064
  # @param [Hash] opts the optional parameters
401
1065
  # @return [nil]
402
- def send_booking_message(opts = {})
403
- send_booking_message_with_http_info(opts)
1066
+ def send_booking_message(send_booking_message_request, opts = {})
1067
+ send_booking_message_with_http_info(send_booking_message_request, opts)
404
1068
  nil
405
1069
  end
406
1070
 
407
1071
  # Send Booking.com message
408
- # Send a message in a Booking.com conversation as the host. Booking enforces content rules similar to Airbnb.
1072
+ # Send a message in a Booking.com conversation as the host. Booking enforces content rules similar to Airbnb. &#x60;property_id&#x60; must be a Booking.com property connected to this workspace (&#x60;GET /v1/channels/booking/properties&#x60; lists them). Any other id — including one connected to a different workspace — returns &#x60;404 not_found&#x60;, the same answer as an id that does not exist. Returns &#x60;403 listing_inactive&#x60; when any listing mapped to the Booking.com property is inactive. An inactive listing keeps syncing, but cannot be read or changed through the API until it is activated.
1073
+ # @param send_booking_message_request [SendBookingMessageRequest]
409
1074
  # @param [Hash] opts the optional parameters
410
1075
  # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
411
- def send_booking_message_with_http_info(opts = {})
1076
+ def send_booking_message_with_http_info(send_booking_message_request, opts = {})
412
1077
  if @api_client.config.debugging
413
1078
  @api_client.config.logger.debug 'Calling API: BookingComApi.send_booking_message ...'
414
1079
  end
1080
+ # verify the required parameter 'send_booking_message_request' is set
1081
+ if @api_client.config.client_side_validation && send_booking_message_request.nil?
1082
+ fail ArgumentError, "Missing the required parameter 'send_booking_message_request' when calling BookingComApi.send_booking_message"
1083
+ end
415
1084
  # resource path
416
1085
  local_var_path = '/v1/channels/booking/messaging'
417
1086
 
@@ -420,12 +1089,19 @@ module Repull
420
1089
 
421
1090
  # header parameters
422
1091
  header_params = opts[:header_params] || {}
1092
+ # HTTP header 'Accept' (if needed)
1093
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
1094
+ # HTTP header 'Content-Type'
1095
+ content_type = @api_client.select_header_content_type(['application/json'])
1096
+ if !content_type.nil?
1097
+ header_params['Content-Type'] = content_type
1098
+ end
423
1099
 
424
1100
  # form parameters
425
1101
  form_params = opts[:form_params] || {}
426
1102
 
427
1103
  # http body (model)
428
- post_body = opts[:debug_body]
1104
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(send_booking_message_request)
429
1105
 
430
1106
  # return_type
431
1107
  return_type = opts[:debug_return_type]
@@ -451,7 +1127,7 @@ module Repull
451
1127
  end
452
1128
 
453
1129
  # Update Booking.com rates/availability
454
- # Push availability, rates, and the full restriction set to Booking.com. `type` selects the write path: - `rates` — nightly price + length-of-stay / arrival restrictions (min/max stay, closed-to-arrival, closed-to-departure, advance-reservation window). - `availability` — inventory (`availableRooms`), the dedicated stop-sell flag (`closed`), and the same restriction set. - `derived-pricing` — occupancy-derived pricing rules. Restrictions never leak across channels — this endpoint writes only to Booking.com. Errors from upstream surface as `booking_error`.
1130
+ # Push availability, rates, and the full restriction set to Booking.com. `type` selects the write path: - `rates` — nightly price + length-of-stay / arrival restrictions (min/max stay, closed-to-arrival, closed-to-departure, advance-reservation window). - `availability` — inventory (`availableRooms`), the dedicated stop-sell flag (`closed`), and the same restriction set. - `derived-pricing` — occupancy-derived pricing rules. Restrictions never leak across channels — this endpoint writes only to Booking.com. Errors from upstream surface as `booking_error`. `property_id` must be a Booking.com property connected to this workspace (`GET /v1/channels/booking/properties` lists them). Any other id — including one connected to a different workspace — returns `404 not_found`, the same answer as an id that does not exist. Returns `403 listing_inactive` when any listing mapped to the Booking.com property is inactive. An inactive listing keeps syncing, but cannot be read or changed through the API until it is activated.
455
1131
  # @param booking_availability_update_request [BookingAvailabilityUpdateRequest]
456
1132
  # @param [Hash] opts the optional parameters
457
1133
  # @return [nil]
@@ -461,7 +1137,7 @@ module Repull
461
1137
  end
462
1138
 
463
1139
  # Update Booking.com rates/availability
464
- # Push availability, rates, and the full restriction set to Booking.com. &#x60;type&#x60; selects the write path: - &#x60;rates&#x60; — nightly price + length-of-stay / arrival restrictions (min/max stay, closed-to-arrival, closed-to-departure, advance-reservation window). - &#x60;availability&#x60; — inventory (&#x60;availableRooms&#x60;), the dedicated stop-sell flag (&#x60;closed&#x60;), and the same restriction set. - &#x60;derived-pricing&#x60; — occupancy-derived pricing rules. Restrictions never leak across channels — this endpoint writes only to Booking.com. Errors from upstream surface as &#x60;booking_error&#x60;.
1140
+ # Push availability, rates, and the full restriction set to Booking.com. &#x60;type&#x60; selects the write path: - &#x60;rates&#x60; — nightly price + length-of-stay / arrival restrictions (min/max stay, closed-to-arrival, closed-to-departure, advance-reservation window). - &#x60;availability&#x60; — inventory (&#x60;availableRooms&#x60;), the dedicated stop-sell flag (&#x60;closed&#x60;), and the same restriction set. - &#x60;derived-pricing&#x60; — occupancy-derived pricing rules. Restrictions never leak across channels — this endpoint writes only to Booking.com. Errors from upstream surface as &#x60;booking_error&#x60;. &#x60;property_id&#x60; must be a Booking.com property connected to this workspace (&#x60;GET /v1/channels/booking/properties&#x60; lists them). Any other id — including one connected to a different workspace — returns &#x60;404 not_found&#x60;, the same answer as an id that does not exist. Returns &#x60;403 listing_inactive&#x60; when any listing mapped to the Booking.com property is inactive. An inactive listing keeps syncing, but cannot be read or changed through the API until it is activated.
465
1141
  # @param booking_availability_update_request [BookingAvailabilityUpdateRequest]
466
1142
  # @param [Hash] opts the optional parameters
467
1143
  # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
@@ -518,8 +1194,76 @@ module Repull
518
1194
  return data, status_code, headers
519
1195
  end
520
1196
 
1197
+ # Set Booking.com charges
1198
+ # Replace the extra-charge set for a Booking.com property. The body carries the target `property_id` and the full `charges` array — Booking treats the write as a full replacement, so include every charge you want to keep. `property_id` must be a Booking.com property connected to this workspace (`GET /v1/channels/booking/properties` lists them). Any other id — including one connected to a different workspace — returns `404 not_found`, the same answer as an id that does not exist. Returns `403 listing_inactive` when any listing mapped to the Booking.com property is inactive. An inactive listing keeps syncing, but cannot be read or changed through the API until it is activated.
1199
+ # @param update_booking_charges_request [UpdateBookingChargesRequest]
1200
+ # @param [Hash] opts the optional parameters
1201
+ # @return [nil]
1202
+ def update_booking_charges(update_booking_charges_request, opts = {})
1203
+ update_booking_charges_with_http_info(update_booking_charges_request, opts)
1204
+ nil
1205
+ end
1206
+
1207
+ # Set Booking.com charges
1208
+ # Replace the extra-charge set for a Booking.com property. The body carries the target &#x60;property_id&#x60; and the full &#x60;charges&#x60; array — Booking treats the write as a full replacement, so include every charge you want to keep. &#x60;property_id&#x60; must be a Booking.com property connected to this workspace (&#x60;GET /v1/channels/booking/properties&#x60; lists them). Any other id — including one connected to a different workspace — returns &#x60;404 not_found&#x60;, the same answer as an id that does not exist. Returns &#x60;403 listing_inactive&#x60; when any listing mapped to the Booking.com property is inactive. An inactive listing keeps syncing, but cannot be read or changed through the API until it is activated.
1209
+ # @param update_booking_charges_request [UpdateBookingChargesRequest]
1210
+ # @param [Hash] opts the optional parameters
1211
+ # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
1212
+ def update_booking_charges_with_http_info(update_booking_charges_request, opts = {})
1213
+ if @api_client.config.debugging
1214
+ @api_client.config.logger.debug 'Calling API: BookingComApi.update_booking_charges ...'
1215
+ end
1216
+ # verify the required parameter 'update_booking_charges_request' is set
1217
+ if @api_client.config.client_side_validation && update_booking_charges_request.nil?
1218
+ fail ArgumentError, "Missing the required parameter 'update_booking_charges_request' when calling BookingComApi.update_booking_charges"
1219
+ end
1220
+ # resource path
1221
+ local_var_path = '/v1/channels/booking/charges'
1222
+
1223
+ # query parameters
1224
+ query_params = opts[:query_params] || {}
1225
+
1226
+ # header parameters
1227
+ header_params = opts[:header_params] || {}
1228
+ # HTTP header 'Accept' (if needed)
1229
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
1230
+ # HTTP header 'Content-Type'
1231
+ content_type = @api_client.select_header_content_type(['application/json'])
1232
+ if !content_type.nil?
1233
+ header_params['Content-Type'] = content_type
1234
+ end
1235
+
1236
+ # form parameters
1237
+ form_params = opts[:form_params] || {}
1238
+
1239
+ # http body (model)
1240
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(update_booking_charges_request)
1241
+
1242
+ # return_type
1243
+ return_type = opts[:debug_return_type]
1244
+
1245
+ # auth_names
1246
+ auth_names = opts[:debug_auth_names] || ['bearerAuth']
1247
+
1248
+ new_options = opts.merge(
1249
+ :operation => :"BookingComApi.update_booking_charges",
1250
+ :header_params => header_params,
1251
+ :query_params => query_params,
1252
+ :form_params => form_params,
1253
+ :body => post_body,
1254
+ :auth_names => auth_names,
1255
+ :return_type => return_type
1256
+ )
1257
+
1258
+ data, status_code, headers = @api_client.call_api(:PUT, local_var_path, new_options)
1259
+ if @api_client.config.debugging
1260
+ @api_client.config.logger.debug "API called: BookingComApi#update_booking_charges\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
1261
+ end
1262
+ return data, status_code, headers
1263
+ end
1264
+
521
1265
  # Update Booking.com content
522
- # Push content changes (descriptions, amenities, photos) to Booking.com. Booking enforces editorial review on text fields — changes appear after their content moderation queue clears.
1266
+ # Push content changes (descriptions, amenities, photos) to Booking.com. Booking enforces editorial review on text fields — changes appear after their content moderation queue clears. `property_id` must be a Booking.com property connected to this workspace (`GET /v1/channels/booking/properties` lists them). Any other id — including one connected to a different workspace — returns `404 not_found`, the same answer as an id that does not exist. Returns `403 listing_inactive` when any listing mapped to the Booking.com property is inactive. An inactive listing keeps syncing, but cannot be read or changed through the API until it is activated.
523
1267
  # @param [Hash] opts the optional parameters
524
1268
  # @return [nil]
525
1269
  def update_booking_content(opts = {})
@@ -528,7 +1272,7 @@ module Repull
528
1272
  end
529
1273
 
530
1274
  # Update Booking.com content
531
- # Push content changes (descriptions, amenities, photos) to Booking.com. Booking enforces editorial review on text fields — changes appear after their content moderation queue clears.
1275
+ # Push content changes (descriptions, amenities, photos) to Booking.com. Booking enforces editorial review on text fields — changes appear after their content moderation queue clears. &#x60;property_id&#x60; must be a Booking.com property connected to this workspace (&#x60;GET /v1/channels/booking/properties&#x60; lists them). Any other id — including one connected to a different workspace — returns &#x60;404 not_found&#x60;, the same answer as an id that does not exist. Returns &#x60;403 listing_inactive&#x60; when any listing mapped to the Booking.com property is inactive. An inactive listing keeps syncing, but cannot be read or changed through the API until it is activated.
532
1276
  # @param [Hash] opts the optional parameters
533
1277
  # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
534
1278
  def update_booking_content_with_http_info(opts = {})
@@ -543,6 +1287,8 @@ module Repull
543
1287
 
544
1288
  # header parameters
545
1289
  header_params = opts[:header_params] || {}
1290
+ # HTTP header 'Accept' (if needed)
1291
+ header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
546
1292
 
547
1293
  # form parameters
548
1294
  form_params = opts[:form_params] || {}
@@ -574,7 +1320,7 @@ module Repull
574
1320
  end
575
1321
 
576
1322
  # Update Booking.com pricing for a listing
577
- # Pushes one or more rate updates to Booking.com via `updateRates`. Each update needs `roomId` + `rateId` + `dateRange` + `price` + `currency`. Field-level validation runs up front so callers don't have to parse Booking's XML error envelope to discover a missing `roomId`.
1323
+ # Pushes one or more rate updates to Booking.com via `updateRates`. Each update needs `roomId` + `rateId` + `dateRange` + `price` + `currency`. Field-level validation runs up front so callers don't have to parse Booking's XML error envelope to discover a missing `roomId`. Returns `403 listing_inactive` when the listing is inactive. An inactive listing keeps syncing, but cannot be read or changed through the API until it is activated.
578
1324
  # @param id [Integer]
579
1325
  # @param booking_pricing_update_request [BookingPricingUpdateRequest]
580
1326
  # @param [Hash] opts the optional parameters
@@ -585,7 +1331,7 @@ module Repull
585
1331
  end
586
1332
 
587
1333
  # Update Booking.com pricing for a listing
588
- # Pushes one or more rate updates to Booking.com via &#x60;updateRates&#x60;. Each update needs &#x60;roomId&#x60; + &#x60;rateId&#x60; + &#x60;dateRange&#x60; + &#x60;price&#x60; + &#x60;currency&#x60;. Field-level validation runs up front so callers don&#39;t have to parse Booking&#39;s XML error envelope to discover a missing &#x60;roomId&#x60;.
1334
+ # Pushes one or more rate updates to Booking.com via &#x60;updateRates&#x60;. Each update needs &#x60;roomId&#x60; + &#x60;rateId&#x60; + &#x60;dateRange&#x60; + &#x60;price&#x60; + &#x60;currency&#x60;. Field-level validation runs up front so callers don&#39;t have to parse Booking&#39;s XML error envelope to discover a missing &#x60;roomId&#x60;. Returns &#x60;403 listing_inactive&#x60; when the listing is inactive. An inactive listing keeps syncing, but cannot be read or changed through the API until it is activated.
589
1335
  # @param id [Integer]
590
1336
  # @param booking_pricing_update_request [BookingPricingUpdateRequest]
591
1337
  # @param [Hash] opts the optional parameters