repull 0.2.10 → 0.2.15

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 (453) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/lib/repull/api/airbnb_api.rb +1569 -196
  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 +763 -10
  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 +392 -29
  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_account_freshness.rb +239 -0
  41. data/lib/repull/models/airbnb_alteration.rb +198 -10
  42. data/lib/repull/models/airbnb_alteration_create_request.rb +264 -0
  43. data/lib/repull/models/airbnb_amenity.rb +1 -1
  44. data/lib/repull/models/airbnb_availability_write_request.rb +20 -1
  45. data/lib/repull/models/airbnb_calendar_operation.rb +97 -8
  46. data/lib/repull/models/airbnb_connection.rb +73 -6
  47. data/lib/repull/models/airbnb_connection_accessibility_amenities_inner.rb +1 -1
  48. data/lib/repull/models/airbnb_connection_amenities_inner.rb +1 -1
  49. data/lib/repull/models/airbnb_connection_host.rb +2 -2
  50. data/lib/repull/models/airbnb_connection_response.rb +1 -1
  51. data/lib/repull/models/airbnb_connection_summary.rb +1 -1
  52. data/lib/repull/models/airbnb_content_write_response.rb +275 -0
  53. data/lib/repull/models/airbnb_data_freshness.rb +24 -12
  54. data/lib/repull/models/airbnb_description_write_request.rb +192 -0
  55. data/lib/repull/models/airbnb_description_write_request_description.rb +365 -0
  56. data/lib/repull/models/airbnb_listing.rb +14 -3
  57. data/lib/repull/models/airbnb_listing_action200_response.rb +105 -0
  58. data/lib/repull/models/airbnb_listing_action200_response_one_of.rb +157 -0
  59. data/lib/repull/models/airbnb_listing_action200_response_one_of1.rb +175 -0
  60. data/lib/repull/models/airbnb_listing_action_request.rb +3 -3
  61. data/lib/repull/models/airbnb_listing_details_response.rb +284 -0
  62. data/lib/repull/models/airbnb_listing_details_write_request.rb +209 -0
  63. data/lib/repull/models/airbnb_listing_details_write_request_check_in_option.rb +214 -0
  64. data/lib/repull/models/airbnb_listing_details_write_request_quiet_hours_inner.rb +190 -0
  65. data/lib/repull/models/airbnb_listing_lifecycle_response.rb +196 -0
  66. data/lib/repull/models/airbnb_listing_list_response.rb +2 -2
  67. data/lib/repull/models/airbnb_permits_response.rb +163 -0
  68. data/lib/repull/models/airbnb_permits_response_cached_inner.rb +200 -0
  69. data/lib/repull/models/airbnb_permits_write_request.rb +176 -0
  70. data/lib/repull/models/airbnb_permits_write_request_permits_inner.rb +228 -0
  71. data/lib/repull/models/airbnb_permits_write_request_permits_inner_answers_inner.rb +198 -0
  72. data/lib/repull/models/airbnb_photo_position.rb +159 -0
  73. data/lib/repull/models/airbnb_pricing_write_request.rb +54 -3
  74. data/lib/repull/models/airbnb_pricing_write_request_records_inner.rb +236 -0
  75. data/lib/repull/models/airbnb_publish_result.rb +263 -0
  76. data/lib/repull/models/airbnb_reservation.rb +24 -2
  77. data/lib/repull/models/airbnb_reservation_list_response.rb +15 -6
  78. data/lib/repull/models/airbnb_review.rb +24 -2
  79. data/lib/repull/models/airbnb_review_list_response.rb +14 -5
  80. data/lib/repull/models/airbnb_safety_disclosure.rb +202 -0
  81. data/lib/repull/models/airbnb_safety_disclosures_response.rb +162 -0
  82. data/lib/repull/models/airbnb_safety_disclosures_write_request.rb +176 -0
  83. data/lib/repull/models/airbnb_thread.rb +24 -2
  84. data/lib/repull/models/airbnb_thread_list_response.rb +14 -5
  85. data/lib/repull/models/airbnb_transaction.rb +524 -0
  86. data/lib/repull/models/airbnb_transaction_guest_breakdown.rb +171 -0
  87. data/lib/repull/models/airbnb_transaction_host_breakdown.rb +246 -0
  88. data/lib/repull/models/airbnb_transaction_payout.rb +175 -0
  89. data/lib/repull/models/alteration_change.rb +161 -0
  90. data/lib/repull/models/alteration_webhook_object.rb +296 -0
  91. data/lib/repull/models/availability_batch_write_request.rb +296 -0
  92. data/lib/repull/models/availability_write_request.rb +259 -0
  93. data/lib/repull/models/availability_write_result.rb +178 -0
  94. data/lib/repull/models/availability_write_result_synced.rb +176 -0
  95. data/lib/repull/models/availability_write_settings.rb +215 -0
  96. data/lib/repull/models/booking_availability_state_response.rb +149 -0
  97. data/lib/repull/models/booking_availability_update.rb +1 -1
  98. data/lib/repull/models/booking_availability_update_request.rb +1 -1
  99. data/lib/repull/models/booking_availability_update_request_property_id.rb +1 -1
  100. data/lib/repull/models/booking_availability_update_request_updates_inner.rb +1 -1
  101. data/lib/repull/models/booking_connect_listing_option.rb +1 -1
  102. data/lib/repull/models/booking_connect_room.rb +1 -1
  103. data/lib/repull/models/booking_connect_rooms_response.rb +39 -5
  104. data/lib/repull/models/booking_conversation.rb +1 -1
  105. data/lib/repull/models/booking_pricing_rate_update.rb +1 -1
  106. data/lib/repull/models/booking_pricing_rate_update_date_range.rb +1 -1
  107. data/lib/repull/models/booking_pricing_rate_update_restrictions.rb +1 -1
  108. data/lib/repull/models/booking_pricing_response.rb +1 -1
  109. data/lib/repull/models/booking_pricing_update_request.rb +1 -1
  110. data/lib/repull/models/booking_pricing_update_response.rb +1 -1
  111. data/lib/repull/models/booking_property.rb +1 -1
  112. data/lib/repull/models/booking_reservation.rb +277 -0
  113. data/lib/repull/models/booking_reservation_room.rb +271 -0
  114. data/lib/repull/models/booking_room_mapping.rb +18 -8
  115. data/lib/repull/models/booking_rooms_rates_response.rb +170 -0
  116. data/lib/repull/models/booking_rooms_rates_response_rooms_inner.rb +170 -0
  117. data/lib/repull/models/booking_rooms_rates_response_rooms_inner_rates_inner.rb +212 -0
  118. data/lib/repull/models/booking_setup_request.rb +1 -1
  119. data/lib/repull/models/booking_verify_hotel_request.rb +1 -1
  120. data/lib/repull/models/booking_verify_hotel_response.rb +40 -6
  121. data/lib/repull/models/bulk_pricing_failure.rb +1 -1
  122. data/lib/repull/models/bulk_pricing_item.rb +1 -1
  123. data/lib/repull/models/bulk_pricing_request.rb +1 -1
  124. data/lib/repull/models/bulk_pricing_response.rb +1 -1
  125. data/lib/repull/models/calendar_day.rb +1 -1
  126. data/lib/repull/models/calendar_response.rb +1 -1
  127. data/lib/repull/models/calendar_updated_event.rb +1 -1
  128. data/lib/repull/models/calendar_updated_payload.rb +1 -1
  129. data/lib/repull/models/calendar_updated_payload_range.rb +1 -1
  130. data/lib/repull/models/clear_kv200_response.rb +1 -1
  131. data/lib/repull/models/connect_host.rb +1 -1
  132. data/lib/repull/models/connect_provider.rb +1 -1
  133. data/lib/repull/models/connect_provider_list_response.rb +1 -1
  134. data/lib/repull/models/connect_session.rb +1 -1
  135. data/lib/repull/models/connect_status.rb +18 -6
  136. data/lib/repull/models/connect_status_accounts_inner.rb +188 -0
  137. data/lib/repull/models/connection.rb +1 -1
  138. data/lib/repull/models/connection_list_response.rb +1 -1
  139. data/lib/repull/models/conversation.rb +13 -2
  140. data/lib/repull/models/conversation_detail.rb +13 -2
  141. data/lib/repull/models/conversation_guest.rb +1 -1
  142. data/lib/repull/models/conversation_guest_contact.rb +1 -1
  143. data/lib/repull/models/conversation_host.rb +1 -1
  144. data/lib/repull/models/conversation_list_response.rb +1 -1
  145. data/lib/repull/models/conversation_message_attachment.rb +1 -1
  146. data/lib/repull/models/create_airbnb_listing_room_request.rb +315 -0
  147. data/lib/repull/models/create_airbnb_offer_request.rb +1 -1
  148. data/lib/repull/models/create_billing_checkout_request.rb +1 -1
  149. data/lib/repull/models/create_booking_webhook_request.rb +1 -1
  150. data/lib/repull/models/create_connect_session_request.rb +1 -1
  151. data/lib/repull/models/create_connection_request.rb +2 -2
  152. data/lib/repull/models/create_webhook_request.rb +1 -1
  153. data/lib/repull/models/custom_schema.rb +1 -1
  154. data/lib/repull/models/custom_schema_create.rb +1 -1
  155. data/lib/repull/models/custom_schema_create_response.rb +1 -1
  156. data/lib/repull/models/custom_schema_delete_response.rb +1 -1
  157. data/lib/repull/models/custom_schema_list_response.rb +1 -1
  158. data/lib/repull/models/custom_schema_summary.rb +1 -1
  159. data/lib/repull/models/custom_schema_update.rb +1 -1
  160. data/lib/repull/models/delete_airbnb_listing_photo200_response.rb +15 -5
  161. data/lib/repull/models/delete_airbnb_listing_room200_response.rb +157 -0
  162. data/lib/repull/models/delete_connection200_response.rb +234 -0
  163. data/lib/repull/models/delete_kv200_response.rb +1 -1
  164. data/lib/repull/models/error.rb +1 -1
  165. data/lib/repull/models/error_error.rb +44 -2
  166. data/lib/repull/models/error_error_support.rb +1 -1
  167. data/lib/repull/models/get_airbnb_alteration200_response.rb +2 -2
  168. data/lib/repull/models/get_airbnb_booking_settings200_response.rb +190 -0
  169. data/lib/repull/models/get_airbnb_booking_settings200_response_data.rb +246 -0
  170. data/lib/repull/models/get_airbnb_booking_settings200_response_data_advance_notice.rb +172 -0
  171. data/lib/repull/models/get_airbnb_booking_settings200_response_data_booking_window.rb +160 -0
  172. data/lib/repull/models/get_airbnb_booking_settings200_response_data_cancellation.rb +203 -0
  173. data/lib/repull/models/get_airbnb_booking_settings200_response_data_cancellation_non_refundable.rb +218 -0
  174. data/lib/repull/models/get_airbnb_booking_settings200_response_data_check_in.rb +159 -0
  175. data/lib/repull/models/get_airbnb_booking_settings200_response_data_check_in_start.rb +104 -0
  176. data/lib/repull/models/get_airbnb_booking_settings200_response_data_check_out.rb +172 -0
  177. data/lib/repull/models/get_airbnb_booking_settings200_response_data_instant_book.rb +206 -0
  178. data/lib/repull/models/get_airbnb_booking_settings200_response_data_preparation_time.rb +173 -0
  179. data/lib/repull/models/get_airbnb_checkin_guide200_response.rb +192 -0
  180. data/lib/repull/models/get_airbnb_listing_details200_response.rb +192 -0
  181. data/lib/repull/models/get_airbnb_listing_quality200_response.rb +2 -2
  182. data/lib/repull/models/get_airbnb_listing_settings200_response.rb +2 -2
  183. data/lib/repull/models/get_airbnb_thread200_response.rb +2 -2
  184. data/lib/repull/models/get_health200_response.rb +1 -1
  185. data/lib/repull/models/get_usage_logs200_response.rb +1 -1
  186. data/lib/repull/models/get_usage_logs200_response_data_inner.rb +1 -1
  187. data/lib/repull/models/get_usage_logs200_response_pagination.rb +3 -3
  188. data/lib/repull/models/get_usage_summary200_response.rb +2 -2
  189. data/lib/repull/models/get_usage_summary200_response_breakdown_inner.rb +1 -1
  190. data/lib/repull/models/get_usage_summary200_response_limits.rb +3 -3
  191. data/lib/repull/models/get_usage_summary200_response_remaining.rb +2 -2
  192. data/lib/repull/models/get_usage_summary200_response_status_distribution.rb +1 -1
  193. data/lib/repull/models/get_usage_summary200_response_timeline_inner.rb +1 -1
  194. data/lib/repull/models/get_usage_summary200_response_totals.rb +1 -1
  195. data/lib/repull/models/get_usage_summary200_response_used.rb +2 -2
  196. data/lib/repull/models/get_usage_tier200_response.rb +2 -2
  197. data/lib/repull/models/get_usage_tier200_response_limits.rb +4 -4
  198. data/lib/repull/models/get_usage_tier200_response_remaining.rb +3 -3
  199. data/lib/repull/models/get_usage_tier200_response_used.rb +3 -3
  200. data/lib/repull/models/guest.rb +1 -1
  201. data/lib/repull/models/guest_contact.rb +1 -1
  202. data/lib/repull/models/guest_create_request.rb +250 -0
  203. data/lib/repull/models/guest_create_response.rb +227 -0
  204. data/lib/repull/models/guest_create_response_contacts_inner.rb +199 -0
  205. data/lib/repull/models/guest_flag.rb +1 -1
  206. data/lib/repull/models/guest_list_response.rb +1 -1
  207. data/lib/repull/models/guest_note.rb +1 -1
  208. data/lib/repull/models/guest_profile.rb +1 -1
  209. data/lib/repull/models/guest_reservations_summary.rb +1 -1
  210. data/lib/repull/models/list_airbnb_alterations200_response.rb +2 -2
  211. data/lib/repull/models/list_airbnb_listing_amenities200_response.rb +2 -2
  212. data/lib/repull/models/list_airbnb_listing_amenities200_response_data.rb +1 -1
  213. data/lib/repull/models/list_airbnb_listing_permits200_response.rb +190 -0
  214. data/lib/repull/models/list_airbnb_listing_safety_disclosures200_response.rb +190 -0
  215. data/lib/repull/models/list_airbnb_transactions200_response.rb +3 -3
  216. data/lib/repull/models/list_booking_reservations200_response.rb +104 -0
  217. data/lib/repull/models/list_kv200_response.rb +1 -1
  218. data/lib/repull/models/list_kv200_response_data_inner.rb +1 -1
  219. data/lib/repull/models/list_kv200_response_pagination.rb +2 -2
  220. data/lib/repull/models/listing.rb +3 -2
  221. data/lib/repull/models/listing_active_request.rb +2 -2
  222. data/lib/repull/models/listing_active_response.rb +1 -1
  223. data/lib/repull/models/listing_address.rb +1 -1
  224. data/lib/repull/models/listing_amenity.rb +1 -1
  225. data/lib/repull/models/listing_channel.rb +1 -1
  226. data/lib/repull/models/listing_comp.rb +1 -1
  227. data/lib/repull/models/listing_comp_nightly.rb +1 -1
  228. data/lib/repull/models/listing_comp_ratings.rb +1 -1
  229. data/lib/repull/models/listing_comps_response.rb +1 -1
  230. data/lib/repull/models/listing_content.rb +14 -3
  231. data/lib/repull/models/listing_content_update_request.rb +22 -3
  232. data/lib/repull/models/listing_content_update_request_address.rb +1 -1
  233. data/lib/repull/models/listing_content_update_request_amenities.rb +1 -1
  234. data/lib/repull/models/listing_content_update_request_amenities_one_of_inner.rb +1 -1
  235. data/lib/repull/models/listing_content_update_request_details.rb +206 -0
  236. data/lib/repull/models/listing_content_update_request_occupancy.rb +1 -1
  237. data/lib/repull/models/listing_content_update_request_photos_inner.rb +1 -1
  238. data/lib/repull/models/listing_content_update_request_photos_inner_one_of.rb +1 -1
  239. data/lib/repull/models/listing_content_update_request_policies.rb +96 -6
  240. data/lib/repull/models/listing_content_update_response.rb +2 -2
  241. data/lib/repull/models/listing_create_request.rb +1 -1
  242. data/lib/repull/models/listing_create_response.rb +1 -1
  243. data/lib/repull/models/listing_created_event.rb +1 -1
  244. data/lib/repull/models/listing_created_payload.rb +1 -1
  245. data/lib/repull/models/listing_created_payload_address.rb +1 -1
  246. data/lib/repull/models/listing_deleted_event.rb +1 -1
  247. data/lib/repull/models/listing_deleted_payload.rb +1 -1
  248. data/lib/repull/models/listing_details.rb +1 -1
  249. data/lib/repull/models/listing_generate_content_request.rb +1 -1
  250. data/lib/repull/models/listing_generate_content_response.rb +1 -1
  251. data/lib/repull/models/listing_list_response.rb +1 -1
  252. data/lib/repull/models/{studio_file.rb → listing_photo.rb} +23 -34
  253. data/lib/repull/models/listing_photo_delete_request.rb +165 -0
  254. data/lib/repull/models/{studio_error.rb → listing_photo_delete_response.rb} +20 -12
  255. data/lib/repull/models/listing_photo_upload_url_request.rb +203 -0
  256. data/lib/repull/models/listing_photo_upload_url_response.rb +198 -0
  257. data/lib/repull/models/{vrbo_listing_list_response.rb → listing_photos_response.rb} +19 -19
  258. data/lib/repull/models/listing_pricing_apply_request.rb +1 -1
  259. data/lib/repull/models/listing_pricing_apply_response.rb +1 -1
  260. data/lib/repull/models/listing_pricing_history_entry.rb +2 -2
  261. data/lib/repull/models/listing_pricing_history_response.rb +1 -1
  262. data/lib/repull/models/listing_pricing_recommendation.rb +1 -1
  263. data/lib/repull/models/listing_pricing_response.rb +1 -1
  264. data/lib/repull/models/listing_pricing_response_comp_summary.rb +1 -1
  265. data/lib/repull/models/listing_pricing_response_date_range.rb +1 -1
  266. data/lib/repull/models/listing_pricing_response_listing.rb +1 -1
  267. data/lib/repull/models/listing_pricing_strategy.rb +1 -1
  268. data/lib/repull/models/listing_pricing_strategy_input.rb +1 -1
  269. data/lib/repull/models/listing_publish_airbnb_request.rb +1 -1
  270. data/lib/repull/models/listing_publish_airbnb_response.rb +165 -0
  271. data/lib/repull/models/listing_publish_response.rb +1 -1
  272. data/lib/repull/models/listing_publish_status_channel.rb +1 -1
  273. data/lib/repull/models/listing_publish_status_connection.rb +1 -1
  274. data/lib/repull/models/listing_publish_status_response.rb +1 -1
  275. data/lib/repull/models/listing_pull_airbnb_request.rb +149 -0
  276. data/lib/repull/models/listing_pull_response.rb +231 -0
  277. data/lib/repull/models/listing_quality_tier.rb +1 -1
  278. data/lib/repull/models/listing_segment.rb +1 -1
  279. data/lib/repull/models/listing_segment_recommendation.rb +1 -1
  280. data/lib/repull/models/listing_segments_response.rb +1 -1
  281. data/lib/repull/models/listing_segments_response_scope.rb +1 -1
  282. data/lib/repull/models/listing_status_batch_request.rb +212 -0
  283. data/lib/repull/models/{sandbox_reset_result.rb → listing_status_batch_response.rb} +57 -51
  284. data/lib/repull/models/listing_updated_event.rb +1 -1
  285. data/lib/repull/models/listing_updated_payload.rb +1 -1
  286. data/lib/repull/models/map_airbnb_listing_request.rb +1 -1
  287. data/lib/repull/models/map_airbnb_listing_response.rb +1 -1
  288. data/lib/repull/models/map_connect_booking_rooms_request.rb +1 -1
  289. data/lib/repull/models/map_connect_booking_rooms_response.rb +16 -5
  290. data/lib/repull/models/market_browse_category.rb +1 -1
  291. data/lib/repull/models/market_browse_entry.rb +1 -1
  292. data/lib/repull/models/market_browse_featured.rb +1 -1
  293. data/lib/repull/models/market_browse_response.rb +1 -1
  294. data/lib/repull/models/market_calendar_day.rb +1 -1
  295. data/lib/repull/models/market_calendar_day_events_inner.rb +1 -1
  296. data/lib/repull/models/market_calendar_response.rb +1 -1
  297. data/lib/repull/models/market_detail_response.rb +1 -1
  298. data/lib/repull/models/market_detail_response_price_distribution_inner.rb +1 -1
  299. data/lib/repull/models/market_detail_response_property_type_mix_inner.rb +1 -1
  300. data/lib/repull/models/market_detail_response_supply_trend_inner.rb +1 -1
  301. data/lib/repull/models/market_detail_response_top_comps.rb +1 -1
  302. data/lib/repull/models/market_event.rb +1 -1
  303. data/lib/repull/models/market_my_listing.rb +1 -1
  304. data/lib/repull/models/market_summary.rb +1 -1
  305. data/lib/repull/models/market_top_comp.rb +1 -1
  306. data/lib/repull/models/markets_overview_response.rb +1 -1
  307. data/lib/repull/models/markets_overview_response_browse.rb +1 -1
  308. data/lib/repull/models/markets_overview_response_subscriptions.rb +1 -1
  309. data/lib/repull/models/markets_overview_response_totals.rb +1 -1
  310. data/lib/repull/models/message.rb +1 -1
  311. data/lib/repull/models/message_list_response.rb +1 -1
  312. data/lib/repull/models/pagination.rb +1 -1
  313. data/lib/repull/models/payment_completed_event.rb +1 -1
  314. data/lib/repull/models/payment_completed_payload.rb +1 -1
  315. data/lib/repull/models/payment_refunded_event.rb +1 -1
  316. data/lib/repull/models/payment_refunded_payload.rb +1 -1
  317. data/lib/repull/models/plumguide_listing.rb +1 -1
  318. data/lib/repull/models/plumguide_listing_list_response.rb +1 -1
  319. data/lib/repull/models/property.rb +17 -7
  320. data/lib/repull/models/property_availability.rb +33 -7
  321. data/lib/repull/models/property_availability_coverage.rb +222 -0
  322. data/lib/repull/models/property_availability_day.rb +4 -4
  323. data/lib/repull/models/property_list_response.rb +1 -1
  324. data/lib/repull/models/{studio_error_error.rb → publish_section_error.rb} +56 -36
  325. data/lib/repull/models/quote.rb +240 -0
  326. data/lib/repull/models/quote_pricing.rb +218 -0
  327. data/lib/repull/models/reorder_airbnb_listing_photos200_response.rb +191 -0
  328. data/lib/repull/models/reorder_airbnb_listing_photos200_response_data.rb +172 -0
  329. data/lib/repull/models/reorder_airbnb_listing_photos_request.rb +185 -0
  330. data/lib/repull/models/reply_booking_review200_response.rb +1 -1
  331. data/lib/repull/models/reply_booking_review_request.rb +1 -1
  332. data/lib/repull/models/reply_to_review201_response.rb +165 -0
  333. data/lib/repull/models/reply_to_review_request.rb +165 -0
  334. data/lib/repull/models/repull_ping_event.rb +1 -1
  335. data/lib/repull/models/repull_ping_payload.rb +1 -1
  336. data/lib/repull/models/reservation.rb +24 -2
  337. data/lib/repull/models/{studio_deployment.rb → reservation_alteration_created_event.rb} +67 -57
  338. data/lib/repull/models/reservation_alteration_created_payload.rb +177 -0
  339. data/lib/repull/models/reservation_alteration_responded_event.rb +217 -0
  340. data/lib/repull/models/reservation_alteration_responded_payload.rb +175 -0
  341. data/lib/repull/models/reservation_cancelled_event.rb +1 -1
  342. data/lib/repull/models/reservation_cancelled_payload.rb +1 -1
  343. data/lib/repull/models/reservation_create_request.rb +403 -0
  344. data/lib/repull/models/{create_airbnb_alteration_request.rb → reservation_create_response.rb} +73 -35
  345. data/lib/repull/models/reservation_created_event.rb +1 -1
  346. data/lib/repull/models/reservation_created_payload.rb +1 -1
  347. data/lib/repull/models/reservation_financials.rb +36 -8
  348. data/lib/repull/models/reservation_guest_financials.rb +173 -0
  349. data/lib/repull/models/reservation_guest_input.rb +193 -0
  350. data/lib/repull/models/reservation_host_financials.rb +207 -0
  351. data/lib/repull/models/reservation_list_response.rb +1 -1
  352. data/lib/repull/models/reservation_message_received_event.rb +1 -1
  353. data/lib/repull/models/reservation_message_received_payload.rb +1 -1
  354. data/lib/repull/models/reservation_message_received_payload_from.rb +1 -1
  355. data/lib/repull/models/reservation_money_line.rb +216 -0
  356. data/lib/repull/models/reservation_occupancy.rb +1 -1
  357. data/lib/repull/models/reservation_primary_guest.rb +1 -1
  358. data/lib/repull/models/reservation_update_request.rb +255 -0
  359. data/lib/repull/models/reservation_update_response.rb +240 -0
  360. data/lib/repull/models/reservation_updated_event.rb +1 -1
  361. data/lib/repull/models/reservation_updated_payload.rb +1 -1
  362. data/lib/repull/models/reservation_webhook_object.rb +39 -6
  363. data/lib/repull/models/respond_airbnb_review_request.rb +1 -1
  364. data/lib/repull/models/review.rb +14 -3
  365. data/lib/repull/models/review_category.rb +1 -1
  366. data/lib/repull/models/review_created_event.rb +217 -0
  367. data/lib/repull/models/review_created_payload.rb +165 -0
  368. data/lib/repull/models/review_list_response.rb +1 -1
  369. data/lib/repull/models/review_responded_event.rb +217 -0
  370. data/lib/repull/models/review_responded_payload.rb +175 -0
  371. data/lib/repull/models/review_response.rb +1 -1
  372. data/lib/repull/models/review_webhook_object.rb +277 -0
  373. data/lib/repull/models/rotate_webhook_secret200_response.rb +1 -1
  374. data/lib/repull/models/select_connect_provider_request.rb +1 -1
  375. data/lib/repull/models/select_provider_response.rb +1 -1
  376. data/lib/repull/models/send_airbnb_message_request.rb +187 -0
  377. data/lib/repull/models/{sandbox_reset_result_deleted.rb → send_booking_message_request.rb} +53 -50
  378. data/lib/repull/models/send_message_request.rb +193 -0
  379. data/lib/repull/models/send_message_response.rb +241 -0
  380. data/lib/repull/models/set_airbnb_listing_cover_photo200_response.rb +191 -0
  381. data/lib/repull/models/set_airbnb_listing_cover_photo200_response_data.rb +171 -0
  382. data/lib/repull/models/set_airbnb_listing_cover_photo_request.rb +165 -0
  383. data/lib/repull/models/set_kv_request.rb +1 -1
  384. data/lib/repull/models/{booking_property_list_response.rb → submit_beds24_credentials200_response.rb} +19 -19
  385. data/lib/repull/models/submit_beds24_credentials_request.rb +177 -0
  386. data/lib/repull/models/submit_bookingsync_credentials_request.rb +177 -0
  387. data/lib/repull/models/submit_guesty_credentials_request.rb +177 -0
  388. data/lib/repull/models/submit_hospitable_credentials_request.rb +177 -0
  389. data/lib/repull/models/submit_hostaway_credentials_request.rb +177 -0
  390. data/lib/repull/models/submit_igms_credentials_request.rb +177 -0
  391. data/lib/repull/models/submit_lodgify_credentials_request.rb +177 -0
  392. data/lib/repull/models/submit_ownerrez_credentials_request.rb +177 -0
  393. data/lib/repull/models/submit_smoobu_credentials_request.rb +177 -0
  394. data/lib/repull/models/submit_vrbo_credentials_request.rb +177 -0
  395. data/lib/repull/models/sync_airbnb_transactions200_response.rb +191 -0
  396. data/lib/repull/models/sync_airbnb_transactions_request.rb +201 -0
  397. data/lib/repull/models/test_webhook_request.rb +1 -1
  398. data/lib/repull/models/{booking_conversation_list_response.rb → update_airbnb_booking_settings200_response.rb} +26 -20
  399. data/lib/repull/models/update_airbnb_booking_settings200_response_data.rb +205 -0
  400. data/lib/repull/models/update_airbnb_booking_settings_request.rb +202 -0
  401. data/lib/repull/models/update_airbnb_booking_settings_request_advance_notice.rb +183 -0
  402. data/lib/repull/models/update_airbnb_booking_settings_request_booking_window.rb +183 -0
  403. data/lib/repull/models/update_airbnb_booking_settings_request_cancellation.rb +201 -0
  404. data/lib/repull/models/update_airbnb_booking_settings_request_cancellation_non_refundable.rb +183 -0
  405. data/lib/repull/models/update_airbnb_booking_settings_request_check_in.rb +159 -0
  406. data/lib/repull/models/update_airbnb_booking_settings_request_check_out.rb +182 -0
  407. data/lib/repull/models/update_airbnb_booking_settings_request_instant_book.rb +203 -0
  408. data/lib/repull/models/update_airbnb_booking_settings_request_preparation_time.rb +182 -0
  409. data/lib/repull/models/update_airbnb_listing_amenities200_response.rb +191 -0
  410. data/lib/repull/models/update_airbnb_listing_amenities200_response_data.rb +158 -0
  411. data/lib/repull/models/update_airbnb_listing_amenities_request.rb +199 -0
  412. data/lib/repull/models/update_airbnb_listing_amenities_request_accessibility_amenities_inner.rb +246 -0
  413. data/lib/repull/models/update_airbnb_listing_amenities_request_amenities_inner.rb +218 -0
  414. data/lib/repull/models/update_airbnb_listing_permits200_response.rb +168 -0
  415. data/lib/repull/models/update_airbnb_listing_photo200_response.rb +194 -0
  416. data/lib/repull/models/update_airbnb_listing_photo_request.rb +242 -0
  417. data/lib/repull/models/update_airbnb_listing_room200_response.rb +194 -0
  418. data/lib/repull/models/update_airbnb_listing_room_request.rb +293 -0
  419. data/lib/repull/models/update_airbnb_listing_room_request_beds_inner.rb +209 -0
  420. data/lib/repull/models/{sandbox_fixture_ref.rb → update_airbnb_listing_room_request_room_amenities_inner.rb} +26 -37
  421. data/lib/repull/models/update_airbnb_listing_room_request_room_amenities_inner_value.rb +105 -0
  422. data/lib/repull/models/update_airbnb_listing_safety_disclosures200_response.rb +180 -0
  423. data/lib/repull/models/update_airbnb_message_request.rb +1 -1
  424. data/lib/repull/models/update_booking_charges_request.rb +1 -1
  425. data/lib/repull/models/update_listing_pricing_strategy200_response.rb +1 -1
  426. data/lib/repull/models/update_webhook_request.rb +1 -1
  427. data/lib/repull/models/upload_airbnb_listing_photos_request.rb +184 -0
  428. data/lib/repull/models/upload_airbnb_listing_photos_request_photos_inner.rb +305 -0
  429. data/lib/repull/models/upload_airbnb_listing_photos_request_photos_inner_listing_id.rb +105 -0
  430. data/lib/repull/models/vrbo_listing.rb +1 -1
  431. data/lib/repull/models/vrbo_reservation.rb +1 -1
  432. data/lib/repull/models/vrbo_reservation_list_response.rb +1 -1
  433. data/lib/repull/models/webhook_delivery.rb +1 -1
  434. data/lib/repull/models/webhook_delivery_detail.rb +1 -1
  435. data/lib/repull/models/webhook_delivery_list_response.rb +1 -1
  436. data/lib/repull/models/webhook_event.rb +12 -4
  437. data/lib/repull/models/webhook_event_catalog.rb +1 -1
  438. data/lib/repull/models/webhook_event_catalog_domains_inner.rb +1 -1
  439. data/lib/repull/models/webhook_event_catalog_entry.rb +1 -1
  440. data/lib/repull/models/webhook_event_type.rb +6 -2
  441. data/lib/repull/models/webhook_list_response.rb +1 -1
  442. data/lib/repull/models/webhook_subscription.rb +1 -1
  443. data/lib/repull/version.rb +2 -2
  444. data/lib/repull.rb +153 -16
  445. data/openapi/v1.json +12620 -5281
  446. data/scripts/check-spec-freshness.py +399 -0
  447. data/scripts/regen.sh +32 -3
  448. metadata +155 -19
  449. data/lib/repull/api/sandbox_api.rb +0 -136
  450. data/lib/repull/models/sandbox_seed_result.rb +0 -278
  451. data/lib/repull/models/studio_generation.rb +0 -215
  452. data/lib/repull/models/studio_project.rb +0 -241
  453. data/spec/api/ai_api_spec.rb +0 -47
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: repull
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.10
4
+ version: 0.2.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Nikolov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-07-30 00:00:00.000000000 Z
11
+ date: 2026-09-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: typhoeus
@@ -74,15 +74,16 @@ files:
74
74
  - lib/repull/api/connect_api.rb
75
75
  - lib/repull/api/conversations_api.rb
76
76
  - lib/repull/api/guests_api.rb
77
+ - lib/repull/api/health_api.rb
77
78
  - lib/repull/api/kv_api.rb
78
79
  - lib/repull/api/listings_api.rb
79
80
  - lib/repull/api/markets_api.rb
80
81
  - lib/repull/api/plumguide_api.rb
81
82
  - lib/repull/api/pricing_api.rb
82
83
  - lib/repull/api/properties_api.rb
84
+ - lib/repull/api/quotes_api.rb
83
85
  - lib/repull/api/reservations_api.rb
84
86
  - lib/repull/api/reviews_api.rb
85
- - lib/repull/api/sandbox_api.rb
86
87
  - lib/repull/api/schema_api.rb
87
88
  - lib/repull/api/system_api.rb
88
89
  - lib/repull/api/vrbo_api.rb
@@ -102,7 +103,9 @@ files:
102
103
  - lib/repull/models/ai_operation_failed_event.rb
103
104
  - lib/repull/models/ai_operation_failed_payload.rb
104
105
  - lib/repull/models/ai_operation_failed_payload_error.rb
106
+ - lib/repull/models/airbnb_account_freshness.rb
105
107
  - lib/repull/models/airbnb_alteration.rb
108
+ - lib/repull/models/airbnb_alteration_create_request.rb
106
109
  - lib/repull/models/airbnb_amenity.rb
107
110
  - lib/repull/models/airbnb_availability_write_request.rb
108
111
  - lib/repull/models/airbnb_calendar_operation.rb
@@ -112,17 +115,51 @@ files:
112
115
  - lib/repull/models/airbnb_connection_host.rb
113
116
  - lib/repull/models/airbnb_connection_response.rb
114
117
  - lib/repull/models/airbnb_connection_summary.rb
118
+ - lib/repull/models/airbnb_content_write_response.rb
115
119
  - lib/repull/models/airbnb_data_freshness.rb
120
+ - lib/repull/models/airbnb_description_write_request.rb
121
+ - lib/repull/models/airbnb_description_write_request_description.rb
116
122
  - lib/repull/models/airbnb_listing.rb
123
+ - lib/repull/models/airbnb_listing_action200_response.rb
124
+ - lib/repull/models/airbnb_listing_action200_response_one_of.rb
125
+ - lib/repull/models/airbnb_listing_action200_response_one_of1.rb
117
126
  - lib/repull/models/airbnb_listing_action_request.rb
127
+ - lib/repull/models/airbnb_listing_details_response.rb
128
+ - lib/repull/models/airbnb_listing_details_write_request.rb
129
+ - lib/repull/models/airbnb_listing_details_write_request_check_in_option.rb
130
+ - lib/repull/models/airbnb_listing_details_write_request_quiet_hours_inner.rb
131
+ - lib/repull/models/airbnb_listing_lifecycle_response.rb
118
132
  - lib/repull/models/airbnb_listing_list_response.rb
133
+ - lib/repull/models/airbnb_permits_response.rb
134
+ - lib/repull/models/airbnb_permits_response_cached_inner.rb
135
+ - lib/repull/models/airbnb_permits_write_request.rb
136
+ - lib/repull/models/airbnb_permits_write_request_permits_inner.rb
137
+ - lib/repull/models/airbnb_permits_write_request_permits_inner_answers_inner.rb
138
+ - lib/repull/models/airbnb_photo_position.rb
119
139
  - lib/repull/models/airbnb_pricing_write_request.rb
140
+ - lib/repull/models/airbnb_pricing_write_request_records_inner.rb
141
+ - lib/repull/models/airbnb_publish_result.rb
120
142
  - lib/repull/models/airbnb_reservation.rb
121
143
  - lib/repull/models/airbnb_reservation_list_response.rb
122
144
  - lib/repull/models/airbnb_review.rb
123
145
  - lib/repull/models/airbnb_review_list_response.rb
146
+ - lib/repull/models/airbnb_safety_disclosure.rb
147
+ - lib/repull/models/airbnb_safety_disclosures_response.rb
148
+ - lib/repull/models/airbnb_safety_disclosures_write_request.rb
124
149
  - lib/repull/models/airbnb_thread.rb
125
150
  - lib/repull/models/airbnb_thread_list_response.rb
151
+ - lib/repull/models/airbnb_transaction.rb
152
+ - lib/repull/models/airbnb_transaction_guest_breakdown.rb
153
+ - lib/repull/models/airbnb_transaction_host_breakdown.rb
154
+ - lib/repull/models/airbnb_transaction_payout.rb
155
+ - lib/repull/models/alteration_change.rb
156
+ - lib/repull/models/alteration_webhook_object.rb
157
+ - lib/repull/models/availability_batch_write_request.rb
158
+ - lib/repull/models/availability_write_request.rb
159
+ - lib/repull/models/availability_write_result.rb
160
+ - lib/repull/models/availability_write_result_synced.rb
161
+ - lib/repull/models/availability_write_settings.rb
162
+ - lib/repull/models/booking_availability_state_response.rb
126
163
  - lib/repull/models/booking_availability_update.rb
127
164
  - lib/repull/models/booking_availability_update_request.rb
128
165
  - lib/repull/models/booking_availability_update_request_property_id.rb
@@ -131,7 +168,6 @@ files:
131
168
  - lib/repull/models/booking_connect_room.rb
132
169
  - lib/repull/models/booking_connect_rooms_response.rb
133
170
  - lib/repull/models/booking_conversation.rb
134
- - lib/repull/models/booking_conversation_list_response.rb
135
171
  - lib/repull/models/booking_pricing_rate_update.rb
136
172
  - lib/repull/models/booking_pricing_rate_update_date_range.rb
137
173
  - lib/repull/models/booking_pricing_rate_update_restrictions.rb
@@ -139,8 +175,12 @@ files:
139
175
  - lib/repull/models/booking_pricing_update_request.rb
140
176
  - lib/repull/models/booking_pricing_update_response.rb
141
177
  - lib/repull/models/booking_property.rb
142
- - lib/repull/models/booking_property_list_response.rb
178
+ - lib/repull/models/booking_reservation.rb
179
+ - lib/repull/models/booking_reservation_room.rb
143
180
  - lib/repull/models/booking_room_mapping.rb
181
+ - lib/repull/models/booking_rooms_rates_response.rb
182
+ - lib/repull/models/booking_rooms_rates_response_rooms_inner.rb
183
+ - lib/repull/models/booking_rooms_rates_response_rooms_inner_rates_inner.rb
144
184
  - lib/repull/models/booking_setup_request.rb
145
185
  - lib/repull/models/booking_verify_hotel_request.rb
146
186
  - lib/repull/models/booking_verify_hotel_response.rb
@@ -159,6 +199,7 @@ files:
159
199
  - lib/repull/models/connect_provider_list_response.rb
160
200
  - lib/repull/models/connect_session.rb
161
201
  - lib/repull/models/connect_status.rb
202
+ - lib/repull/models/connect_status_accounts_inner.rb
162
203
  - lib/repull/models/connection.rb
163
204
  - lib/repull/models/connection_list_response.rb
164
205
  - lib/repull/models/conversation.rb
@@ -168,7 +209,7 @@ files:
168
209
  - lib/repull/models/conversation_host.rb
169
210
  - lib/repull/models/conversation_list_response.rb
170
211
  - lib/repull/models/conversation_message_attachment.rb
171
- - lib/repull/models/create_airbnb_alteration_request.rb
212
+ - lib/repull/models/create_airbnb_listing_room_request.rb
172
213
  - lib/repull/models/create_airbnb_offer_request.rb
173
214
  - lib/repull/models/create_billing_checkout_request.rb
174
215
  - lib/repull/models/create_booking_webhook_request.rb
@@ -183,11 +224,26 @@ files:
183
224
  - lib/repull/models/custom_schema_summary.rb
184
225
  - lib/repull/models/custom_schema_update.rb
185
226
  - lib/repull/models/delete_airbnb_listing_photo200_response.rb
227
+ - lib/repull/models/delete_airbnb_listing_room200_response.rb
228
+ - lib/repull/models/delete_connection200_response.rb
186
229
  - lib/repull/models/delete_kv200_response.rb
187
230
  - lib/repull/models/error.rb
188
231
  - lib/repull/models/error_error.rb
189
232
  - lib/repull/models/error_error_support.rb
190
233
  - lib/repull/models/get_airbnb_alteration200_response.rb
234
+ - lib/repull/models/get_airbnb_booking_settings200_response.rb
235
+ - lib/repull/models/get_airbnb_booking_settings200_response_data.rb
236
+ - lib/repull/models/get_airbnb_booking_settings200_response_data_advance_notice.rb
237
+ - lib/repull/models/get_airbnb_booking_settings200_response_data_booking_window.rb
238
+ - lib/repull/models/get_airbnb_booking_settings200_response_data_cancellation.rb
239
+ - lib/repull/models/get_airbnb_booking_settings200_response_data_cancellation_non_refundable.rb
240
+ - lib/repull/models/get_airbnb_booking_settings200_response_data_check_in.rb
241
+ - lib/repull/models/get_airbnb_booking_settings200_response_data_check_in_start.rb
242
+ - lib/repull/models/get_airbnb_booking_settings200_response_data_check_out.rb
243
+ - lib/repull/models/get_airbnb_booking_settings200_response_data_instant_book.rb
244
+ - lib/repull/models/get_airbnb_booking_settings200_response_data_preparation_time.rb
245
+ - lib/repull/models/get_airbnb_checkin_guide200_response.rb
246
+ - lib/repull/models/get_airbnb_listing_details200_response.rb
191
247
  - lib/repull/models/get_airbnb_listing_quality200_response.rb
192
248
  - lib/repull/models/get_airbnb_listing_settings200_response.rb
193
249
  - lib/repull/models/get_airbnb_thread200_response.rb
@@ -209,6 +265,9 @@ files:
209
265
  - lib/repull/models/get_usage_tier200_response_used.rb
210
266
  - lib/repull/models/guest.rb
211
267
  - lib/repull/models/guest_contact.rb
268
+ - lib/repull/models/guest_create_request.rb
269
+ - lib/repull/models/guest_create_response.rb
270
+ - lib/repull/models/guest_create_response_contacts_inner.rb
212
271
  - lib/repull/models/guest_flag.rb
213
272
  - lib/repull/models/guest_list_response.rb
214
273
  - lib/repull/models/guest_note.rb
@@ -217,7 +276,10 @@ files:
217
276
  - lib/repull/models/list_airbnb_alterations200_response.rb
218
277
  - lib/repull/models/list_airbnb_listing_amenities200_response.rb
219
278
  - lib/repull/models/list_airbnb_listing_amenities200_response_data.rb
279
+ - lib/repull/models/list_airbnb_listing_permits200_response.rb
280
+ - lib/repull/models/list_airbnb_listing_safety_disclosures200_response.rb
220
281
  - lib/repull/models/list_airbnb_transactions200_response.rb
282
+ - lib/repull/models/list_booking_reservations200_response.rb
221
283
  - lib/repull/models/list_kv200_response.rb
222
284
  - lib/repull/models/list_kv200_response_data_inner.rb
223
285
  - lib/repull/models/list_kv200_response_pagination.rb
@@ -236,6 +298,7 @@ files:
236
298
  - lib/repull/models/listing_content_update_request_address.rb
237
299
  - lib/repull/models/listing_content_update_request_amenities.rb
238
300
  - lib/repull/models/listing_content_update_request_amenities_one_of_inner.rb
301
+ - lib/repull/models/listing_content_update_request_details.rb
239
302
  - lib/repull/models/listing_content_update_request_occupancy.rb
240
303
  - lib/repull/models/listing_content_update_request_photos_inner.rb
241
304
  - lib/repull/models/listing_content_update_request_photos_inner_one_of.rb
@@ -252,6 +315,12 @@ files:
252
315
  - lib/repull/models/listing_generate_content_request.rb
253
316
  - lib/repull/models/listing_generate_content_response.rb
254
317
  - lib/repull/models/listing_list_response.rb
318
+ - lib/repull/models/listing_photo.rb
319
+ - lib/repull/models/listing_photo_delete_request.rb
320
+ - lib/repull/models/listing_photo_delete_response.rb
321
+ - lib/repull/models/listing_photo_upload_url_request.rb
322
+ - lib/repull/models/listing_photo_upload_url_response.rb
323
+ - lib/repull/models/listing_photos_response.rb
255
324
  - lib/repull/models/listing_pricing_apply_request.rb
256
325
  - lib/repull/models/listing_pricing_apply_response.rb
257
326
  - lib/repull/models/listing_pricing_history_entry.rb
@@ -264,15 +333,20 @@ files:
264
333
  - lib/repull/models/listing_pricing_strategy.rb
265
334
  - lib/repull/models/listing_pricing_strategy_input.rb
266
335
  - lib/repull/models/listing_publish_airbnb_request.rb
336
+ - lib/repull/models/listing_publish_airbnb_response.rb
267
337
  - lib/repull/models/listing_publish_response.rb
268
338
  - lib/repull/models/listing_publish_status_channel.rb
269
339
  - lib/repull/models/listing_publish_status_connection.rb
270
340
  - lib/repull/models/listing_publish_status_response.rb
341
+ - lib/repull/models/listing_pull_airbnb_request.rb
342
+ - lib/repull/models/listing_pull_response.rb
271
343
  - lib/repull/models/listing_quality_tier.rb
272
344
  - lib/repull/models/listing_segment.rb
273
345
  - lib/repull/models/listing_segment_recommendation.rb
274
346
  - lib/repull/models/listing_segments_response.rb
275
347
  - lib/repull/models/listing_segments_response_scope.rb
348
+ - lib/repull/models/listing_status_batch_request.rb
349
+ - lib/repull/models/listing_status_batch_response.rb
276
350
  - lib/repull/models/listing_updated_event.rb
277
351
  - lib/repull/models/listing_updated_payload.rb
278
352
  - lib/repull/models/map_airbnb_listing_request.rb
@@ -310,53 +384,116 @@ files:
310
384
  - lib/repull/models/plumguide_listing_list_response.rb
311
385
  - lib/repull/models/property.rb
312
386
  - lib/repull/models/property_availability.rb
387
+ - lib/repull/models/property_availability_coverage.rb
313
388
  - lib/repull/models/property_availability_day.rb
314
389
  - lib/repull/models/property_list_response.rb
390
+ - lib/repull/models/publish_section_error.rb
391
+ - lib/repull/models/quote.rb
392
+ - lib/repull/models/quote_pricing.rb
393
+ - lib/repull/models/reorder_airbnb_listing_photos200_response.rb
394
+ - lib/repull/models/reorder_airbnb_listing_photos200_response_data.rb
395
+ - lib/repull/models/reorder_airbnb_listing_photos_request.rb
315
396
  - lib/repull/models/reply_booking_review200_response.rb
316
397
  - lib/repull/models/reply_booking_review_request.rb
398
+ - lib/repull/models/reply_to_review201_response.rb
399
+ - lib/repull/models/reply_to_review_request.rb
317
400
  - lib/repull/models/repull_ping_event.rb
318
401
  - lib/repull/models/repull_ping_payload.rb
319
402
  - lib/repull/models/reservation.rb
403
+ - lib/repull/models/reservation_alteration_created_event.rb
404
+ - lib/repull/models/reservation_alteration_created_payload.rb
405
+ - lib/repull/models/reservation_alteration_responded_event.rb
406
+ - lib/repull/models/reservation_alteration_responded_payload.rb
320
407
  - lib/repull/models/reservation_cancelled_event.rb
321
408
  - lib/repull/models/reservation_cancelled_payload.rb
409
+ - lib/repull/models/reservation_create_request.rb
410
+ - lib/repull/models/reservation_create_response.rb
322
411
  - lib/repull/models/reservation_created_event.rb
323
412
  - lib/repull/models/reservation_created_payload.rb
324
413
  - lib/repull/models/reservation_financials.rb
414
+ - lib/repull/models/reservation_guest_financials.rb
415
+ - lib/repull/models/reservation_guest_input.rb
416
+ - lib/repull/models/reservation_host_financials.rb
325
417
  - lib/repull/models/reservation_list_response.rb
326
418
  - lib/repull/models/reservation_message_received_event.rb
327
419
  - lib/repull/models/reservation_message_received_payload.rb
328
420
  - lib/repull/models/reservation_message_received_payload_from.rb
421
+ - lib/repull/models/reservation_money_line.rb
329
422
  - lib/repull/models/reservation_occupancy.rb
330
423
  - lib/repull/models/reservation_primary_guest.rb
424
+ - lib/repull/models/reservation_update_request.rb
425
+ - lib/repull/models/reservation_update_response.rb
331
426
  - lib/repull/models/reservation_updated_event.rb
332
427
  - lib/repull/models/reservation_updated_payload.rb
333
428
  - lib/repull/models/reservation_webhook_object.rb
334
429
  - lib/repull/models/respond_airbnb_review_request.rb
335
430
  - lib/repull/models/review.rb
336
431
  - lib/repull/models/review_category.rb
432
+ - lib/repull/models/review_created_event.rb
433
+ - lib/repull/models/review_created_payload.rb
337
434
  - lib/repull/models/review_list_response.rb
435
+ - lib/repull/models/review_responded_event.rb
436
+ - lib/repull/models/review_responded_payload.rb
338
437
  - lib/repull/models/review_response.rb
438
+ - lib/repull/models/review_webhook_object.rb
339
439
  - lib/repull/models/rotate_webhook_secret200_response.rb
340
- - lib/repull/models/sandbox_fixture_ref.rb
341
- - lib/repull/models/sandbox_reset_result.rb
342
- - lib/repull/models/sandbox_reset_result_deleted.rb
343
- - lib/repull/models/sandbox_seed_result.rb
344
440
  - lib/repull/models/select_connect_provider_request.rb
345
441
  - lib/repull/models/select_provider_response.rb
442
+ - lib/repull/models/send_airbnb_message_request.rb
443
+ - lib/repull/models/send_booking_message_request.rb
444
+ - lib/repull/models/send_message_request.rb
445
+ - lib/repull/models/send_message_response.rb
446
+ - lib/repull/models/set_airbnb_listing_cover_photo200_response.rb
447
+ - lib/repull/models/set_airbnb_listing_cover_photo200_response_data.rb
448
+ - lib/repull/models/set_airbnb_listing_cover_photo_request.rb
346
449
  - lib/repull/models/set_kv_request.rb
347
- - lib/repull/models/studio_deployment.rb
348
- - lib/repull/models/studio_error.rb
349
- - lib/repull/models/studio_error_error.rb
350
- - lib/repull/models/studio_file.rb
351
- - lib/repull/models/studio_generation.rb
352
- - lib/repull/models/studio_project.rb
450
+ - lib/repull/models/submit_beds24_credentials200_response.rb
451
+ - lib/repull/models/submit_beds24_credentials_request.rb
452
+ - lib/repull/models/submit_bookingsync_credentials_request.rb
453
+ - lib/repull/models/submit_guesty_credentials_request.rb
454
+ - lib/repull/models/submit_hospitable_credentials_request.rb
455
+ - lib/repull/models/submit_hostaway_credentials_request.rb
456
+ - lib/repull/models/submit_igms_credentials_request.rb
457
+ - lib/repull/models/submit_lodgify_credentials_request.rb
458
+ - lib/repull/models/submit_ownerrez_credentials_request.rb
459
+ - lib/repull/models/submit_smoobu_credentials_request.rb
460
+ - lib/repull/models/submit_vrbo_credentials_request.rb
461
+ - lib/repull/models/sync_airbnb_transactions200_response.rb
462
+ - lib/repull/models/sync_airbnb_transactions_request.rb
353
463
  - lib/repull/models/test_webhook_request.rb
464
+ - lib/repull/models/update_airbnb_booking_settings200_response.rb
465
+ - lib/repull/models/update_airbnb_booking_settings200_response_data.rb
466
+ - lib/repull/models/update_airbnb_booking_settings_request.rb
467
+ - lib/repull/models/update_airbnb_booking_settings_request_advance_notice.rb
468
+ - lib/repull/models/update_airbnb_booking_settings_request_booking_window.rb
469
+ - lib/repull/models/update_airbnb_booking_settings_request_cancellation.rb
470
+ - lib/repull/models/update_airbnb_booking_settings_request_cancellation_non_refundable.rb
471
+ - lib/repull/models/update_airbnb_booking_settings_request_check_in.rb
472
+ - lib/repull/models/update_airbnb_booking_settings_request_check_out.rb
473
+ - lib/repull/models/update_airbnb_booking_settings_request_instant_book.rb
474
+ - lib/repull/models/update_airbnb_booking_settings_request_preparation_time.rb
475
+ - lib/repull/models/update_airbnb_listing_amenities200_response.rb
476
+ - lib/repull/models/update_airbnb_listing_amenities200_response_data.rb
477
+ - lib/repull/models/update_airbnb_listing_amenities_request.rb
478
+ - lib/repull/models/update_airbnb_listing_amenities_request_accessibility_amenities_inner.rb
479
+ - lib/repull/models/update_airbnb_listing_amenities_request_amenities_inner.rb
480
+ - lib/repull/models/update_airbnb_listing_permits200_response.rb
481
+ - lib/repull/models/update_airbnb_listing_photo200_response.rb
482
+ - lib/repull/models/update_airbnb_listing_photo_request.rb
483
+ - lib/repull/models/update_airbnb_listing_room200_response.rb
484
+ - lib/repull/models/update_airbnb_listing_room_request.rb
485
+ - lib/repull/models/update_airbnb_listing_room_request_beds_inner.rb
486
+ - lib/repull/models/update_airbnb_listing_room_request_room_amenities_inner.rb
487
+ - lib/repull/models/update_airbnb_listing_room_request_room_amenities_inner_value.rb
488
+ - lib/repull/models/update_airbnb_listing_safety_disclosures200_response.rb
354
489
  - lib/repull/models/update_airbnb_message_request.rb
355
490
  - lib/repull/models/update_booking_charges_request.rb
356
491
  - lib/repull/models/update_listing_pricing_strategy200_response.rb
357
492
  - lib/repull/models/update_webhook_request.rb
493
+ - lib/repull/models/upload_airbnb_listing_photos_request.rb
494
+ - lib/repull/models/upload_airbnb_listing_photos_request_photos_inner.rb
495
+ - lib/repull/models/upload_airbnb_listing_photos_request_photos_inner_listing_id.rb
358
496
  - lib/repull/models/vrbo_listing.rb
359
- - lib/repull/models/vrbo_listing_list_response.rb
360
497
  - lib/repull/models/vrbo_reservation.rb
361
498
  - lib/repull/models/vrbo_reservation_list_response.rb
362
499
  - lib/repull/models/webhook_delivery.rb
@@ -372,8 +509,8 @@ files:
372
509
  - lib/repull/version.rb
373
510
  - openapi/v1.json
374
511
  - repull.gemspec
512
+ - scripts/check-spec-freshness.py
375
513
  - scripts/regen.sh
376
- - spec/api/ai_api_spec.rb
377
514
  - spec/api/airbnb_api_spec.rb
378
515
  - spec/api/availability_api_spec.rb
379
516
  - spec/api/billing_api_spec.rb
@@ -429,7 +566,6 @@ signing_key:
429
566
  specification_version: 4
430
567
  summary: Ruby SDK for Repull
431
568
  test_files:
432
- - spec/api/ai_api_spec.rb
433
569
  - spec/api/airbnb_api_spec.rb
434
570
  - spec/api/availability_api_spec.rb
435
571
  - spec/api/billing_api_spec.rb
@@ -1,136 +0,0 @@
1
- =begin
2
- #Repull API
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`.
5
-
6
- The version of the OpenAPI document: 1.0.0
7
- Contact: ivan@vanio.ai
8
- Generated by: https://openapi-generator.tech
9
- Generator version: 7.22.0
10
-
11
- =end
12
-
13
- require 'cgi'
14
-
15
- module Repull
16
- class SandboxApi
17
- attr_accessor :api_client
18
-
19
- def initialize(api_client = ApiClient.default)
20
- @api_client = api_client
21
- end
22
- # Reset sandbox fixtures
23
- # Clear the authenticated test customer's sandbox fixtures. **Requires a test key (`sk_test_*`)** — live or legacy keys are rejected with 403. Deletes ONLY the customer's rows in the isolated sandbox data space — it can never touch real inventory (`listings`, `reservations`, connections). Idempotent: resetting an empty sandbox returns zero counts (still 200). Returns per-resource deletion counts.
24
- # @param [Hash] opts the optional parameters
25
- # @return [SandboxResetResult]
26
- def reset_sandbox(opts = {})
27
- data, _status_code, _headers = reset_sandbox_with_http_info(opts)
28
- data
29
- end
30
-
31
- # Reset sandbox fixtures
32
- # Clear the authenticated test customer's sandbox fixtures. **Requires a test key (`sk_test_*`)** — live or legacy keys are rejected with 403. Deletes ONLY the customer's rows in the isolated sandbox data space — it can never touch real inventory (`listings`, `reservations`, connections). Idempotent: resetting an empty sandbox returns zero counts (still 200). Returns per-resource deletion counts.
33
- # @param [Hash] opts the optional parameters
34
- # @return [Array<(SandboxResetResult, Integer, Hash)>] SandboxResetResult data, response status code and response headers
35
- def reset_sandbox_with_http_info(opts = {})
36
- if @api_client.config.debugging
37
- @api_client.config.logger.debug 'Calling API: SandboxApi.reset_sandbox ...'
38
- end
39
- # resource path
40
- local_var_path = '/v1/sandbox/reset'
41
-
42
- # query parameters
43
- query_params = opts[:query_params] || {}
44
-
45
- # header parameters
46
- header_params = opts[:header_params] || {}
47
- # HTTP header 'Accept' (if needed)
48
- header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
49
-
50
- # form parameters
51
- form_params = opts[:form_params] || {}
52
-
53
- # http body (model)
54
- post_body = opts[:debug_body]
55
-
56
- # return_type
57
- return_type = opts[:debug_return_type] || 'SandboxResetResult'
58
-
59
- # auth_names
60
- auth_names = opts[:debug_auth_names] || ['bearerAuth']
61
-
62
- new_options = opts.merge(
63
- :operation => :"SandboxApi.reset_sandbox",
64
- :header_params => header_params,
65
- :query_params => query_params,
66
- :form_params => form_params,
67
- :body => post_body,
68
- :auth_names => auth_names,
69
- :return_type => return_type
70
- )
71
-
72
- data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
73
- if @api_client.config.debugging
74
- @api_client.config.logger.debug "API called: SandboxApi#reset_sandbox\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
75
- end
76
- return data, status_code, headers
77
- end
78
-
79
- # Seed sandbox fixtures
80
- # Provision a deterministic set of test fixtures for contract testing WITHOUT live provider accounts. **Requires a test key (`sk_test_*`)** — live or legacy keys are rejected with 403. Seeds, scoped to the authenticated test customer: 3 sample listings, 5 reservations across the lifecycle (created / modified / cancelled / date-changed / pending), and 2 fake connected provider accounts (Airbnb + Booking.com) so the pairing + connection-status flows are testable without real OAuth. Idempotent — re-seeding upserts the same rows and returns the same ids. The seeded rows are visible ONLY under a test key, via the normal read endpoints (`GET /v1/listings`, `/v1/reservations`, `/v1/connect`, `/v1/channels/airbnb/listings`, `/v1/channels/airbnb/connection`). They live in a data space fully isolated from live inventory.
81
- # @param [Hash] opts the optional parameters
82
- # @return [SandboxSeedResult]
83
- def seed_sandbox(opts = {})
84
- data, _status_code, _headers = seed_sandbox_with_http_info(opts)
85
- data
86
- end
87
-
88
- # Seed sandbox fixtures
89
- # Provision a deterministic set of test fixtures for contract testing WITHOUT live provider accounts. **Requires a test key (&#x60;sk_test_*&#x60;)** — live or legacy keys are rejected with 403. Seeds, scoped to the authenticated test customer: 3 sample listings, 5 reservations across the lifecycle (created / modified / cancelled / date-changed / pending), and 2 fake connected provider accounts (Airbnb + Booking.com) so the pairing + connection-status flows are testable without real OAuth. Idempotent — re-seeding upserts the same rows and returns the same ids. The seeded rows are visible ONLY under a test key, via the normal read endpoints (&#x60;GET /v1/listings&#x60;, &#x60;/v1/reservations&#x60;, &#x60;/v1/connect&#x60;, &#x60;/v1/channels/airbnb/listings&#x60;, &#x60;/v1/channels/airbnb/connection&#x60;). They live in a data space fully isolated from live inventory.
90
- # @param [Hash] opts the optional parameters
91
- # @return [Array<(SandboxSeedResult, Integer, Hash)>] SandboxSeedResult data, response status code and response headers
92
- def seed_sandbox_with_http_info(opts = {})
93
- if @api_client.config.debugging
94
- @api_client.config.logger.debug 'Calling API: SandboxApi.seed_sandbox ...'
95
- end
96
- # resource path
97
- local_var_path = '/v1/sandbox/seed'
98
-
99
- # query parameters
100
- query_params = opts[:query_params] || {}
101
-
102
- # header parameters
103
- header_params = opts[:header_params] || {}
104
- # HTTP header 'Accept' (if needed)
105
- header_params['Accept'] = @api_client.select_header_accept(['application/json']) unless header_params['Accept']
106
-
107
- # form parameters
108
- form_params = opts[:form_params] || {}
109
-
110
- # http body (model)
111
- post_body = opts[:debug_body]
112
-
113
- # return_type
114
- return_type = opts[:debug_return_type] || 'SandboxSeedResult'
115
-
116
- # auth_names
117
- auth_names = opts[:debug_auth_names] || ['bearerAuth']
118
-
119
- new_options = opts.merge(
120
- :operation => :"SandboxApi.seed_sandbox",
121
- :header_params => header_params,
122
- :query_params => query_params,
123
- :form_params => form_params,
124
- :body => post_body,
125
- :auth_names => auth_names,
126
- :return_type => return_type
127
- )
128
-
129
- data, status_code, headers = @api_client.call_api(:POST, local_var_path, new_options)
130
- if @api_client.config.debugging
131
- @api_client.config.logger.debug "API called: SandboxApi#seed_sandbox\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
132
- end
133
- return data, status_code, headers
134
- end
135
- end
136
- end