Module: Repull
- Defined in:
- lib/repull/version.rb,
lib/repull.rb,
lib/repull/api_error.rb,
lib/repull/api/ai_api.rb,
lib/repull/api_client.rb,
lib/repull/api/vrbo_api.rb,
lib/repull/models/error.rb,
lib/repull/models/guest.rb,
lib/repull/api/atlas_api.rb,
lib/repull/configuration.rb,
lib/repull/models/review.rb,
lib/repull/api/airbnb_api.rb,
lib/repull/api/guests_api.rb,
lib/repull/api/schema_api.rb,
lib/repull/api/system_api.rb,
lib/repull/api_model_base.rb,
lib/repull/models/listing.rb,
lib/repull/models/message.rb,
lib/repull/api/billing_api.rb,
lib/repull/api/connect_api.rb,
lib/repull/api/markets_api.rb,
lib/repull/api/pricing_api.rb,
lib/repull/api/reviews_api.rb,
lib/repull/models/property.rb,
lib/repull/api/listings_api.rb,
lib/repull/api/webhooks_api.rb,
lib/repull/api/plumguide_api.rb,
lib/repull/models/connection.rb,
lib/repull/models/guest_flag.rb,
lib/repull/models/guest_note.rb,
lib/repull/models/pagination.rb,
lib/repull/api/properties_api.rb,
lib/repull/models/error_error.rb,
lib/repull/models/reservation.rb,
lib/repull/api/booking_com_api.rb,
lib/repull/models/ai_operation.rb,
lib/repull/models/calendar_day.rb,
lib/repull/models/connect_host.rb,
lib/repull/models/conversation.rb,
lib/repull/models/listing_comp.rb,
lib/repull/models/market_event.rb,
lib/repull/models/vrbo_listing.rb,
lib/repull/api/availability_api.rb,
lib/repull/api/reservations_api.rb,
lib/repull/models/airbnb_review.rb,
lib/repull/models/airbnb_thread.rb,
lib/repull/models/custom_schema.rb,
lib/repull/models/guest_contact.rb,
lib/repull/models/guest_profile.rb,
lib/repull/api/conversations_api.rb,
lib/repull/models/airbnb_listing.rb,
lib/repull/models/connect_status.rb,
lib/repull/models/market_summary.rb,
lib/repull/models/connect_session.rb,
lib/repull/models/listing_address.rb,
lib/repull/models/listing_channel.rb,
lib/repull/models/listing_content.rb,
lib/repull/models/listing_segment.rb,
lib/repull/models/market_top_comp.rb,
lib/repull/models/review_category.rb,
lib/repull/models/review_response.rb,
lib/repull/models/booking_property.rb,
lib/repull/models/connect_provider.rb,
lib/repull/models/vrbo_reservation.rb,
lib/repull/models/webhook_delivery.rb,
lib/repull/models/bulk_pricing_item.rb,
lib/repull/models/calendar_response.rb,
lib/repull/models/conversation_host.rb,
lib/repull/models/market_my_listing.rb,
lib/repull/models/plumguide_listing.rb,
lib/repull/models/airbnb_reservation.rb,
lib/repull/models/conversation_guest.rb,
lib/repull/models/conversation_detail.rb,
lib/repull/models/error_error_support.rb,
lib/repull/models/guest_list_response.rb,
lib/repull/models/market_browse_entry.rb,
lib/repull/models/market_calendar_day.rb,
lib/repull/models/booking_connect_room.rb,
lib/repull/models/booking_conversation.rb,
lib/repull/models/booking_room_mapping.rb,
lib/repull/models/bulk_pricing_failure.rb,
lib/repull/models/bulk_pricing_request.rb,
lib/repull/models/custom_schema_create.rb,
lib/repull/models/custom_schema_update.rb,
lib/repull/models/listing_comp_nightly.rb,
lib/repull/models/listing_comp_ratings.rb,
lib/repull/models/listing_quality_tier.rb,
lib/repull/models/review_list_response.rb,
lib/repull/models/test_webhook_request.rb,
lib/repull/models/webhook_subscription.rb,
lib/repull/models/bulk_pricing_response.rb,
lib/repull/models/custom_schema_summary.rb,
lib/repull/models/listing_list_response.rb,
lib/repull/models/message_list_response.rb,
lib/repull/models/webhook_event_catalog.rb,
lib/repull/models/webhook_list_response.rb,
lib/repull/models/create_webhook_request.rb,
lib/repull/models/get_health200_response.rb,
lib/repull/models/listing_comps_response.rb,
lib/repull/models/listing_create_request.rb,
lib/repull/models/market_browse_category.rb,
lib/repull/models/market_browse_featured.rb,
lib/repull/models/market_browse_response.rb,
lib/repull/models/market_detail_response.rb,
lib/repull/models/property_list_response.rb,
lib/repull/models/update_webhook_request.rb,
lib/repull/models/listing_create_response.rb,
lib/repull/models/webhook_delivery_detail.rb,
lib/repull/models/booking_pricing_response.rb,
lib/repull/models/connection_list_response.rb,
lib/repull/models/listing_pricing_response.rb,
lib/repull/models/listing_pricing_strategy.rb,
lib/repull/models/listing_publish_response.rb,
lib/repull/models/market_calendar_response.rb,
lib/repull/models/select_provider_response.rb,
lib/repull/models/create_connection_request.rb,
lib/repull/models/listing_segments_response.rb,
lib/repull/models/markets_overview_response.rb,
lib/repull/models/reservation_list_response.rb,
lib/repull/models/conversation_guest_contact.rb,
lib/repull/models/conversation_list_response.rb,
lib/repull/models/create_reservation_request.rb,
lib/repull/models/guest_reservations_summary.rb,
lib/repull/models/update_reservation_request.rb,
lib/repull/models/vrbo_listing_list_response.rb,
lib/repull/models/airbnb_review_list_response.rb,
lib/repull/models/airbnb_thread_list_response.rb,
lib/repull/models/booking_pricing_rate_update.rb,
lib/repull/models/custom_schema_list_response.rb,
lib/repull/models/update_availability_request.rb,
lib/repull/models/airbnb_listing_list_response.rb,
lib/repull/models/booking_verify_hotel_request.rb,
lib/repull/models/booking_verify_hotel_response.rb,
lib/repull/models/custom_schema_create_response.rb,
lib/repull/models/custom_schema_delete_response.rb,
lib/repull/models/listing_pricing_apply_request.rb,
lib/repull/models/listing_pricing_history_entry.rb,
lib/repull/models/booking_connect_listing_option.rb,
lib/repull/models/booking_connect_rooms_response.rb,
lib/repull/models/booking_pricing_update_request.rb,
lib/repull/models/booking_property_list_response.rb,
lib/repull/models/connect_provider_list_response.rb,
lib/repull/models/create_connect_session_request.rb,
lib/repull/models/listing_pricing_apply_response.rb,
lib/repull/models/listing_pricing_recommendation.rb,
lib/repull/models/listing_pricing_strategy_input.rb,
lib/repull/models/listing_publish_airbnb_request.rb,
lib/repull/models/listing_publish_status_channel.rb,
lib/repull/models/listing_segment_recommendation.rb,
lib/repull/models/vrbo_reservation_list_response.rb,
lib/repull/models/webhook_delivery_list_response.rb,
lib/repull/models/booking_pricing_update_response.rb,
lib/repull/models/conversation_message_attachment.rb,
lib/repull/models/create_ai_operation200_response.rb,
lib/repull/models/create_billing_checkout_request.rb,
lib/repull/models/listing_publish_status_response.rb,
lib/repull/models/listing_segments_response_scope.rb,
lib/repull/models/plumguide_listing_list_response.rb,
lib/repull/models/select_connect_provider_request.rb,
lib/repull/models/airbnb_reservation_list_response.rb,
lib/repull/models/listing_generate_content_request.rb,
lib/repull/models/listing_pricing_history_response.rb,
lib/repull/models/listing_pricing_response_listing.rb,
lib/repull/models/market_calendar_day_events_inner.rb,
lib/repull/models/market_detail_response_top_comps.rb,
lib/repull/models/markets_overview_response_browse.rb,
lib/repull/models/markets_overview_response_totals.rb,
lib/repull/models/listing_generate_content_response.rb,
lib/repull/models/map_connect_booking_rooms_request.rb,
lib/repull/models/rotate_webhook_secret200_response.rb,
lib/repull/models/booking_conversation_list_response.rb,
lib/repull/models/map_connect_booking_rooms_response.rb,
lib/repull/models/listing_pricing_response_date_range.rb,
lib/repull/models/webhook_event_catalog_domains_inner.rb,
lib/repull/models/listing_pricing_response_comp_summary.rb,
lib/repull/models/booking_pricing_rate_update_date_range.rb,
lib/repull/models/markets_overview_response_subscriptions.rb,
lib/repull/models/booking_pricing_rate_update_restrictions.rb,
lib/repull/models/market_detail_response_supply_trend_inner.rb,
lib/repull/models/update_listing_pricing_strategy200_response.rb,
lib/repull/models/market_detail_response_property_type_mix_inner.rb,
lib/repull/models/market_detail_response_price_distribution_inner.rb,
lib/repull/models/webhook_event_catalog_domains_inner_events_inner.rb
Overview
#Repull API
#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 `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 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`, `pro`, `enterprise`) are enforced separately and also surface as 429s; they include `tier`, `scope`, and `resets_at` fields.
The version of the OpenAPI document: 1.0.0 Contact: ivan@vanio.ai Generated by: openapi-generator.tech Generator version: 7.22.0
Defined Under Namespace
Classes: AIApi, AIOperation, AirbnbApi, AirbnbListing, AirbnbListingListResponse, AirbnbReservation, AirbnbReservationListResponse, AirbnbReview, AirbnbReviewListResponse, AirbnbThread, AirbnbThreadListResponse, ApiClient, ApiError, ApiModelBase, AtlasApi, AvailabilityApi, BillingApi, BookingComApi, BookingConnectListingOption, BookingConnectRoom, BookingConnectRoomsResponse, BookingConversation, BookingConversationListResponse, BookingPricingRateUpdate, BookingPricingRateUpdateDateRange, BookingPricingRateUpdateRestrictions, BookingPricingResponse, BookingPricingUpdateRequest, BookingPricingUpdateResponse, BookingProperty, BookingPropertyListResponse, BookingRoomMapping, BookingVerifyHotelRequest, BookingVerifyHotelResponse, BulkPricingFailure, BulkPricingItem, BulkPricingRequest, BulkPricingResponse, CalendarDay, CalendarResponse, Configuration, ConnectApi, ConnectHost, ConnectProvider, ConnectProviderListResponse, ConnectSession, ConnectStatus, Connection, ConnectionListResponse, Conversation, ConversationDetail, ConversationGuest, ConversationGuestContact, ConversationHost, ConversationListResponse, ConversationMessageAttachment, ConversationsApi, CreateAiOperation200Response, CreateBillingCheckoutRequest, CreateConnectSessionRequest, CreateConnectionRequest, CreateReservationRequest, CreateWebhookRequest, CustomSchema, CustomSchemaCreate, CustomSchemaCreateResponse, CustomSchemaDeleteResponse, CustomSchemaListResponse, CustomSchemaSummary, CustomSchemaUpdate, Error, ErrorError, ErrorErrorSupport, GetHealth200Response, Guest, GuestContact, GuestFlag, GuestListResponse, GuestNote, GuestProfile, GuestReservationsSummary, GuestsApi, Listing, ListingAddress, ListingChannel, ListingComp, ListingCompNightly, ListingCompRatings, ListingCompsResponse, ListingContent, ListingCreateRequest, ListingCreateResponse, ListingGenerateContentRequest, ListingGenerateContentResponse, ListingListResponse, ListingPricingApplyRequest, ListingPricingApplyResponse, ListingPricingHistoryEntry, ListingPricingHistoryResponse, ListingPricingRecommendation, ListingPricingResponse, ListingPricingResponseCompSummary, ListingPricingResponseDateRange, ListingPricingResponseListing, ListingPricingStrategy, ListingPricingStrategyInput, ListingPublishAirbnbRequest, ListingPublishResponse, ListingPublishStatusChannel, ListingPublishStatusResponse, ListingQualityTier, ListingSegment, ListingSegmentRecommendation, ListingSegmentsResponse, ListingSegmentsResponseScope, ListingsApi, MapConnectBookingRoomsRequest, MapConnectBookingRoomsResponse, MarketBrowseCategory, MarketBrowseEntry, MarketBrowseFeatured, MarketBrowseResponse, MarketCalendarDay, MarketCalendarDayEventsInner, MarketCalendarResponse, MarketDetailResponse, MarketDetailResponsePriceDistributionInner, MarketDetailResponsePropertyTypeMixInner, MarketDetailResponseSupplyTrendInner, MarketDetailResponseTopComps, MarketEvent, MarketMyListing, MarketSummary, MarketTopComp, MarketsApi, MarketsOverviewResponse, MarketsOverviewResponseBrowse, MarketsOverviewResponseSubscriptions, MarketsOverviewResponseTotals, Message, MessageListResponse, Pagination, PlumguideApi, PlumguideListing, PlumguideListingListResponse, PricingApi, PropertiesApi, Property, PropertyListResponse, Reservation, ReservationListResponse, ReservationsApi, Review, ReviewCategory, ReviewListResponse, ReviewResponse, ReviewsApi, RotateWebhookSecret200Response, SchemaApi, SelectConnectProviderRequest, SelectProviderResponse, SystemApi, TestWebhookRequest, UpdateAvailabilityRequest, UpdateListingPricingStrategy200Response, UpdateReservationRequest, UpdateWebhookRequest, VRBOApi, VrboListing, VrboListingListResponse, VrboReservation, VrboReservationListResponse, WebhookDelivery, WebhookDeliveryDetail, WebhookDeliveryListResponse, WebhookEventCatalog, WebhookEventCatalogDomainsInner, WebhookEventCatalogDomainsInnerEventsInner, WebhookListResponse, WebhookSubscription, WebhooksApi
Constant Summary collapse
- VERSION =
'0.2.0'
Class Method Summary collapse
-
.configure ⇒ Object
Customize default settings for the SDK using block.
Class Method Details
.configure ⇒ Object
Customize default settings for the SDK using block.
Repull.configure do |config|
config.username = "xxx"
config.password = "xxx"
end
If no block given, return the default Configuration object.
209 210 211 212 213 214 215 |
# File 'lib/repull.rb', line 209 def configure if block_given? yield(Configuration.default) else Configuration.default end end |