repull 0.2.10 → 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 +332 -99
  4. data/lib/repull/api/atlas_api.rb +5 -5
  5. data/lib/repull/api/availability_api.rb +145 -3
  6. data/lib/repull/api/billing_api.rb +7 -7
  7. data/lib/repull/api/booking_com_api.rb +210 -54
  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 +19 -11
  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 +1 -1
  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 +154 -10
  41. data/lib/repull/models/airbnb_amenity.rb +1 -1
  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/{booking_conversation_list_response.rb → alteration_change.rb} +22 -19
  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 +1 -1
  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 +1 -1
  124. data/lib/repull/models/create_airbnb_offer_request.rb +1 -1
  125. data/lib/repull/models/create_billing_checkout_request.rb +1 -1
  126. data/lib/repull/models/create_booking_webhook_request.rb +1 -1
  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/delete_airbnb_listing_photo200_response.rb +1 -1
  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 +2 -2
  144. data/lib/repull/models/get_airbnb_checkin_guide200_response.rb +192 -0
  145. data/lib/repull/models/get_airbnb_listing_quality200_response.rb +2 -2
  146. data/lib/repull/models/get_airbnb_listing_settings200_response.rb +2 -2
  147. data/lib/repull/models/get_airbnb_thread200_response.rb +2 -2
  148. data/lib/repull/models/get_health200_response.rb +1 -1
  149. data/lib/repull/models/get_usage_logs200_response.rb +1 -1
  150. data/lib/repull/models/get_usage_logs200_response_data_inner.rb +1 -1
  151. data/lib/repull/models/get_usage_logs200_response_pagination.rb +3 -3
  152. data/lib/repull/models/get_usage_summary200_response.rb +2 -2
  153. data/lib/repull/models/get_usage_summary200_response_breakdown_inner.rb +1 -1
  154. data/lib/repull/models/get_usage_summary200_response_limits.rb +3 -3
  155. data/lib/repull/models/get_usage_summary200_response_remaining.rb +2 -2
  156. data/lib/repull/models/get_usage_summary200_response_status_distribution.rb +1 -1
  157. data/lib/repull/models/get_usage_summary200_response_timeline_inner.rb +1 -1
  158. data/lib/repull/models/get_usage_summary200_response_totals.rb +1 -1
  159. data/lib/repull/models/get_usage_summary200_response_used.rb +2 -2
  160. data/lib/repull/models/get_usage_tier200_response.rb +2 -2
  161. data/lib/repull/models/get_usage_tier200_response_limits.rb +4 -4
  162. data/lib/repull/models/get_usage_tier200_response_remaining.rb +3 -3
  163. data/lib/repull/models/get_usage_tier200_response_used.rb +3 -3
  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 +2 -2
  175. data/lib/repull/models/list_airbnb_listing_amenities200_response.rb +2 -2
  176. data/lib/repull/models/list_airbnb_listing_amenities200_response_data.rb +1 -1
  177. data/lib/repull/models/list_airbnb_transactions200_response.rb +3 -3
  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/{studio_error.rb → listing_photo_delete_response.rb} +20 -12
  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/{vrbo_listing_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 +33 -7
  279. data/lib/repull/models/property_availability_coverage.rb +222 -0
  280. data/lib/repull/models/property_availability_day.rb +4 -4
  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_property_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/{sandbox_fixture_ref.rb → sync_airbnb_transactions200_response.rb} +36 -38
  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 +1 -1
  350. data/lib/repull/models/update_booking_charges_request.rb +1 -1
  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 +75 -15
  368. data/openapi/v1.json +6119 -2021
  369. data/scripts/check-spec-freshness.py +399 -0
  370. data/scripts/regen.sh +32 -3
  371. metadata +77 -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
@@ -20,7 +20,7 @@ module Repull
20
20
  @api_client = api_client
21
21
  end
22
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.
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
24
  # @param acknowledge_booking_reservations_request [AcknowledgeBookingReservationsRequest]
25
25
  # @param [Hash] opts the optional parameters
26
26
  # @return [nil]
@@ -30,7 +30,7 @@ module Repull
30
30
  end
31
31
 
32
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.
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
34
  # @param acknowledge_booking_reservations_request [AcknowledgeBookingReservationsRequest]
35
35
  # @param [Hash] opts the optional parameters
36
36
  # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
@@ -88,7 +88,7 @@ module Repull
88
88
  end
89
89
 
90
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`.
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
92
  # @param booking_setup_request [BookingSetupRequest]
93
93
  # @param [Hash] opts the optional parameters
94
94
  # @return [nil]
@@ -98,7 +98,7 @@ module Repull
98
98
  end
99
99
 
100
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;.
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
102
  # @param booking_setup_request [BookingSetupRequest]
103
103
  # @param [Hash] opts the optional parameters
104
104
  # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
@@ -156,7 +156,7 @@ module Repull
156
156
  end
157
157
 
158
158
  # Subscribe to a Booking.com notification
159
- # Subscribe to a Booking.com CNS notification type, delivered to `callback_url`. Returns 201 on success.
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
160
  # @param create_booking_webhook_request [CreateBookingWebhookRequest]
161
161
  # @param [Hash] opts the optional parameters
162
162
  # @return [nil]
@@ -166,7 +166,7 @@ module Repull
166
166
  end
167
167
 
168
168
  # Subscribe to a Booking.com notification
169
- # Subscribe to a Booking.com CNS notification type, delivered to &#x60;callback_url&#x60;. Returns 201 on success.
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
170
  # @param create_booking_webhook_request [CreateBookingWebhookRequest]
171
171
  # @param [Hash] opts the optional parameters
172
172
  # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
@@ -224,7 +224,7 @@ module Repull
224
224
  end
225
225
 
226
226
  # Unsubscribe from a Booking.com notification
227
- # Remove a Booking.com CNS subscription. Pass the `notification_type` to unsubscribe as a query paramrequired.
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
228
  # @param notification_type [String] Booking.com CNS notification type to unsubscribe.
229
229
  # @param [Hash] opts the optional parameters
230
230
  # @return [nil]
@@ -234,7 +234,7 @@ module Repull
234
234
  end
235
235
 
236
236
  # Unsubscribe from a Booking.com notification
237
- # Remove a Booking.com CNS subscription. Pass the &#x60;notification_type&#x60; to unsubscribe as a query paramrequired.
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
238
  # @param notification_type [String] Booking.com CNS notification type to unsubscribe.
239
239
  # @param [Hash] opts the optional parameters
240
240
  # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
@@ -287,8 +287,84 @@ module Repull
287
287
  return data, status_code, headers
288
288
  end
289
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
+
290
366
  # Get Booking.com charges
291
- # 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.
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.
292
368
  # @param property_id [String] Booking.com hotel/property id.
293
369
  # @param [Hash] opts the optional parameters
294
370
  # @return [nil]
@@ -298,7 +374,7 @@ module Repull
298
374
  end
299
375
 
300
376
  # Get Booking.com charges
301
- # 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.
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.
302
378
  # @param property_id [String] Booking.com hotel/property id.
303
379
  # @param [Hash] opts the optional parameters
304
380
  # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
@@ -352,7 +428,7 @@ module Repull
352
428
  end
353
429
 
354
430
  # Get Booking.com content
355
- # 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.
356
432
  # @param [Hash] opts the optional parameters
357
433
  # @return [nil]
358
434
  def get_booking_content(opts = {})
@@ -361,7 +437,7 @@ module Repull
361
437
  end
362
438
 
363
439
  # Get Booking.com content
364
- # 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.
365
441
  # @param [Hash] opts the optional parameters
366
442
  # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
367
443
  def get_booking_content_with_http_info(opts = {})
@@ -376,6 +452,8 @@ module Repull
376
452
 
377
453
  # header parameters
378
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']
379
457
 
380
458
  # form parameters
381
459
  form_params = opts[:form_params] || {}
@@ -407,7 +485,7 @@ module Repull
407
485
  end
408
486
 
409
487
  # Get Booking.com pricing for a listing
410
- # 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.
411
489
  # @param id [Integer] Vanio listing ID — resolved to a Booking.com hotel ID via the workspace mapping.
412
490
  # @param [Hash] opts the optional parameters
413
491
  # @option opts [Date] :start_date
@@ -421,7 +499,7 @@ module Repull
421
499
  end
422
500
 
423
501
  # Get Booking.com pricing for a listing
424
- # 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.
425
503
  # @param id [Integer] Vanio listing ID — resolved to a Booking.com hotel ID via the workspace mapping.
426
504
  # @param [Hash] opts the optional parameters
427
505
  # @option opts [Date] :start_date
@@ -482,7 +560,7 @@ module Repull
482
560
  end
483
561
 
484
562
  # Get Booking.com connection for a listing
485
- # 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.
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.
486
564
  # @param id [Integer] Vanio listing ID.
487
565
  # @param [Hash] opts the optional parameters
488
566
  # @return [nil]
@@ -492,7 +570,7 @@ module Repull
492
570
  end
493
571
 
494
572
  # Get Booking.com connection for a listing
495
- # 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.
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.
496
574
  # @param id [Integer] Vanio listing ID.
497
575
  # @param [Hash] opts the optional parameters
498
576
  # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
@@ -545,18 +623,18 @@ module Repull
545
623
  end
546
624
 
547
625
  # List Booking.com conversations
548
- # 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.
549
627
  # @param [Hash] opts the optional parameters
550
- # @return [BookingConversationListResponse]
628
+ # @return [Array<BookingConversation>]
551
629
  def list_booking_conversations(opts = {})
552
630
  data, _status_code, _headers = list_booking_conversations_with_http_info(opts)
553
631
  data
554
632
  end
555
633
 
556
634
  # List Booking.com conversations
557
- # 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.
558
636
  # @param [Hash] opts the optional parameters
559
- # @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
560
638
  def list_booking_conversations_with_http_info(opts = {})
561
639
  if @api_client.config.debugging
562
640
  @api_client.config.logger.debug 'Calling API: BookingComApi.list_booking_conversations ...'
@@ -579,7 +657,7 @@ module Repull
579
657
  post_body = opts[:debug_body]
580
658
 
581
659
  # return_type
582
- return_type = opts[:debug_return_type] || 'BookingConversationListResponse'
660
+ return_type = opts[:debug_return_type] || 'Array<BookingConversation>'
583
661
 
584
662
  # auth_names
585
663
  auth_names = opts[:debug_auth_names] || ['bearerAuth']
@@ -602,18 +680,18 @@ module Repull
602
680
  end
603
681
 
604
682
  # List Booking.com properties
605
- # 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.
606
684
  # @param [Hash] opts the optional parameters
607
- # @return [BookingPropertyListResponse]
685
+ # @return [Array<BookingProperty>]
608
686
  def list_booking_properties(opts = {})
609
687
  data, _status_code, _headers = list_booking_properties_with_http_info(opts)
610
688
  data
611
689
  end
612
690
 
613
691
  # List Booking.com properties
614
- # 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.
615
693
  # @param [Hash] opts the optional parameters
616
- # @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
617
695
  def list_booking_properties_with_http_info(opts = {})
618
696
  if @api_client.config.debugging
619
697
  @api_client.config.logger.debug 'Calling API: BookingComApi.list_booking_properties ...'
@@ -636,7 +714,7 @@ module Repull
636
714
  post_body = opts[:debug_body]
637
715
 
638
716
  # return_type
639
- return_type = opts[:debug_return_type] || 'BookingPropertyListResponse'
717
+ return_type = opts[:debug_return_type] || 'Array<BookingProperty>'
640
718
 
641
719
  # auth_names
642
720
  auth_names = opts[:debug_auth_names] || ['bearerAuth']
@@ -658,25 +736,88 @@ module Repull
658
736
  return data, status_code, headers
659
737
  end
660
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
+
661
802
  # List Booking.com reservations
662
- # 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.
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.
663
804
  # @param [Hash] opts the optional parameters
664
805
  # @option opts [String] :type Which set to pull. &#x60;details&#x60; requires &#x60;reservation_id&#x60; + &#x60;hotel_id&#x60;. (default to 'new')
665
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.
666
807
  # @option opts [String] :reservation_id Booking.com reservation id — with &#x60;hotel_id&#x60;, returns that reservation&#39;s details.
667
- # @return [nil]
808
+ # @return [ListBookingReservations200Response]
668
809
  def list_booking_reservations(opts = {})
669
- list_booking_reservations_with_http_info(opts)
670
- nil
810
+ data, _status_code, _headers = list_booking_reservations_with_http_info(opts)
811
+ data
671
812
  end
672
813
 
673
814
  # List Booking.com reservations
674
- # 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.
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.
675
816
  # @param [Hash] opts the optional parameters
676
817
  # @option opts [String] :type Which set to pull. &#x60;details&#x60; requires &#x60;reservation_id&#x60; + &#x60;hotel_id&#x60;. (default to 'new')
677
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.
678
819
  # @option opts [String] :reservation_id Booking.com reservation id — with &#x60;hotel_id&#x60;, returns that reservation&#39;s details.
679
- # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
820
+ # @return [Array<(ListBookingReservations200Response, Integer, Hash)>] ListBookingReservations200Response data, response status code and response headers
680
821
  def list_booking_reservations_with_http_info(opts = {})
681
822
  if @api_client.config.debugging
682
823
  @api_client.config.logger.debug 'Calling API: BookingComApi.list_booking_reservations ...'
@@ -706,7 +847,7 @@ module Repull
706
847
  post_body = opts[:debug_body]
707
848
 
708
849
  # return_type
709
- return_type = opts[:debug_return_type]
850
+ return_type = opts[:debug_return_type] || 'ListBookingReservations200Response'
710
851
 
711
852
  # auth_names
712
853
  auth_names = opts[:debug_auth_names] || ['bearerAuth']
@@ -729,7 +870,7 @@ module Repull
729
870
  end
730
871
 
731
872
  # List Booking.com reviews
732
- # 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.
733
874
  # @param property_id [String] Booking.com hotel/property id.
734
875
  # @param [Hash] opts the optional parameters
735
876
  # @return [nil]
@@ -739,7 +880,7 @@ module Repull
739
880
  end
740
881
 
741
882
  # List Booking.com reviews
742
- # 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.
743
884
  # @param property_id [String] Booking.com hotel/property id.
744
885
  # @param [Hash] opts the optional parameters
745
886
  # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
@@ -793,7 +934,7 @@ module Repull
793
934
  end
794
935
 
795
936
  # List Booking.com webhook subscriptions
796
- # List the workspace's Booking.com Content Notification Service (CNS) subscriptions the notification types Booking pushes to your callback URLs.
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`.
797
938
  # @param [Hash] opts the optional parameters
798
939
  # @return [nil]
799
940
  def list_booking_webhooks(opts = {})
@@ -802,7 +943,7 @@ module Repull
802
943
  end
803
944
 
804
945
  # List Booking.com webhook subscriptions
805
- # List the workspace&#39;s Booking.com Content Notification Service (CNS) subscriptions the notification types Booking pushes to your callback URLs.
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;.
806
947
  # @param [Hash] opts the optional parameters
807
948
  # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
808
949
  def list_booking_webhooks_with_http_info(opts = {})
@@ -850,7 +991,7 @@ module Repull
850
991
  end
851
992
 
852
993
  # Reply to Booking.com review
853
- # 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.
854
995
  # @param reply_booking_review_request [ReplyBookingReviewRequest]
855
996
  # @param [Hash] opts the optional parameters
856
997
  # @return [ReplyBookingReview200Response]
@@ -860,7 +1001,7 @@ module Repull
860
1001
  end
861
1002
 
862
1003
  # Reply to Booking.com review
863
- # 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.
864
1005
  # @param reply_booking_review_request [ReplyBookingReviewRequest]
865
1006
  # @param [Hash] opts the optional parameters
866
1007
  # @return [Array<(ReplyBookingReview200Response, Integer, Hash)>] ReplyBookingReview200Response data, response status code and response headers
@@ -918,22 +1059,28 @@ module Repull
918
1059
  end
919
1060
 
920
1061
  # Send Booking.com message
921
- # 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]
922
1064
  # @param [Hash] opts the optional parameters
923
1065
  # @return [nil]
924
- def send_booking_message(opts = {})
925
- 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)
926
1068
  nil
927
1069
  end
928
1070
 
929
1071
  # Send Booking.com message
930
- # 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]
931
1074
  # @param [Hash] opts the optional parameters
932
1075
  # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
933
- def send_booking_message_with_http_info(opts = {})
1076
+ def send_booking_message_with_http_info(send_booking_message_request, opts = {})
934
1077
  if @api_client.config.debugging
935
1078
  @api_client.config.logger.debug 'Calling API: BookingComApi.send_booking_message ...'
936
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
937
1084
  # resource path
938
1085
  local_var_path = '/v1/channels/booking/messaging'
939
1086
 
@@ -942,12 +1089,19 @@ module Repull
942
1089
 
943
1090
  # header parameters
944
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
945
1099
 
946
1100
  # form parameters
947
1101
  form_params = opts[:form_params] || {}
948
1102
 
949
1103
  # http body (model)
950
- post_body = opts[:debug_body]
1104
+ post_body = opts[:debug_body] || @api_client.object_to_http_body(send_booking_message_request)
951
1105
 
952
1106
  # return_type
953
1107
  return_type = opts[:debug_return_type]
@@ -973,7 +1127,7 @@ module Repull
973
1127
  end
974
1128
 
975
1129
  # Update Booking.com rates/availability
976
- # 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.
977
1131
  # @param booking_availability_update_request [BookingAvailabilityUpdateRequest]
978
1132
  # @param [Hash] opts the optional parameters
979
1133
  # @return [nil]
@@ -983,7 +1137,7 @@ module Repull
983
1137
  end
984
1138
 
985
1139
  # Update Booking.com rates/availability
986
- # 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.
987
1141
  # @param booking_availability_update_request [BookingAvailabilityUpdateRequest]
988
1142
  # @param [Hash] opts the optional parameters
989
1143
  # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
@@ -1041,7 +1195,7 @@ module Repull
1041
1195
  end
1042
1196
 
1043
1197
  # Set Booking.com charges
1044
- # 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.
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.
1045
1199
  # @param update_booking_charges_request [UpdateBookingChargesRequest]
1046
1200
  # @param [Hash] opts the optional parameters
1047
1201
  # @return [nil]
@@ -1051,7 +1205,7 @@ module Repull
1051
1205
  end
1052
1206
 
1053
1207
  # Set Booking.com charges
1054
- # 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.
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.
1055
1209
  # @param update_booking_charges_request [UpdateBookingChargesRequest]
1056
1210
  # @param [Hash] opts the optional parameters
1057
1211
  # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
@@ -1109,7 +1263,7 @@ module Repull
1109
1263
  end
1110
1264
 
1111
1265
  # Update Booking.com content
1112
- # 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.
1113
1267
  # @param [Hash] opts the optional parameters
1114
1268
  # @return [nil]
1115
1269
  def update_booking_content(opts = {})
@@ -1118,7 +1272,7 @@ module Repull
1118
1272
  end
1119
1273
 
1120
1274
  # Update Booking.com content
1121
- # 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.
1122
1276
  # @param [Hash] opts the optional parameters
1123
1277
  # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers
1124
1278
  def update_booking_content_with_http_info(opts = {})
@@ -1133,6 +1287,8 @@ module Repull
1133
1287
 
1134
1288
  # header parameters
1135
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']
1136
1292
 
1137
1293
  # form parameters
1138
1294
  form_params = opts[:form_params] || {}
@@ -1164,7 +1320,7 @@ module Repull
1164
1320
  end
1165
1321
 
1166
1322
  # Update Booking.com pricing for a listing
1167
- # 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.
1168
1324
  # @param id [Integer]
1169
1325
  # @param booking_pricing_update_request [BookingPricingUpdateRequest]
1170
1326
  # @param [Hash] opts the optional parameters
@@ -1175,7 +1331,7 @@ module Repull
1175
1331
  end
1176
1332
 
1177
1333
  # Update Booking.com pricing for a listing
1178
- # 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.
1179
1335
  # @param id [Integer]
1180
1336
  # @param booking_pricing_update_request [BookingPricingUpdateRequest]
1181
1337
  # @param [Hash] opts the optional parameters